游乐游手机版
首页/前端开发/文章详情

Vue.js单文件组件(SFC)结构与样式作用域

时间:2026-07-06 06:59
Vue单文件组件由template、script、style三部分组成。Scoped样式通过给元素添加唯一属性(如data-v-f3f3eg9)并重写CSS选择器实现组件内隔离。动态内容(v-html)和第三方组件插槽需使用:deep()穿透。推荐默认开启scoped,全局样式可抽离至独立文件。

Vue 的 Scoped 样式,本质上是在组件编译阶段,给每个元素打上一个类似“身份证”的唯一属性(比如 data-v-f3f3eg9),然后把 CSS 选择器悄悄改写,变成 .className[data-v-f3f3eg9] 的形式。这样一来,样式就老老实实地作用在当前组件内,不会到处“惹事”。

但也别把它想得太完美,全局选择器该穿透还是穿透,碰上动态内容(比如 v-html 渲染的片段)或者第三方组件插槽里的内容,还是得靠 :deep() 这类穿透手段额外处理。

Vue.js 单文件组件 (SFC) 的结构与样式作用域

先说说单文件组件的骨架: