var()介绍与使用
详情(MDN) IE无效,其余主流浏览器有效
var()使用
只能在{}内声明,作用范围由{}的选择器决定
<!-- 声明 --> body{ --name:value;//body内有效 } <!-- 使用 --> .test{ attr: var(--name,defaultValue) //当--name不存在时,使用defaultValue var(--name):#369;//错误使用方式 }
CSS中原生的变量定义语法是:–*,变量使用语法是:var(–*),其中*表示我们的变量名称。
但是,不能包含$,[,^,(,%等字符,普通字符局限在只要是“数字[0-9]”“字母[a-zA-Z]”“下划线_”和“短横线-”这些组合,但是可以是中文,日文或者韩文。
运行时改变scss变量值
这个方法并不是能直接改变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变量声明的选择器范围,避免变量无效
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
更新日志
- 周华健.2015-水浒三部曲原创音乐选辑【滚石】【FLAC分轨】
- 钟志刚《为爱而歌DSD》[WAV+CUE]
- 孙露《情人的眼泪》[低速原抓WAV+CUE]
- 【雨果唱片】刘明源《胡琴专辑》1993[WAV+CUE]
- 黄莺莺《25周年纪念金曲专辑》[WAV+CUE][1.1G]
- 刘德丽《刘德丽新曲+精选》2023[WAV+CUE][1G]
- 潘美辰《鹰与月》双语专辑[WAV+CUE][1G]
- 梁咏琪.2007-女色新曲+精选2CD【华纳】【WAV+CUE】
- 黎亚.2006-我不在巴黎【星外星】【FLAC分轨】
- 陈洁仪.1994-心痛【立得唱片】【WAV+CUE】
- 车载必备专用超级选曲《劲爆中文DJ》2CD[WAV+CUE]
- 群星《民歌流淌60年(黑胶CD)》2CD[WAV+分轨]
- 群星《美丽时光》紫银合金AQCD[WAV+CUE]
- 群星《12大巨星畅销精选集》[WAV分轨][1.1G]
- 华语排行冠军曲《百事音乐风云榜》[WAV+CUE][1G]