小编给大家分享一下css怎么实现聚光灯效果,希望大家阅读完这篇文章后大所收获、下面让我们一起去探讨吧!
<强>简介强>
css变量,一个并不是那么新的东西,但对css来说绝对是一场革命。
之前使用变量的时候,需要借助sass,少等预处理工具来实现,现在我们可以直接使用css来声明变量。
<强>兼容性强>
老规矩,先来看下兼容性
兼容性一片绿,红的那不是还有两个吗?做大事怎么能拘小节呢,让它咕噜(枪)一边去吧。
<强>语法强>
语法有点难看但很简单,<代码>——*> 代码来声明变量名,<代码> var(——*) 代码>来使用,也许你要问了,为什么使用<代码>,代码>不用<代码> 代码>一元类的呢,唉,那不是sass,少了两个货用了吗
<>强声明和使用必须放在{}代码块里强>
身体{ ——bg-color: lightblue; background - color: var (——bg-color); }
代码是不是很简单,可以直接看效果,就不赘述了。
<强>全局变量与变量覆盖强>
在<代码>:根> 代码代码块里面声明的变量就是全局变量,并且局部变量会覆盖全局变量
:根{ ——bg-color:红色; } 身体{ ——bg-color: lightblue; background - color: var (——bg-color); }
最后生效的是<代码>——bg-color: lightblue 代码>,<代码> bg-color> 代码变量的值也就变成了<代码> lightblue 代码>
<强>变量的缺省值强>
完整的变量使用语法<代码> var([,] ?) 代码>,当变量没有定义的时候,会使用后面的值。看下面的例子
身体{ ——1:红色; 颜色:var(, 2、蓝色); }
上面代码会在身体<代码> 代码>的作用域里面查找<代码>,2> 代码变量,没有的话就会查找全局,都没有的话就会使用后面的值,所以最后生效的颜色就是蓝色
可以看的到,上面我们的变量名直接使用了数字:乔伊:,css变量很叼的,不只是数字,汉字都是可以的。
参与计算
:根{ ——bg-color: lightblue; ——文字颜色:白色; ——fong-size: 30; } 身体{ background - color: var (——bg-color); } p { 颜色:var(——文字颜色); 字体大小:var (——fong-size) px; }
此时p里面的文字的大小是多少呢?是浏览器默认的大小,为什么不是咱们想象的30 px呢,这是因为变量转换的时候末尾会带上空格,<代码> var (——fong-size) px> 代码会转换成30 px <代码> 代码>
我们可以老老实实声明变量的时候带上单位
——fong-size: 30 px;
或者使用<代码>钙()代码>计算属性
字体大小:钙(var (——fong-size) * 1 px);
<强> js获取与赋值强>
我们可以使用js来获取和赋值css变量,你看,是不是老方便的了,老铁。
:根{ ——bg-color: lightblue; }//获取 getComputedStyle (document.documentElement) .getPropertyValue (& # 39;——bg-color& # 39;)//lightblue//赋值 document.documentElement.style.setProperty (& # 39;——bg-color& # 39; & # 39;黄绿色# 39;)
<强>简单应用强>
上面我们介绍了css变量的声明使用以及使用js来进行获取和赋值的操作,接下来,我们完成个聚光灯的效果(我自己瞎起的,我也不知道应该叫什么),诺,它长这样gif图有点卡顿:愤怒的:,担待着看吧
写代码之前我们来梳理下思路,怎么来实现这个效果,主要有以下几步1声明全局css变量2,设置的身体为纯黑背景,添加p并设置背景图3,将p的背景图使用<代码> clip-path 代码>进行裁剪,使用变量设置圆心位置4,添加鼠标事件,动态更改css变量也就是圆心位置
接下来开始写代码
布局很简单,就是一个p,我们主要说下css样式
:根{ ——x: 40; ——y: 40岁; } * { 填充:0; 保证金:0; } 身体{ 宽度:100大众; 身高:100 vh; 背景:# 000; } p { 宽度:100%; 高度:100%; 背景:url(& # 39; . ./图片/bg.png& # 39;) 0 0不再重演; 在calc clip-path:圆(100 px (var (- x) * 1 px)钙(var (y) * 1 px)); background-size:封面; }css怎么实现聚光灯效果