首页 > 作文

VUE中CSS样式穿透

更新时间:2023-04-07 04:38:42 阅读: 评论:0

vue中css样式穿透

1. 问题由来

在做两款h5的app项目,前期采用微信官方推荐的weui组件库。后来因呈现的效果不理想,组件不丰富,最终项目完成后全部升级采用了有赞开发的vant组件库。同时将webpack顺利从3升级到4(项目结构 webpack+vue+vuex+vue-router+vant+less)。相信好多做tob的开发朋友都会选择顺手组件库。组件库内置了很多样式,方便了我们开发者,同时又因高度封装,有时也会给我们带来一点点困扰。比如,在使用vant组件库中的环形进度条时,查看官方文档,有改变进度条颜色,有改变轨道颜色,也有改变填充颜色。就是没有改变显示文字颜色的。凑巧的是,我们的需求就是要改变文字颜色。怎么办呢?写个css不就好了么。

2. 编写样式

为了说明情况,我为本文专门配合了一个测试demo。微信关注公众号【小院不小】,回复vuescoped,可获得。假如您现在也已经初始化好了一个vue项目,并引入了我们需要的vant组件库。接下来,我们在components文件夹中新建一个cssscope.vue的单文件组件。基本代码如下:

// wx:464884492<template><div><van-circle v-model="currentrate" :rate="90" :speed="100" :text="text" /></div></template><style lang="less" scoped></style><script>...</script>

编译运行,我们在浏览器就会看到一个进度为90%的环形进度条。当然显示文字90%显示是黑色,现在我们就来改变它。
最初我们想到,文字颜色color是可以从父级继承的,所以我们在style标签中写下如下css样式:

// wx:464884492<sty中国十大含金量证书le lang="less" scoped>.van-circle{color:blue;}</style>

回到浏览器,文字颜色没变。通过c湖北高考分数线hrome的开者工具,找到我们的圆形进度条。才发现,原来,这个组件内部是一个svg 和 div 标签组成,svg用于显示我们图形,div用于显示文字。并且在这个div上存在一个class 为 van-circle__text。根据css优先级,我们刚在父级设置的字体颜色无效。找到原因,那就好办了。我们需要在style标签中定义这个class选择器,并设置它字体颜色为蓝色。于是我们删除刚写的样式,改写为如下:

// wx:464884492<style lang="less" scoped>.van-circle{    .van-circle__text{olor:blue;}}</style>

这下应该可以了,可回到浏览器,效果依旧。黑色,还是黑色。此时,回到chrome,在开发者工具找到我们的元素。仔细的你才发现,显示文字的标签和它的父级好像不一样,少个data-v-xxx的属性。也许是style的 scoped国家运动员搞鬼,那我们就去掉懿拼音。回到浏览器,文字颜色居然改变了。欢喜之余,总感觉哪里不对?我们得查查这个水鬼scoped

3. style中的 scoped神奇效果

我们的项目采用less作为css 预处理语言。在组件中习惯于使用一个带有scoped属性的style标签,scoped 属性的效果,就是在编译打包后,在当前组件能一眼看到的标签中统一添加一个随机的属性(下图 data-v-97a9747e)如下图所示:

编译的css也会对于加上那个随机属性

我们再在回到解决问题的那里,我们去掉了scoped后,style标签里边的样式变成全局的了,这可不是我们想要的结果。不生效的原因,通过以上两图,已经一目了然。我们得穿透一下。怎么办?找文档?记得在vue-loader中找。

4. 深度作用选择器

从官方文档了解到,我们所谓的穿透,官方叫做深度选择器。怎么用的呢 ?就是在我们想穿透的选择器前边添加 >>> 或者 /deep/ 或者 ::v-deep。官方还说>>>可能存在问题,建议用后两者,我们用的less,就选择 /deep/ 好了,于是我们加回刚在佰草集新七白美白柔肤水style中删除的scoped属性,并修改为如下代码:

<style lang="less" scoped>.van-circle {  /deep/ .van-circle__text {    color: blue;  }}</style>

回到浏览器,颜色改变,大功告成。不过,我们还是得仔细检查检查,再次找到生成的css,如下图所示:

对,没毛病,是我们要的结果。

4. 总结

写代码,查问题,得找对路径。用别人的东西,就多看看对应官方文档。

欢迎感兴趣的朋友关注我的微信订阅号”小院不小”,或者点击下方的二维码关注。我将多年开发中遇到的难点,以及一些有意思的功能,体会都会一一发布到我的订阅号中。需要本文demo可以在公众号中回复vuescoped

闲来无事,采用cocos creator开发了一个小游戏,感兴趣的朋友一个可以来玩玩

本文发布于:2023-04-07 04:38:40,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/6cfb5eb4eb0dc79c3e35f14f15470052.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:VUE中CSS样式穿透.doc

本文 PDF 下载地址:VUE中CSS样式穿透.pdf

上一篇:提问的智慧
下一篇:返回列表
标签:组件   颜色   文字   样式
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图