【问题标题】:Change of font in Vue-Material doesn't workVue-Material 中的字体更改不起作用
【发布时间】:2018-08-13 09:33:25
【问题描述】:

下面是我的App.vue 文件代码,我遇到了更改 md-tabs 中字体的问题,组件来自https://vuematerial.io/components/tabs。 CSS中的行:

background: #42A5F5;

有效,但这不起作用

color: #E3F2FD;

App.vue

<template>
      <div id="app">

        <md-tabs md-sync-route>
          <md-tab id="tab-home" md-label="Home" to="/"></md-tab>
          <md-tab id="tab-settings" md-label="Settings" to="/Settings"></md-tab>

        </md-tabs>

        <router-view></router-view>
      </div>
    </template>

    <script>
      export default {
        name: 'App'
      }
    </script>

    <style lang="scss" scoped>
      #app {
        font-family: 'Avenir', Helvetica, Arial, sans-serif;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
        text-align: center;
        color: #E3F2FD;
      }

      .md-tabs {
        background: #42A5F5;
        color: #E3F2FD;
      }

    </style>

【问题讨论】:

  • 尝试从样式中删除scoped
  • 两个都试过了,不行

标签: css vue.js vuejs2 components vue-material


【解决方案1】:

这是CSS Specificity的问题。

查看 DOM:

<div data-v-7ba5bd90 id="app">
  <div data-v-7ba5bd90 class="md-tabs md-alignment-left md-theme-default">
    <div class="md-tabs-navigation md-elevation-0">
      <button type="button" class="md-button md-theme-default md-active">
        <div class="md-ripple">
          <div class="md-button-content">Home</div>
        </div>
      </button>
      ...

您的.md-tabs { color: #E3F2FD; } 样式正在应用于&lt;div data-v-7ba5bd90 class="md-tabs md-alignment-left md-theme-default"&gt;(第2 行)。

button(第4行)的样式更具体,因此在&lt;div class="md-button-content"&gt;Home&lt;/div&gt;(第6行)中占主导地位。

关于background.md-tabs { background: #42A5F5; } 也是如此,但它似乎不会影响您,因为实际应用于button 的颜色是transparent,在.md-button 中声明。所以按钮是透明的。实际上有颜色的是它的父级div

解决办法:

即使你做了一个.md-button-content { color: #E3F2FD },它也不会起作用,因为 Vue 实际上会声明.md-button-content[data-v-12345] { color: #E3F2FD },而内部的&lt;div class="md-button-content"&gt;Home&lt;/div&gt; 不会得到这样的属性。

您唯一的解决方案是声明一个 not-scoped &lt;style&gt; 标记,并将其放在那里:

<style lang="scss" scoped>
...
</style>

<style>
    .md-button-content {
       color: #E3F2FD;
    }
</style>

演示:https://codesandbox.io/s/4q8jzq9mzx?module=%2Fsrc%2FApp.vue

【讨论】:

    【解决方案2】:

    组件具有独立的作用域,因此例如应用 css 将不适用于组件。

    您应该考虑在组件中应用 css 或定义一个全局 css 文件并包含。

    【讨论】:

    • 我找到了 md-tabs 的源文件并尝试更改它,但没有任何反应...我什至删除了其中的整个代码并保存但它仍然在浏览器本地工作:8080
    猜你喜欢
    • 2012-07-31
    • 1970-01-01
    • 2019-04-11
    • 2018-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-02
    • 2010-10-31
    相关资源
    最近更新 更多