CSS3中var()的使用是什么,运行时怎样改变scss变量值
Admin 2022-07-04 群英技术资讯 363 次浏览
详情(MDN) IE无效,其余主流浏览器有效
只能在{}内声明,作用范围由{}的选择器决定
<!-- 声明 --> body{ --name:value;//body内有效 } <!-- 使用 --> .test{ attr: var(--name,defaultValue) //当--name不存在时,使用defaultValue var(--name):#369;//错误使用方式 }
CSS中原生的变量定义语法是:–*,变量使用语法是:var(–*),其中*表示我们的变量名称。
但是,不能包含$,[,^,(,%等字符,普通字符局限在只要是“数字[0-9]”“字母[a-zA-Z]”“下划线_”和“短横线-”这些组合,但是可以是中文,日文或者韩文。
这个方法并不是能直接改变scsss变量的值,但是能做到一样的效果,对于需要一个变量控制多个属性的更为有效简洁
单变量控制单条属性的就没必要用了,这方法就是修改style属性而已,单对单和你之间在style写那条属性是一样的
原理(English)
简单来说就是将scss的变量交由css变量控制
$colors: ( primary: #FFBB00, secondary: #0969A2 ); Selector1{ @each $name, $color in $colors { --color-#{$name}: $color; } } <!-- Selector1的生成效果 --> :root { --color-primary: #FFBB00; --color-secondary: #0969A2; } <!-- 使用方式一 直接使用css变量 --> Selector{ color:var(--color-primary); } <!-- 使用方式二 利用scss的函数,以符合scss语法 推荐 --> @function color($color-name) { @return var(--color-#{$color-name}); } body { color: color(primary); //使用 } <!-- body生成效果 --> body { color: var(--color-primary); //这样就可以被js设置了 }
js设置css变量,即设置运行scss变量
domObject.style.setProperty(name,value);//name为css变量名 e.g: --color-primary
至此完成了scss的运行时改变变量值,具体运用情景我也不太清楚,只是我遇到了。
自定义组件需要暴露出一些样式属性给使用者 自由调整 ,类似主题,而我又不想用字符串拼接的方式去完成,太浪费了,每次改完一个值都得把整个style给重写一遍,而且这涉及到了频繁修改dom不符合vue的思想,而且直接用css写太繁琐了。
所以我采用scss来写样式,scss嵌套真好用,less的不支持属性再嵌套,用得很不爽,没scss简洁。
由于scss是预编译的,无法在运行时改变变量值,而我又需要去改变,所以去google了,得到一个满意的解决方案 -> 原理(English)
在单文件组件(.vue)中若是使用了scoped 那么:root、:body等选择器的效果并不会如同你所预期的
[data-v-1374924e]:root { --test:100px; }
像这种的,变量–test 根本找不到,理由是并没有这个root,vue组件scoped的特性,只在本组件有效,但组件又没有完整的document,即组件内部没有root
所以在vue文件中,仔细思考css变量声明的选择器范围,避免变量无效
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
很多朋友都想知不同类型的css选择器有什么特点和不同?使用css对HTML页面中的元素实现一对一,一对多或者多对一的控制,就需要用到。下文有实例供大家参考,对大家了解操作过程或相关知识有一定的帮助,而且实用性强,希望这篇文章能帮助大家,下面我们一起来了解看看吧。
这篇文章主要介绍了CSS中的导航栏和下拉菜单的实现的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
方法:1、利用animation属性给元素绑定循环旋转动画;2、利用@keyframes规则设置动画的旋转动作;3、用“元素:active{animation-play-state:paused}”语句设置元素循环旋转时,点击元素停止旋转。
这篇文章主要介绍了html表单控件禁用属性readonly VS disabled区别,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
方法:1、利用position属性将图片元素设置为固定定位样式,语法为“图片元素{position:fixed;}”;2、利用bottom属性,将固定定位样式的图片元素固定在底部即可,语法为“图片元素{bottom:0;}”。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008