vue模块私有组件中(scoped)设置全局样式

2018-05-09  本文已影响1232人  励公子

在项目开发过程中,我们经常会用到scoped来使样式文件只适用于当前模块,scoped设计的初衷就是让样式变得不可修改,可以很好的实现私有化

简单介绍一下scoped三条渲染规则
<div data-v-5558831a class="header">
    <div data-v-5558831a class="header-left"></div> 
    <div data-v-5558831a class="header-input">输入城市景点,游玩主题</div> 
    <div data-v-5558831a class="header-right">城市</div>
</div>
.header .header-left[data-v-5558831a] {
    width: 0.64rem;
    float: left;
}
<div class="home">
    <home-header></home-header>
</div>
编译后:
<div data-v-0c57a6db class="home">
    <div data-v-5558831a data-v-0c57a6db class="header">
        <div data-v-5558831a class="header-left"></div> 
        <div data-v-5558831a class="header-input">输入城市景点,游玩主题</div> 
        <div data-v-5558831a class="header-right">城市</div>
    </div>
</div>
注:由此便可得知父组件scoped内样式无法修改子组件元素样式的原理了
样式穿透

适用范围:

方法:

<style lang="stylus" scoped>
  .wrapper >>> .swiper-pagination-bullet-active
      background: #fff !important
</style>
// 注:样式穿透是vue-loader的特性
// 当lang = less or sass 时 解析不了">>>"符号,则使用 /deep/
.a /deep/ .b {
  /*样式*/
}
上一篇 下一篇

猜你喜欢

热点阅读