记一个vue在scoped样式中选择器涉及到子组件时样式不生效问题

1.简介

 

vue在scoped样式中书写css,选择器选择了子组件中的class,此时样式不生效

<template>
    <div class="layui-layout layui-layout-admin" :class="{'hide-menu':collapse}" id="app">
        <!--全局顶部-->
        <global-header></global-header>
		<!-- 侧边栏菜单 -->
		<global-side-bar></global-side-bar>
		<!-- 主要内容 -->
		<global-main></global-main>
        <global-layer></global-layer>
    </div>    
</template>

<style scoped>
    /** 隐藏菜单样式 */
    .hide-menu.layui-layout-admin .layui-side{ 
        left:-200px; 
    }
    .hide-menu .layui-body,
    .hide-menu .layui-footer{ 
        left:0; 
    }
</style>

此处的选择器选择的下级元素class都是在各个子组件中,由于scoped特性,父子组件的data-v-xxxx是不相同的,所以此处选择器不会生效

 

2.解决

 

vue提供的解决方式

<style scoped>
    /** 隐藏菜单样式 */
    .hide-menu.layui-layout-admin /deep/ .layui-side{ 
        left:-200px; 
    }
    .hide-menu /deep/ .layui-body,
    .hide-menu /deep/ .layui-footer{ 
        left:0; 
    }
</style>

父子组件选择器之间添加/deep/即可,此处代表选择器可以延伸到深处

也可以使用>>>代替/deep/

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值