CSS scoped 属性的原理

scoped


一、scoped 是什么?

在 Vue 组件中,为了使样式私有化(模块化),不对全局造成污染,可以在 style 标签上添加 scoped 属性以表示它的只属于当下的模块,局部有效,使样式互不污染。

我们先写一个Home页面

另一个页面测试一下不加scoped,看是否会影响home页面


确实被影响了,在app页面设置字体为红色,home页面字体也变成红色,并且此时也继承app的样式

如果加上scoped的效果呢

此时字体颜色失效,并且组件标签上还多了data-v-的属性

二、实现原理

  1. 给所有组件实例添加了一个唯一不重复的动态属性,给每个标签对应的dom元素添加一个标签属性,data-v-xxx

  2. 每个选择器的最后一个选择器添加一个属性选择器,原先#app,更改后#appdata-v-xx

如果引用了第三方组件,需要在当前组件中局部修改第三方组件的样式,而又不想去除 scoped 属性造成组件之间的样式污染。此时只能通过穿透 scoped 的方式来解决。

::v-deep

相关推荐
乘风gg1 小时前
为什么AI 时代来临,大部分人吃不到红利
前端·ai编程·claude
恋猫de小郭1 小时前
Android 限制侧载新进展,谷歌联合国内厂商推验证计划
android·前端·flutter
IT_陈寒2 小时前
Redis内存爆了,原来我漏掉了这个致命配置
前端·人工智能·后端
恋猫de小郭2 小时前
解读 Android 17 全新内存限制,有没有“豁免”后门?
android·前端·flutter
Hyyy3 小时前
理解LLM的基本工作原理:预训练、微调、推理的区别
前端
Gatlin3 小时前
前端逆向与反逆向:一场猫鼠游戏的底层逻辑与实战
前端
代码煮茶3 小时前
React 组件封装方法论 —— 以 Todo App 为例
javascript·react.js
Pedantic3 小时前
本地通知(Local Notifications)学习笔记
前端
任沫4 小时前
Agent之Function Call
javascript·人工智能·go
森蓝情丶4 小时前
我给 AI 搭了个法庭:一个前端仔的 LangGraph 实战全记录
前端·后端