css实现聚光灯效果的代码分享

简介

CSS Variables,一个并不是那么新的东西,但对css来说绝对是一场革命。

之前使用变量的时候,需要借助sass、less等预处理工具来实现,现在我们可以直接使用css来声明变量。

兼容性

老规矩,先来看下兼容性

立即学习“前端免费学习笔记(深入)”;

css实现聚光灯效果的代码分享

兼容性一片绿,红的那不是还有两个吗?做大事怎么能拘小节呢,让它咕噜(gun)一边去吧。

语法

语法有点难看但很简单, --* 来声明变量名, var(--*) 来使用,也许你要问了,为什么使用 -- 不用 $ 一类的呢,唉,那不是sass、less两个货用了吗

声明和使用必须放在{}代码块里

body{    --bg-color: lightblue;    background-color: var(--bg-color);}

css实现聚光灯效果的代码分享

代码是不是很简单,可以直接看效果,就不赘述了。

全局变量与变量覆盖

:root 代码块里面声明的变量就是全局变量,并且局部变量会覆盖全局变量

:root{    --bg-color: red;}body{    --bg-color: lightblue;    background-color: var(--bg-color);}

最后生效的是 --bg-color: lightbluebg-color 变量的值也就变成了 lightblue

变量的缺省值

完整的变量使用语法 var( [, ]? ) ,当变量没有定义的时候,会使用后面的值。看下面的例子

body{--1: red;color:var(--2, blue);}

上面代码会在 body 的作用域里面查找 --2 变量,没有的话就会查找全局,都没有的话就会使用后面的值,所以最后生效的颜色就是blue

可以看到,上面我们的变量名直接使用了数字:joy:,css变量很叼的,不只是数字,汉字都是可以的。

参与计算

:root{    --bg-color: lightblue;    --文字颜色: white;    --fong-size: 30;}body{    background-color: var(--bg-color);}p{    color: var(--文字颜色);    font-size: var(--fong-size)px;}

此时p里面的文字的大小是多少呢?是浏览器默认的大小,为什么不是咱们想象的30px呢,这是因为变量转换的时候末尾会带上空格, var(--fong-size)px 会转换成 30 px

我们可以老老实实声明变量的时候带上单位

--fong-size: 30px;

或者使用 calc() 计算属性

font-size: calc(var(--fong-size) * 1px);

css实现聚光灯效果的代码分享 

js获取与赋值

我们可以使用js来获取和赋值css变量,你看,是不是老方便了,老铁。

:root{     --bg-color: lightblue;} // 获取getComputedStyle(document.documentElement).getPropertyValue('--bg-color')  // lightblue         // 赋值document.documentElement.style.setProperty('--bg-color', 'yellowgreen')

简单应用

上面我们介绍了css变量的声明使用以及使用js来进行获取和赋值的操作,接下来,我们完成个聚光灯的效果(我自己瞎起的,我也不知道应该叫什么),诺,它长这样。GIF图有点卡顿:angry:,担待着看吧

css实现聚光灯效果的代码分享

写代码之前我们来梳理下思路,怎么来实现这个效果,主要有以下几步 1、声明全局css变量 2、设置body为纯黑背景,添加p并设置背景图 3、将p的背景图使用 clip-path 进行裁剪,使用变量设置圆心位置 4、添加鼠标事件,动态更改css变量也就是圆心位置

接下来开始写代码

布局很简单,就是一个p,我们主要说下css样式

:root{    --x: 40;    --y: 40;}*{    padding: 0;    margin: 0;}body{    width: 100vw;    height: 100vh;    background: #000;}p{    width: 100%;    height: 100%;    background: url('../images/bg.png') 0 0 no-repeat;    clip-path: circle(100px at calc(var(--x) * 1px ) calc(var(--y) * 1px));    background-size: cover;}

使用 * 通配符简单粗暴干掉浏览器默认样式,body设置100%,这里使用了 vwvh 单位,表示将视口的等分成100份, 100vw 就是100份宽就是100%的宽, vh 同理。

重点来了,使用css声明了 --x--y 两个变量,然后在 p 样式里裁剪时使用 clip-path: circle(100px at calc(var(--x) * 1px ) calc(var(--y) * 1px)) ,我们使用 clip-path 裁剪了一个圆,它的语法如下

clip-path: circle(半径 at 圆心X轴坐标 圆心Y轴坐标 )

此时,页面上显示了一个这样的圆

css实现聚光灯效果的代码分享

最后一步,我们添加鼠标跟随事件,并更改 --x--y 的值

document.addEventListener('mouseover', function(e){     document.documentElement.style.setProperty('--x', e.clientX)     document.documentElement.style.setProperty('--y', e.clientY) })

此时,我们使用css变量完成了一个简单的效果,css变量还有更多的使用场景,请尽情的发挥吧。

详细代码,请移驾 github

小结

1、可以嵌套使用

:root{    --green: green;    --bgcolor: var(--green);}

2、变量的不合法

p {  --color: 10px;  background-color: yellow;  background-color: var(--color, green);}

此时p的背景色是什么呢?

A rgba(0,0,0,0)  B 10px  C yellow  D green

答案是 A

简单来说是变量声明的时候不是合法的,背景色显然不能是 10px ,所以浏览器就会使用默认值,这个默认值并不是使用变量的默认值,是浏览器自己的默认值 background-color: var(--color, green) 就会变成 background-color: rgba(0,0,0,0)

相关推荐:

有关聚光灯的文章推荐

jquery实现背景墙聚光灯效果示例分享_jquery

jquery实现聚光灯效果的方法_jquery

以上就是css实现聚光灯效果的代码分享的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1545868.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月21日 17:34:36
下一篇 2025年12月21日 17:34:45

相关推荐

  • vue的css动画

    这次给大家带来vue的css动画,使用vue的css动画注意事项有哪些,下面就是实战案例,一起来看一下。 .toggle-cart-enter-active, .toggle-cart-leave-active {transition: all .3s ease-out;}.toggle-cart-…

    好文分享 2025年12月21日
    000
  • 关于CSS里的块级格式

    1.BFC 定义 bfc(block formatting context)直译为”块级格式化上下文”。它是一个独立的渲染区域,只有block-level box(块级元素)参与, 它规定了内部的block-level box如何布局,并且与这个区域外部毫不相干. 通俗地来说…

    好文分享 2025年12月21日
    000
  • CSS的伪类选择器

    这次给大家带来css的伪类选择器,css伪类选择器的注意事项有哪些,下面就是实战案例,一起来看一下。 a.random:hover{color:#64FFDA;font-size:120%;} //选择的是class=”random”的标签。 a#search:active{font-size:80…

    2025年12月21日
    000
  • 为什么把css文件放在头部

    我们知道,在html文件中,我们一般都是把css放在头部,把js放在尾部,这是为什么呢?今天给大家好好分析一下这样做的原因。 这样会先加载css的样式,在渲染dom的时候已经知道了自己的样式了,所以一次渲染成功 如果css放在底部,那么需要先渲染dom,然后加载css后会重新渲染之前dom,需要两次…

    好文分享 2025年12月21日
    000
  • style对象的cssText方法有哪些使用方法

    这次给大家带来style对象的csstext方法有哪些使用方法,style对象的csstext方法使用的注意事项有哪些,下面就是实战案例,一起来看一下。 cssText 本质是什么?   cssText 的本质就是设置 HTML 元素的 style 属性值。 cssText 怎么用? domElem…

    好文分享 2025年12月21日
    000
  • html+css+jquery做选项卡

    这次给大家带来html+css+jquery做选项卡,html+css+jquery做选项卡的注意事项有哪些,下面就是实战案例,一起来看一下。 列表选项卡 body{ margin:0px; padding:0px; } #main{ width:310px; border:1px solid #C…

    好文分享 2025年12月21日
    000
  • html+css+javascript如何实现列表循环滚动

    这次给大家带来html+css+javascript如何实现列表循环滚动,html+css+javascript实现列表循环滚动的注意事项有哪些,下面就是实战案例,一起来看一下。 说明:设置时间定时,在规定的时间内替换前一个节点的内容 1、关键代码:javascript: var dome=docu…

    好文分享 2025年12月21日
    000
  • 怎样操作meta标签中的viewport来控制设备屏幕的css属性

    这次给大家带来怎样操作meta标签中的viewport来控制设备屏幕的css属性,利用meta标签中的viewport来控制设备屏幕的css属性的注意事项有哪些,下面就是实战案例,一起来看一下。 width-viewport的宽度 height-viewport的高度 initial-scale 初…

    好文分享 2025年12月21日
    000
  • 怎样实现meta标签中的viewport来控制设备屏幕的css属性

    这次给大家带来怎样操作meta标签中的viewport来控制设备屏幕的css属性,利用meta标签中的viewport来控制设备屏幕的css属性的注意事项有哪些,下面就是实战案例,一起来看一下。 width-viewport的宽度 height-viewport的高度 initial-scale 初…

    好文分享 2025年12月21日
    000
  • 如何使用CSS对TD中INPUT的宽度设置

    这次给大家带来如何使用css对td中input的宽度设置,使用css对td中input的宽度设置的注意事项有哪些,下面就是实战案例,一起来看一下。 给某个option 添加 selected = “selected” 属性就是默认选项 全部 通过 未通过 则“通过”为默认选中…

    好文分享 2025年12月21日
    000
  • 怎样编写灵活、稳定、高质量的HTML和css代码

    这次给大家带来怎样编写灵活、稳定、高质量的html和css代码,编写灵活、稳定、高质量的html和css代码的注意事项有哪些,下面就是实战案例,一起来看一下。 黄金定律永远遵循同一套编码规范,不管有多少人共同参与同一项目,一定要确保每一行代码都像是同一个人编写的. 一、语法:1.用两个空格来代替制表…

    好文分享 2025年12月21日
    000
  • 怎样用HTML和CSS做出大白

    这次给大家带来怎样用html和css做出大白,用html和css做出大白的注意事项有哪些,下面就是实战案例,一起来看一下。 PS:您最好对 HTML 和 CSS 有一定的了解,但如果你是小白也没关系,小白见「大白」也是可以的! 一、准备工作 进入到 /home/shiyanlou/ 目录下,新建空白…

    好文分享 2025年12月21日
    000
  • Html+css怎样实现纯文字和带图标的按钮

    这次给大家带来html+css怎样实现纯文字和带图标的按钮,html+css实现纯文字和带图标的按钮的注意事项有哪些,下面就是实战案例,一起来看一下。 本文总结一下一些基础页面元素的实现方式,后续陆续更新。首先我们遇到最多的可能是按钮的切图,按钮可能有很多种外观,但是一般可分为纯文字的和带图标的按钮…

    好文分享 2025年12月21日
    000
  • CSS的SASS样式应该怎么使用

    这次给大家带来css的sass样式应该怎么使用,css的sass样式使用的注意事项有哪些,下面就是实战案例,一起来看一下。 随着越来越多的开发者使用SASS,我们有必要关注一下SASS的代码的个数问题。 我们可以从CSS(层叠样式表)的语法出发,来解释SASS语法的一些特别之处,毕竟,CSS样式指南…

    好文分享 2025年12月21日
    000
  • HTML的基础知识.关于css样式表和样式属性的详细介绍

    这次给大家带来html的基础知识.关于css样式表和样式属性的详细介绍,使用html的基础知识css样式表和样式属性的注意事项有哪些,下面就是实战案例,一起来看一下。 一、position:fixed     锁定位置(相对于浏览器的位置),例如有些网站的右下角的弹出窗口。 二、position:a…

    好文分享 2025年12月21日
    000
  • css怎样固定div或者table在指定位置

    这次给大家带来css怎样固定div或者table在指定位置,用css固定div或者table在指定位置的注意事项有哪些,下面就是实战案例,一起来看一下。 .bottomTable{ background-color: rgb(249,249,249); z-index:99999999; posit…

    好文分享 2025年12月21日
    000
  • CSS3的文本阴影text-shadow属性应该如何使用

    这次给大家带来css3的文本阴影text-shadow属性应该如何使用,使用css3的文本阴影text-shadow的注意事项有哪些,下面就是实战案例,一起来看一下。 文本阴影text-shadow属性特效: 1.右下角阴影,左下角阴影,左上角阴影,右上角阴影 text-shadow p{ text…

    好文分享 2025年12月21日
    000
  • html以及css的常用用法

    这次给大家带来html以及css的常用用法,html以及css用法的注意事项有哪些,下面就是实战案例,一起来看一下。 我将利用三天的时间来完成制作京东首页的静态页面效果,其中包含的内容有html以及css。 1、在开发进行之前,首先要配置开发环境:我们需要安装sublime  webstorm  v…

    好文分享 2025年12月21日
    000
  • html、css和js的注释规范用法有哪些

    这次给大家带来html、css和js的注释规范用法有哪些,使用html、css和js的注释有哪些的注意事项有哪些,下面就是实战案例,一起来看一下。 添加必要的注释,对一个有责任心、有道德模范的前端必须具备的好习惯,可以大大提高代码的可维护性、可读性。首先大家需要熟悉一下html、css、js的注释的…

    好文分享 2025年12月21日
    000
  • css3绘制一个圆圆的loading转圈动画实例分享

    本文主要介绍了css3如何绘制一个圆圆的loading圈的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮助到大家。 如何绘制一个圆圆的loading圈 小程序里需要一个像下面的loading,原生的没有,引入别的组件库又太大,所有决定自己写个。 1.基…

    2025年12月21日
    000

发表回复

登录后才能评论
关注微信