VUE开发中/deep/的使用 其他写法v-deep:: vue3中写法 :deep(.img)

本文介绍Vue中样式穿透的两种方式:/deep/与>>>的选择器使用方法及其原理,并附带CSS优先级提升技巧(!important)。

实际开发中经常会遇到一种情况,一个功能需求例如表格,可以直接使用element等组件库的表格组件,省时省力。
在这里插入图片描述
但实际需求总不会是和组件完全一样的,UI会有各种天马行空的样式给你,例如这种表格样式在这里插入图片描述
这时候有两条路可选

  • 自己用原生手写一个,但对于初级菜鸟来讲极不友好,会浪费大量时间走弯路
  • 对组件原生样式进行改写

而改写样式就需要用到/deep/样式穿透了

/deep/

VUE官方

  • 为了保证每个组件的css唯一性,避免污染全局或者被全局污染,vue提供了scoped作用域。
  • 这样在打包的时候会生成一个独一无二hash值,这样父组件的样式就不会影响到子组件了。
  • 只修改这个地方的样式,在其他页面用到本组件的时候不变,就可以用/deep/了
  • 把 /deep/ 换成 >>>,也可以达到同样的效果。
<template>
    <el-table  
    	...
        class="table" 
    ></el-table>
</template>

<style scoped>
.table /deep/ th{
    text-align: center;
    padding: 4px;
}
.table /deep/ td{
    border: none;
    padding: 0;
}
.table /deep/ .cell{
    padding: 0;
    margin:0px 6px;
}
</style>

但注意,/deep/选择器这个是chrome浏览器自己的标准,其他浏览器并没有实现这个标准,所以其他浏览器是失效的。

补充: !import

CSS写在不同的地方有不同的优先级,加入了!importcss样式优先级最高

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>测试Css中的!Important区别</title> 
</head> 
<style type="text/css">
.testClass{ 
color:blue !important;
}
</style>
<body>
    <div class="testClass" style="color:red;">
        测试Css中的Important
    </div>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

跳动的世界线

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值