今天我们以单选框为例来探究一下样式的穿透问题
1.代码
<template>
  <div class="">
    <el-radio v-model="radio" label="1">备选项</el-radio>
    <el-radio v-model="radio" label="2">备选项</el-radio>
  </div>
</template>
<script>
export default {
  name: "",
  data() {
    return {};
  },
  components: {},
};
</script>
<style scoped lang="less">
.el-radio {
  width: 100px;
  height: 100px;
  background-color: aqua;
  ::v-deep .el-radio__input {
    background-color: pink;
  }
   ::v-deep .el-radio__label {
    background-color: blue;
  }
}
// .el-radio{
//   background-color: blue;
//   .el-radio__input {
//   background-color: aqua;
// }
// }
// ::v-deep .el-radio__input {
//   background-color: aqua;
// }
// ::v-deep .el-radio__label {
//   color: red;
// }
</style>
2.效果

3.控制台的结构

4.问题
为啥最外层的大盒子可以直接修改,而里面的表单和文字需要用穿透的方式去修改呢?
特点:
最外层的大盒子是有hash值的

里面的小盒子是没有hash值的
里面的两个小盒子

这些代码都是来自与第三方组件element-ui,所以要修改里面组件的内容,需要用到第三方
5.其它组件的测试
1.代码
<template>
  <div class="">
    <template>
      <el-select v-model="value" placeholder="请选择">
        <el-option
          v-for="item in options"
          :key="item.value"
          :label="item.label"
          :value="item.value"
        >
        </el-option>
      </el-select>
    </template>
  </div>
</template>
<script>
export default {
  name: "",
  data() {
    return {};
  },
  components: {},
};
</script>
<style scoped lang="less"></style>
2.组件的结构

外层里面的大盒子和里面的小盒子
根据以上推导,里面的小盒子需要穿透来改变,外层的大盒子可以直接修改。
测试
外层的盒子

里面的小盒子----没有deep的情况下

里面的小盒子----有deep的情况下

6.总结
看见如果有hash值的盒子是可以直接修改的,如果没有则需要第三方deep来穿透。



















