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

本文围绕Vue中的样式穿透展开。介绍了scoped样式隔离,其能实现组件样式模块化,但使用后父组件难修改子组件样式(除根节点)。还阐述了deep样式穿透,说明了Vue2和Vue3的穿透方法,以及: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 >
        子组件
    
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值