网易首页 > 网易号 > 正文 申请入驻

Vue3 “爱”上了 CSS 变量,结果会如何

0
分享至

Vue3 为什么会“爱上”CSS 变量

Vue 3 新增了一条实验性的功能

看到这个,我脑子里有以下的疑问?

  • CSS 变量是什么?
  • Sass/Less 中不是有变量的定义么,为什么还需要使用 CSS 变量?
  • 现有的 Vue 不是通过 :style 的方式定义去动态绑定 CSS,那 CSS 变量和这种方式有什么区别?
  • Vue 3 做了哪些操作,让 SFC (单文件组件)能更好的使用 CSS 变量

以下对这些问题进行探讨

CSS 变量基础

CSS 变量并不是某个框架的产物,而是 CSS 作者定义的一个标准规范

CSS 变量又称为 CSS 自定义属性,它包含的值可以在整个文档中重复使用。由自定义属性标记设定值(比如: --main-color: black;),由 var() 函数来获取值(比如: color: var(--main-color);)

为什么选择两根连词线(--)表示?因为变量 ? 被 Sass 用掉了,@ 被 Less 用掉了。为了不产生冲突,官方的 CSS 变量就改用两根连词线了

CSS 变量一个简单例子如下:

结果展示

我们现在 .parent 中定义变量 --parent-color: blue;,在 .child 中使用 color: var(--parent-color);

需要注意的是,变量的作用域就是它所在的选择器的有效范围,比如 .child 中定义的 --child-color: green;, 在 .parent 读取不到的,只针对 .child 元素下的元素有效

如果希望能够在 HTML 文档中都能访问到,则可以定义在类 :root

除了基础的使用,还有以下几点需要注意

  • CSS 变量的命名是对大小写敏感的,也就是 --myColor 和 --mycolor 是不一样的
  • var() 参数可以使用第二个参数设置默认值,当该变量无效的时候,就会使用这个默认值
  • CSS 变量提供了 JavaScript 与 CSS 通信的一种途径,在 JS 中我们可以操作 CSS,跟操作普通的 CSS 属性是一样的

在 Vue 2 中使用CSS 变量

上面说了,CSS 变量并不是什么某个框架的产物,而是原生 CSS 的标准规范。那么在 Vue 2 中直接使用 CSS 变量肯定可以的,并没什么约束。

关键是我们怎么让 Vue 组件中的状态同步到 CSS 变量中,其实也很简单,通过 Style 绑定 即可。

结果:

我们只需要在组件的根元素中设置 :style=“styleVar”(如果要该组件都可以使用,则必须放置在根元素下),就可以在 Vue 2.x 中实现组件中的状态和 CSS 值的绑定,而且这种绑定关系是响应式的,比如我定义一个方法,改变 font-size 的值,是可以实时更新的

效果演示:

:style VS CSS 变量

这里有个问题,现有的 Vue 可以通过 :style 的定义方式去动态绑定 CSS,比如我可以直接在上面的 .child-1中做如下绑定,效果跟上面是一致的。

那我为什么还要使用 CSS 变量?这样大费周章是否真有意义?

我总结有如下两个原因:

原因一:复杂的网站都会有大量的 CSS 代码,通常也会有许多重复的值。当组件中的一个状态被几十个地方用到时,那么你可能需要绑定很多个 :style。一来代码会显得可读性不强,二来性能上应该是比原生的要差,毕竟要将更改经过 Vue 的指令绑定到每一个元素上(这一点暂未验证)
通过 CSS 变量,就可以直接通过在组件的根元素设置变量,在组件内部

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
全面停止生产!江苏知名半导体大厂破产清算,疑似资金链断裂

全面停止生产!江苏知名半导体大厂破产清算,疑似资金链断裂

美人茶话会
2024-06-13 20:33:17
与马筱梅成婚相比,如今汪小菲的新突破,可能更令大S感到后悔

与马筱梅成婚相比,如今汪小菲的新突破,可能更令大S感到后悔

娱记掌门
2024-06-12 02:04:30
美俄当面对上了

美俄当面对上了

直新闻
2024-06-13 20:41:12
铁头撒尿的影响来了,日本入境审查收紧,多名中国人被直接遣返!

铁头撒尿的影响来了,日本入境审查收紧,多名中国人被直接遣返!

十原故里
2024-06-12 23:12:06
U20亚洲杯预选赛分组出炉,中国作为东道主无需参加

U20亚洲杯预选赛分组出炉,中国作为东道主无需参加

直播吧
2024-06-13 17:05:20
传华东政法毕业生就业难!校友会发出倡议渡难关,张雪峰失算了?

传华东政法毕业生就业难!校友会发出倡议渡难关,张雪峰失算了?

火山诗话
2024-06-13 09:12:39
中国史和世界史为什么不一起学?看完网友回复,我突然明白了!

中国史和世界史为什么不一起学?看完网友回复,我突然明白了!

有趣的羊驼
2024-06-06 14:27:16
1万台!逐步在乌鲁木齐投运

1万台!逐步在乌鲁木齐投运

新疆分享
2024-06-13 22:06:00
你无意中摸过什么不该摸的东西?网友:对视的那一刻,我俩都懵了

你无意中摸过什么不该摸的东西?网友:对视的那一刻,我俩都懵了

文雅笔墨
2024-06-13 20:51:06
炸了!美国大使亲口承认:中国要全面超越美国啦!

炸了!美国大使亲口承认:中国要全面超越美国啦!

仰望沧海
2024-06-12 13:32:06
他是原副总理,1975年被永远开除党籍,1979年当选政协副主席

他是原副总理,1975年被永远开除党籍,1979年当选政协副主席

历史1949
2024-06-14 00:02:54
给所有人说一个很恐怖的数据

给所有人说一个很恐怖的数据

叒女紫121
2024-06-11 06:38:57
71岁田新菊疑医美过度,4岁小天赐性别惹争议,黄维平再次被群嘲

71岁田新菊疑医美过度,4岁小天赐性别惹争议,黄维平再次被群嘲

壹月情感
2024-06-13 18:13:12
苹果watchOS 11史诗级更新:Apple Watch终于可以自动监测睡眠了

苹果watchOS 11史诗级更新:Apple Watch终于可以自动监测睡眠了

快科技
2024-06-13 21:00:08
安以轩澳门街头秀身材,整个人胖了一圈,最新生活状态曝光!

安以轩澳门街头秀身材,整个人胖了一圈,最新生活状态曝光!

花花lo先森
2024-06-13 10:45:21
汪峰女友森林北深夜发文:已报案!

汪峰女友森林北深夜发文:已报案!

鲁中晨报
2024-06-13 08:15:10
解放军上将军衔,相当于地方什么级别?享受什么待遇?

解放军上将军衔,相当于地方什么级别?享受什么待遇?

小新历史
2024-06-13 16:26:26
84岁大爷自学参加高考,估分630四处张扬,成绩出来后不敢相信!

84岁大爷自学参加高考,估分630四处张扬,成绩出来后不敢相信!

华人星光
2024-06-13 14:34:51
工龄三十九年与四十年退休后有什么不同?看完终于了解

工龄三十九年与四十年退休后有什么不同?看完终于了解

小鹿姐姐情感说
2024-06-13 01:09:38
美媒晒湖人2024-25赛季最完美的夺冠阵容,2选1续3签

美媒晒湖人2024-25赛季最完美的夺冠阵容,2选1续3签

阿雄侃篮球
2024-06-13 10:32:25
2024-06-14 09:32:49
IT爱好者小尚
IT爱好者小尚
分享IT教育类信息
630文章数 55关注度
往期回顾 全部

科技要闻

马斯克:明年千台人形机器人在特斯拉上班

头条要闻

亲绿网红在大陆旅游称"真的很喜欢这里" 气得绿营跳脚

头条要闻

亲绿网红在大陆旅游称"真的很喜欢这里" 气得绿营跳脚

体育要闻

乔丹最想单挑的男人走了

娱乐要闻

森林北报案,称和汪峰的感情遭受压力

财经要闻

私募大佬孙强:中国为什么缺少耐心资本

汽车要闻

升级8155芯片 新款卡罗拉锐放售12.98-18.48万

态度原创

教育
房产
手机
公开课
军事航空

教育要闻

中专女生爆冷拿下数学竞赛全球12名:数学就像我的朋友,对服装设计也很感兴趣

房产要闻

再度告急!海口连续仨月住宅入市不足千套!竟有楼盘卖爆!

手机要闻

三星Galaxy S22推送6月安全补丁 修复59个安全漏洞

公开课

近视只是视力差?小心并发症

军事要闻

美军演习将罕见以4万吨级准航母作为靶舰

无障碍浏览 进入关怀版