vue中在父组件需要修改子组件样式

不知道大家在学习过程中有没有遇到过无法在<style scoped>中直接修改子组件的样式。

为什么无法修改?

原因:

首先要理解为什么要添加scoped?

因为要避免污染其他组件同类名的样式。

比如在工作中,一般由项目组长分配任务给你们,但是呢,有时候就是太巧了,你和别人的类名是一样的,这就会导致污染。有可能你的样式覆盖了他的样式,或者他的样式覆盖了你的样式。

我们加上scoped后,我们打开网页按下F12,可以在elements视图中查找到该页面的DOM元素,但是你仔细的看就会发现元素中会多了一个 `data-v-456ad4504(后面的值不一样)`这就确保了每个DOM的唯性。

所以直接修改是识别不到子组件中的类名的

那么怎么解决这个问题?

有两种方法:

第一种简单的方法:

一个vue文件可以同时存在几个style

在style scoped后面加多一个style,这个style不加scoped。类似下面这样:

<style scoped>
<style/>
<style>
<style/>

但是需要知道的是这种的弊端:会修改所有子组件的样式,其他页面引用了该子组件,样式也会跟着变

第二种方法就是用深度选择器 /deep/ 或 >>>

使用方法:

.[子组件名] >>> .[子组件里面的类名]
.[子组件名] /deep/ .[子组件里面的类名]

我有一个子组件名字为myComponent ,子组件中有一个类名为 myClass

则:

.myComponent /deep/ .myClass
.myComponent >>> .myClass

有错误的地方请纠正哈,一起共同进步!!噶油

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值