
本文主要介绍了通过CSS变量修改样式的方法示例的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
问题
js怎么去修改css伪类样式呢?但是js并没有伪类选择器,那么该怎么办呢?网上有不少方法,比如通过切换元素的类、在style中动态插入新的样式等。
那么这里再来一种方法,设置css变量(var),通过js去改变这个变量来实现。
示例:改变div的hover背景色
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <!-- css --> < style type = "text/css" > :root { --divHoverColor: red; } div { width: 100px; height: 100px; background: bisque; } div:hover { background: var(--divHoverColor); } </ style > <!-- html --> < div onClick = "onDivClick('green')" /> <!-- js --> < script type = "text/javascript" > function onDivClick(value){ document.documentElement.style.setProperty('--divHoverColor', value); } </ script > |
那么,来认识下css variable吧
1. 基本用法
局部变量
1 2 3 4 | div { --masterColor: red ; background : var(--masterColor); } |
全局变量
1 2 3 4 5 6 7 | /* 对于HTML来说,:root 表示 <html> 元素 */ :root { --masterColor: red ; } div { background : var(--masterColor); } |
2. 语法
var( <custom-property-name> [, <declaration-value> ]? )
<custom-property-name> : 自定义属性名
<declaration-value> : 声明值(fallback value)
示例:
1 2 3 4 5 6 7 | div { /* --masterColor未定义,所以背景色使用red 它可以通过逗号分隔,定义多个声明值,var(--masterColor, red, green) */ background : var(--masterColor, red ); } |
变量可以通过var()进行引用
示例:
1 2 3 4 | div { --masterColor: red ; --bgColor: var(--masterColor) } |
注意:属性名是不能使用变量的
错误示例:
1 2 3 4 | div { --bg: background; var(--bg): red ; } |
3. 浏览器支持
使用@support检测
1 2 3 4 5 6 | @supports ( (--masterColor: red )) { /* supported */ } @supports ( not (--masterColor: red )) { /* not supported */ } |
使用JS检测
1 2 3 4 5 6 7 8 | const isSupported = window.CSS && window.CSS.supports && window.CSS.supports( '--masterColor' , 'red' ); if (isSupported) { /* supported */ } else { /* not supported */ } |
以上就是本文的全部内容,希望对大家的学习有所帮助。
转自:微点阅读 https://www.weidianyuedu.com