如何覆盖 Vue 组件中的作用域样式?

2024-02-14

让我们保存一下我有一个.Vue我从 Github 上的某个地方获取的组件。我们将其称为 CompB,并为蓝色标头添加一个 CSS 规则集:

CompB.Vue(我不拥有的依赖项,可能是从 Github 中提取的)

<template>
  ...
</template>

<script>
  ...
</script>

<style lang="scss" scoped>
  .compb-header {
    color: blue;
  }
</style>

我计划将 CompB 嵌套到我自己的项目 CompANY 中。现在我可以选择什么来覆盖作用域规则?


经过一番尝试后,我认为我找到了一个很好的方法。

  1. 全局覆盖

    如果我想在所有情况下覆盖 CompB 的规则,我可以添加一个更具体的规则集,如下所示:#app .compb-header { .. }。因为我们总是只有一个根(#app)在规则集中使用 ID 是安全的。这很容易覆盖 CompB 中的范围规则。

  2. 父级覆盖

    对于我想要覆盖全局规则和范围规则的情况。值得庆幸的是,VueJS 允许将作用域和无作用域样式块添加到 .Vue 文件中。因此我可以添加更具体的 CSS 规则集。另请注意,我可以将类传递到 CompB 的 props 中,因为 Vue 为所有组件提供内置类和样式 props:

    // in CompA (the parent)
    
    <template>
      ...
      <!-- Vue provides built-in class and style props for all comps -->
      <compb class="compb"></compb>  
    </template>
    
    <script>
      ...
    </script>
    
    <style lang="scss">
      #app .compb .compb-header { 
        color: red; 
      }
    </style>
    
    <style lang="scss" scoped>
      ...
    </style>
    

    (注意:您可以变得更具体,并使您传递到 CompB 的类具有更独特的名称,例如.compa-compb或一些哈希后缀,因此不会与使用 CompB 和类的其他组件发生冲突.compb。但我认为这对于大多数应用程序来说可能有点过大了。)

  3. 当然,CompB 可能会提供自己的附加属性来调整 CSS 或将类/样式传递到组件的区域。但当您使用不属于您的组件时,情况可能并不总是如此(除非您分叉它)。另外,即使提供了此功能,在某些情况下您仍然会想“我只是想稍微调整一下填充!”。上述两种解决方案似乎对此非常有效。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何覆盖 Vue 组件中的作用域样式? 的相关文章

  • 上/下箭头键与预输入控件的问题(角度引导 UI)

    检查这个PLNKR http plnkr co edit grrAxz158PTShzpxz2f0 我已经实现了预先输入控制 默认情况下 在类型提前控件中 他们不会设置任何最大高度或列表高度 但根据要求 我必须将列表高度固定为 110px
  • CSS - 设置 Div 的大小以填充剩余空间

    我是 CSS 新手 我正在尝试创建模板的准系统结构 我有一个用于页眉 主要内容和页脚的 div 我的页脚和页眉很好 但我需要主要内容 div 来 填充 页眉和页脚之间的剩余空间 我尝试将 padding bottom 属性设置为与页脚相同的
  • 列表的 CSS 计数器

    我正在尝试在我的有序列表上使用 css 中的计数器增量 但它不起作用 这就是我想要显示的内容 1 Acknowledgements 1 1 blah blah 1 2 blah blah 1 3 blah blah 2 Risk State
  • Vue.js 动态图像路径未加载

    我试图在单个文件组件中动态加载图像 但收到错误消息 指出无法找到该模块 我想我正在尝试做同样的事情这个帖子 https stackoverflow com questions 40491506 vue js dynamic images n
  • HTML 表格信息

    我想知道是否有任何方法可以使 html 中的表格看起来像这样 http i43 tinypic com 21dml8l png http i43 tinypic com 21dml8l png 我基本上需要第一列中的 1 个大单元格 然后第
  • 列表项的替代背景颜色

    我有一个列表 每个项目都是链接的 有没有办法可以替换每个项目的背景颜色 ul li a href link Link 1 a li li a href link Link 2 a li li a href link Link 3 a li
  • 图像未完整显示在身体背景上

    例子 http jsbin com opokev 20 http jsbin com opokev 20 完整图片 http i53 tinypic com 347a8uu jpg http i53 tinypic com 347a8uu
  • 是否可以全局文本对齐表列而不在每行中指定类?

    想知道提高效率的最佳方法是什么 也许使用 jQuery 我可以接受不兼容 ie7 的解决方案 如果需要的话 即使缺乏对 ie8 的支持也可以 table th td class cal center td td left td td cla
  • 如何隔离 Vuetify 全局样式

    我已经开始在旧的现有项目中将 Vue js 与 Vuetify 结合使用 所以我没有重写所有前端 我只是导入了Vue并替换了一些部分 然后我注意到一个非常意想不到的行为 Vuetify 具有常见类的全局样式 例如 title它不仅影响整个页
  • 内部样式表中的 HTML 注释标签[重复]

    这个问题在这里已经有答案了 可能的重复 注释掉 HTML 文档中的样式表以支持旧版浏览器 https stackoverflow com questions 6825773 commenting out stylesheets in htm
  • 如何从 vue 组件调用 App.vue 中的方法

    我有一个 vue 组件和一个 vue 元素声明 如下所示 Vue component todo item template li This is a todo li methods test function I am getting an
  • Google 字体(上面有空格)无法在 IE7/IE8 上呈现

    有谁知道为什么 IE7 IE8 不会渲染 Google 字体 如果名称上有空格 您可以在这里查看演示 http jsfiddle net fYzAb 1 http jsfiddle net fYzAb 1 完全相同的两个标签 一个使用 Os
  • 如何强制 中的两个元素始终保持在同一行

    代码非常简单 table style width 100 border 0 background color white cellpadding 0 cellspacing 0 tr td style border 0 padding 0
  • 如何将安全中心与 Flexbox 一起使用?

    居中的弹性盒项目可能会出现不良行为当他们溢出容器时 https stackoverflow com questions 33454533 cant scroll to top of flex item that is overflowing
  • BEM 与 SASS 和 :hover

    使用 BEM 和 SASS 声明活动 焦点 悬停状态的正确方法是什么 例如 我有这样的结构 div class card img class card image src alt div class card overlay div cla
  • 推迟未使用的 CSS

    我有一个关键的 CSS 流程 可以防止页面首屏内容出现无样式内容闪现 FOUC 我陷入了 推迟未使用的 CSS 这一点 Google PageSpeed 见解 灯塔 和 或 Chrome 的性能审核强调了这一点 我已经阅读了其他文章 但它们
  • 容器中的等间距 div

    这是我的例子 http jsfiddle net rtCP3 62 http jsfiddle net rtCP3 62 我有 3 个 或更多 div 我想在一个容器中均匀分布 当将 Angular 与 ng repeat 一起使用时 样式
  • 不透明度如何影响元素顺序?

    我发现 CSS 有一个非常奇怪的行为opacity与浮动元素相结合 考虑以下 HTML div div Right button div div div Overlay div 最后div将覆盖前两个浮动的 删除不透明度会将最新的 div
  • Bootstrap 响应式图像缩放

    Using Twitter Bootstrap我意识到默认情况下它会响应式地缩放图像 这很棒 但并不总是完美的 比如说我有一个500x300桌面上的图像 然后它会针对移动设备调整大小 该图像将非常小而且不是很高 会丢失图像的大部分细节部分
  • 页脚没有停留在底部

    这似乎是有史以来最令人困惑的问题 至少对我来说是这样 知道这个页面 除了标题之外 都已损坏 我复制了 HTML 并尝试小心地删除 WordPress 相关的爵士乐 以便您获得该页面的 html JsBin直播页面 http jsbin co

随机推荐