vue中scoped慎用

it2022-05-08  9

scoped表示当前style属性只属于当前模块 实现原理: vue通过在DOM结构以及css样式上加上唯一的标记 data-v-469af010,保证唯一, 问题: 1.父组件无scoped属性,子组件带有scoped,父组件是无法操作子组件的样式的(原因在原理中可知),虽然我们可以在全局中通过该类标签的标签选择器设置样式,但会影响到其他组件 2.父组件有scoped属性,子组件无,父组件也无法设置子组件样式,因为父组件的所有标签都会带有data-v-469af010唯一标志,但子组件不会带有这个唯一标志属性,与1同理,虽然我们可以在全局中通过该类标签的标签选择器设置样式,但会影响到其他组件 3.父子组建都有,同理也无法设置样式,更改起来增加代码量

因此如果组件内部还有组件,只会给最外层的组件里的标签加上唯一属性字段,不影响组件内部引用的组件( 注意 ) 方案: 1.混合使用全局属性和局部属性

<style> /* global styles */ </style> <style scoped> /* local styles */ </style>

2.深选择器

<template> <div id="app"> <gHeader></gHeader> </div> </template> <style lang="css" scoped> .gHeader /deep/ .name{ //第一种写法 color:red; } .gHeader >>> .name{ //二种写法 color:red; } </style>

最新回复(0)