当前位置: 首页 > news >正文

vue | 样式隔离scoped的原理 样式穿透deep的原理

文章目录

  • vue中的样式穿透
    • scoped 样式隔离
      • 父组件可以修改子组件根节点样式
    • deep 样式穿透
      • :deep(.el-col)的原理

vue中的样式穿透

scoped 样式隔离

一个style标签拥有scoped属性时,css样式就只能作用于当前的组件,这样就可以使得组件之间的样式不互相污染。如果一个项目中的所有style标签全部加上了scoped,相当于实现了组件的私有化,样式的模块化。

原理
scope的本质是分别给 HTML 标签和 CSS 选择器添加 data-v-xxx,来达到样式隔离的效果。

  1. 选中的标签中添加属性data-v-hash
  2. 样式选择器在后面追加data-v-hash的属性选择器
    在这里插入图片描述

样式穿透问题
使用 scoped 后,父组件是没有办法修改子组件中的样式(除了子组件根节点)

  • 父组件的样式将不会渗透到子组件中
  • 父组件可以修改子组件根节点样式

父组件可以修改子组件根节点样式

如果在父组件中设置样式div span,那么父组件该样式的优先级高一点,所以span是黑色

//父组件css
span{color: black;
}//子组件html
<template><span >子组件</span>
</template>//子组件css
.children span{color: blue;
}

在这里插入图片描述

//父组件css
div .children span{color: black; //样式没生效
}//子组件html
<div class="children"><span >子组件</span>
</div>//子组件css
.children span{color: blue;
}

此时,父组件的样式没有生效
在这里插入图片描述

deep 样式穿透

作用:scoped的样式可以作用得更深,比如影响子组件。

vue2中穿透的方法:::v-deep

>>> /deep/已弃用。

::v-deep .el-col {margin-bottom: 20px;
}

vue3穿透的方法:deep(.className)
官方推荐:deep(.el-col)深度选择器。

::v-deep(.el-col) {margin-bottom: 20px;
}// 缩写
:deep(.el-col) {margin-bottom: 20px;
}

:deep(.el-col)的原理

在上面的案例中,.children是子组件的根元素可以获取到,我们也可以看见.children标签上有子组件的hash值。所以需要穿透的是span属性。

//父组件
div .children :deep(span){color: black;
}//解析出来时
div .children[data-v-7a7a37b1] span{color: black;
}

由此可见:deep()的原理就是在前面添加[data-v-hash]

所以如果使用deep的样式节点没有父节点,这种用法是没有意义的。使用deep之后解析的代码为[data-v-hash] 节点
原因是没有父节点说明本身就是该组件的根元素,那么父组件可以修改其样式

http://www.lryc.cn/news/177262.html

相关文章:

  • UML,集合框架
  • 如何快速轻松自动添加微信好友?
  • MySQL高级语句(第一部分)
  • Perl区分文件换行符类型
  • 数据备份文件生成--根据表名生成对应的sql语句文件
  • 进程同步与互斥
  • mysql workbench常用操作
  • 【操作】国标GB28181视频监控EasyGBS平台更新设备信息时间间隔
  • TensorFlow入门(八、TensorBoard可视化工具的应用)
  • 升级targetSdkVersion至33(以及迁移至Androidx)
  • python3.11版本pip install ddddocr调用时报错got an unexpected keyword argument ‘det‘ 解决
  • 代理IP与Socks5代理:跨界电商之安全防护与智能数据引擎
  • 如何评估一个HR是否专业?看这些标准
  • WordPress主题开发( 八)之—— 模板循环详细用法
  • QT : 完成绘制时钟
  • 香港云服务器和日本云服务器哪个好?(详细对比)
  • Cross Attention和 Self- Attention 的区别?
  • 《从零开始的Java世界》02面向对象(基础)
  • pve关闭windows虚拟机慢
  • 【Django】 rest_framework接口开发流程及接口功能组成
  • Kafka Log存储解析以及索引机制
  • 广告电商模式:探索新商业模式,实现三方共赢
  • 动态线程池框架DynamicTp v1.1.4大版本发布,新增若干实用特性
  • 无线通信——Mesh自组网的多跳性
  • QA 云计算实验问题汇总
  • VEX —— Functions|Groups
  • JavaSE18——接口
  • 杭州亚运会开幕式惊现数字人火炬手,动捕设备迸发动画制作新动能
  • ptmalloc源码分析 - malloc/free函数的实战篇(12)
  • 博弈论(奇偶考虑法)+计数+DP(判定转dp):CF838C