【css】vue项目深度作用选择器(scoped)


scoped 修饰的style只给当前组件内的元素使用

本质:
1.给当前组件中的所有元素,添加一个随机的属性
2.给当前组件中的所有元素的样式添加一个对应的随机属性选择器

描述:

场景:按照设计图,修改select选择器的样式

设计图效果

html

<el-select class="el-select-box"
    v-model="sortStatus"
    @change="handleStatus">
        <el-option v-for="item in items" 
            :key="item.index" 
            :label="item.text" 
            :value="item.index">el-option>
el-select>

css:

 方案一:不加scoped


 效果图(正是想要的效果)

ps: 由于select的下拉框是直接在body中的,为了修改下拉框的css,需要加一个scoped

 方案二:加上scoped,select 的css失效啦

 效果图(非想要效果)

 解决方案:.ranking-top 前面加上一个::v-deep

最终方案:

1、使用深度作用选择器::v-deep

2、使用popper-append-to-body属性,修改弹出层的插入位置 注意,该属性值为boolean类型

html

<el-select class="el-select-box"
    :popper-append-to-body="false"
    v-model="sortStatus"
    @change="handleStatus">
        <el-option v-for="item in items" 
            :key="item.index" 
            :label="item.text" 
            :value="item.index">el-option>
el-select>

css

相关资料:

  • Vue Loader
  • vue样式穿透 ::v-deep的具体使用
  • vue:style标签中的scoped属性(作用域)和lang属性的介绍

搜索

复制

CSS