vue3项目使用样式穿透修改elementUI默认样式
创始人
2024-06-02 06:41:59
0

一、样式模块化

在css单文件中,我们在style标签中写组件的样式,可以看到,一般style标签都会带上一个scoped属性,这样可以实现及时不同组件选择器一样,但是样式互不干扰。
在这里插入图片描述
看一个例子,我们在两个组件中都定义一个hello-world-box类,在对应的scope标签中设置不同的样式。
在这里插入图片描述

可以看到,vue为我们在不同的组件中的标签上加上了一个独有的属性(PostCSS转译实现)。然后通过属性选择器,实现不同属性的标签样式互不干扰。

css属性选择器的作用是:为带有特定属性的 HTML 元素设置样式

.hello-world-box[data-v-e17ea971] {color: red;
}

这也是style标签scoped属性实现样式模块化的原理。
当一个style标签拥有scoped属性时,它的CSS样式就只能作用于当前的组件,也就是说,该样式只能适用于当前组件元素。通过该属性,可以使得组件之间的样式不互相污染。如果一个项目中的所有style标签全部加上了scoped,相当于实现了样式的模块化。

二、样式穿透实现

了解了vue中样式模块化的实现,进入正题,如何实现自定义elmentUI组件库中组件的样式呢?
这其实也是比较常见的需求,因为有的UI图并不是使用element组件库的组件画的,所以样式上肯定存在偏差。
我们来看看el-table
在这里插入图片描述
可以看到,element组件的样式都是通过外部样式文件实现的,所以对应的标签上并没有vue加上的属性。
那么我们直接在使用elment组件的组件中加上样式,是不会生效的,外部导入的样式文件优先级更高。

1、外部css文件

我们可以自己定义一个css文件,然后书写对应的要修改的样式。
例如:styles.css
在这里插入图片描述
在入口文件main.js中引入:
在这里插入图片描述
这里注意引入elment css文件和自定义css文件的引入顺序,因为css样式生效是后来者居上的。
在这里插入图片描述
生效了。
但是这样其实是存在问题的: 样式文件影响了所有组件,也就是我们在其他页面中调用这个组件,样式也被修改了。
解决办法之一就是在组件对应的类上在包上一层自定义的类名。

2、:deep()

:deep():改变css解析时私有属性的位置

.outer {.el-input__inner {// 此时css解析的为 .outer .el-input__inner[data-v-xxxx] 样式无效background: pink;}:deep(.el-input__inner) {// 此时css解析的为 .outer[data-v-xxxx] .el-input__inner 样式生效background: red;}
}

3、:slotted()

:slotted():在子组件定义样式插槽内容样式

默认情况下,作用域样式不会影响到 渲染出来的内容,因为它们被认为是父组件所持有并传递进来的。


4、:global()

:global() :全局选择器,定义全局样式,不用单开一个没有scoped的style。



5、动态css(v-bind)

vue3单文件组件的

在这里插入图片描述
可以看到,即使在带scoped的style标签中,样式穿透也生效了。

实际的值会被编译成哈希化的 CSS 自定义属性,因此 CSS 本身仍然是静态的。自定义属性会通过内联样式的方式应用到组件的根元素上,并且在源值变更的时候响应式地更新。
参考vue官网:单文件组件 CSS 功能

相关内容

热门资讯

安卓系统账号怎么改,轻松实现账... 你是不是也和我一样,在使用安卓手机的时候,突然觉得账号名字太老土了,想要来个焕然一新的改变呢?别急,...
离线语音系统安卓版下载,随时随... 你有没有想过,在手机上也能实现语音助手的功能,而且完全不需要联网?没错,就是那种离线语音系统,听起来...
华为os系统是基于安卓系统吗,... 你有没有想过,华为的手机里那个神秘的OS系统,它是不是就是安卓系统呢?别急,今天就来揭开这个谜底,让...
各品牌安卓系统多大,探索各大品... 你有没有想过,那些我们每天离不开的安卓手机,它们背后的系统到底有多大呢?这可不是一个小问题哦,因为系...
不是安卓系统电视机,探索非安卓... 你有没有想过,家里的电视是不是安卓系统呢?现在市面上,安卓系统电视机可是越来越流行了。但是,你知道吗...
谷歌安卓系统开源免费用,免费体... 你知道吗?在科技的世界里,有时候最让人惊喜的就是那些免费又好用的东西。今天,就让我来给你揭秘一个超级...
安卓电脑版怎么装系统,轻松实现... 你有没有想过,你的安卓电脑版突然间卡得像蜗牛一样,慢得让人抓狂?别急,今天就来教你怎么给它来个焕然一...
安卓系统有几种语音,揭秘多样化... 你知道吗?安卓系统里的语音功能可真是让人爱不释手呢!想象你只需要动动嘴,就能完成各种操作,是不是觉得...
扫码系统推荐安卓游戏,畅享指尖... 你有没有发现,最近手机里的游戏推荐越来越贴心了?没错,就是那个神奇的扫码系统!今天,就让我带你一探究...
手机系统安卓做的最好,探索最佳... 你有没有发现,现在手机市场上,安卓系统简直是要风得风,要雨得雨,简直是手机系统中的佼佼者!不信?那就...
安卓系统越拉越难用,越拉越难用... 你有没有发现,最近安卓系统越来越难用了?是不是每次打开手机,都感觉卡得要命,各种广告弹窗让人头疼不已...
卓安系统创始人,引领科技浪潮的... 你有没有想过,在这个信息爆炸的时代,谁才是那个站在风口浪尖,引领科技潮流的先锋?今天,我要带你认识一...
安卓10系统经常断网,安卓10... 最近是不是你也遇到了安卓10系统经常断网的问题?这可真是让人头疼啊!手机断网,就像失去了方向感的指南...
开发安卓系统用什么,从工具到实... 你有没有想过,为什么你的手机里装了那么多应用,却还是觉得不够用呢?其实,这一切都离不开一个强大的操作...
安卓系统如何双开抖音,安卓系统... 如何在安卓系统上双开抖音:让你的娱乐生活更加丰富多彩在数字化时代,手机已经成为我们生活中不可或缺的一...
安卓8.0系统内测地址,探索系... 你有没有听说最近安卓8.0系统内测的消息?这可是科技圈的大事啊!作为一个紧跟潮流的数码爱好者,我可是...
安卓系统可以账号同步吗,安卓系... 你有没有想过,你的安卓手机里的各种账户信息,比如微信、QQ、支付宝,能不能像变魔术一样,一键同步到另...
安卓系统的平板怎么下载,畅享应... 你有没有想过,拥有一款安卓系统的平板电脑,那感觉简直就像拥有了整个世界?想象随时随地都能畅游网络海洋...
win平板上装安卓系统咋样,开... 亲爱的读者们,你是否曾想过在Windows平板上体验安卓系统的魅力?想象那双熟悉的Windows界面...
给安卓车机写系统,安卓车机系统... 你有没有想过,你的安卓车机系统其实可以焕然一新?想象当你驾驶着爱车,车机界面流畅得像丝滑的巧克力,功...