css自定义属性和聚光灯效果的实现(代码)

本篇文章给大家带来的内容是关于css自定义属性和聚光灯效果的实现(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

简介

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

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

兼容性

老规矩,先来看下兼容性

1542963698-5b9760b3db380_articlex.png

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

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

语法

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

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

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

2694820031-5b9760b3d91f8_articlex.png

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

全局变量与变量覆盖

: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

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

参与计算

:root{    --bg-color: lightblue;    --文字颜色: white;    --fong-size: 30;}body{    background-color: var(--bg-color);}div{    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);

1857616696-5b9760b3dfb82_articlex.png

js获取与赋值

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

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

简单应用

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

1041882360-5b9760b48f6b7_articlex.gif

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

接下来开始写代码

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

:root{    --x: 40;    --y: 40;}*{    padding: 0;    margin: 0;}body{    width: 100vw;    height: 100vh;    background: #000;}div{    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轴坐标 )

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

3707422150-5b9760b3d7117_articlex.png

最后一步,我们添加鼠标跟随事件,并更改--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、变量的不合法

div {  --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

CSS实现图片动态效果的相关属性介绍

以上就是css自定义属性和聚光灯效果的实现(代码)的详细内容,更多请关注创想鸟其它相关文章!

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月24日 02:24:02
下一篇 2025年12月24日 02:24:34

相关推荐

  • 分享CSS按钮的多种制作方式,附CSS 按钮样式代码

    在项目中,几乎所有的网站都会用到按钮,多则十几个,少则几个。一个实用又好看的按钮,能给页面增色不少,从而更能吸引用户的眼球。本文主要讲述css按钮的多种写法和css按钮的美化,最后会展示一款常见的css按钮样式代码,供参考。好,继续往下看吧! 一、CSS按钮的多种写法 CSS按钮可以用button直…

    好文分享 2025年12月24日
    000
  • css的overflow属性如何定义滚动条

    滚动条在网页中经常见到,却并没有受到足够的重视。只有当因为滚动条的问题需要处理兼容性时,才进行调试操作。本章就给大家带来css滚动条的常见内容。 一:条件      滚动条和overflow是紧密相关的。只有当父级的overflow的值是auto或scroll,并且元素的内容超出元素区域时,才有可能…

    2025年12月24日 好文分享
    000
  • 用纯CSS实现鼠标经过后出现下拉菜单,实例讲解(附代码)

    随便打开网上的任何一个网站,你会发现这些网站都有导航部分,而且有些导航在鼠标经过后,会出现下拉菜单,那这种下拉菜单怎么做呢?其实,用纯css就可以做导航下拉菜单。接下来,就和大家聊聊css怎么做下拉菜单,好,进入正题。 HTML 部分:1、我们可以使用任何的 HTML 元素来打开下拉菜单,如:或 a…

    2025年12月24日
    000
  • 什么是css选择器?css3中5种常见的基本选择器(代码实例)

    本章我们给大家讲解一下什么是css选择器?css3中5种常见的基本选择器。有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 一:什么是css选择器? CSS是一种用于屏幕上渲染html,xml等一种语言,CSS主要是在相应的元素中应用样式,来渲染相对应用的元素,那么这样我们选择相应的元…

    2025年12月24日 好文分享
    000
  • css如何分辨伪类和伪元素?伪类和伪元素的各自的区别与用法(代码实例)

    在我们学习前端开发的时候,有时总会把css中的伪类和伪元素混淆在一起。那么,在css中什么是伪类?什么又是伪元素?它们有什么区别,又是怎么使用的?本章我们就给大家好好聊聊css中的伪类和伪元素,介绍css中的伪类和伪元素的区别和基本用法。有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。…

    2025年12月24日 好文分享
    000
  • css的外间距如何设置?css外间距的设置方法(附实例)

    css盒模型中有四种元素,分别是内间距、外间距、内容还有边框。这四种定义了盒模型的使用,今天我们就来说说关于css盒模型的外间距的使用吧 css的外间距如何设置? 我们的外间距是属于css盒模型之中的一种,那么现在我们来看看外间距都是怎么设置的吧。 margin: 是一个简写属性,可以一个声明中设置…

    2025年12月24日 好文分享
    000
  • css水平居中怎么设置?两种css水平居中的设置方法

    css样式能够实现水平居中,那么css水平居中怎么设置呢?本篇文章将给大家来分享关于css设置水平居中的实现方法。 css中可以设置行内元素的水平居中和设置块级元素的水平居中,对于行内元素和块级元素不了解的同学可以参考一下css块级元素的定义是什么?css块级元素有哪些?和css行内元素有哪些?cs…

    好文分享 2025年12月24日
    000
  • css自适应布局:css宽度自适应如何实现?

    如今的网页布局是需要适应于各种屏幕的,因此就需要来实现自适应使得网页中的内容来完全的显示,所以,今天的这篇文章就来给大家介绍一下关于css宽度自适应的内容。详细的说一说css自适应布局中css宽度自适应该如何实现。 相关文章推荐:1.css高度自适应如何实现?css高度根据内容自适应的简单方法 2.…

    好文分享 2025年12月24日
    000
  • css高度自适应如何实现?css高度根据内容自适应的简单方法

    在进行网页开发时,可能会遇到这样的情况,网页中的内容会超出你原先设置的高度或者宽度,这时就需要实现高度自适应或者宽度自适应,下面这篇文章将给大家来介绍关于css高度自适应。 PS:css宽度自适应的介绍内容,可以看这篇文章:css自适应布局:css宽度自适应如何实现? 首先,我们刚开始设计某些网页板…

    2025年12月24日 好文分享
    000
  • css如何设置边框样式?边框的不同样式介绍(代码实例)

    本章给大家带来css如何设置边框样式?边框的不同样式介绍(代码实例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 一:border边框线的基本样式 边框样式属性指定要显示什么样的边界 1.border-style 属性    none: 默认无边框    dotted: 定义一个…

    2025年12月24日 好文分享
    000
  • 解决浏览器兼容性的小技巧

    当我们在进行前端网页开发,编写页面的css样式的时候,往往是需要考虑的不同浏览器的兼容问题的,让我们设计开发的前端页面可以在不同的浏览器上都可以正常展示。本章我们就给大家带来一些解决浏览器兼容性的小技巧,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 一、chrome下会让小于12p…

    好文分享 2025年12月24日
    000
  • 让css的权重变得更友好的小技巧

    在这篇文章中,我将通过一些示例来向大家展示一些css的小技巧,让你知道如何使用css的级联(cascade)能变得更友好,也减少一些不必要的需求,从而也减少权重上遇到的麻烦。 技巧一:样式总是作为特定属性组合出现 一个很好的例子就是color和bakground-color的组合。除非你只做小调整,…

    2025年12月24日
    000
  • CSS让前端网页布局更好的实用小技巧

    对css前端网页布局的技巧,可谓是名目繁多。这里将适合新手的css前端网页布局的小技巧总结出来,或许对您更有实际的参考价值: 1、ul标签在Mozilla中默认是有padding值的,而在IE中只有margin有值。 2、同一个的class选择符可以在一个文档中重复出现,而id选择符却只能出现一次;…

    好文分享 2025年12月24日
    000
  • CSS详细认识制作动画的几个属性

    基本上我们会有这样的一个简单的概念,css 的动画效果由浏览器控制和渲染,理论上比 javascript 的动画效果性能好,但是控制上没有 javascript 那么灵活方便。而css 动画是分成 transform,transition 和 animation 三个部分,其中 transfrom …

    2025年12月24日
    000
  • CSS怎么设置垂直居中?

    在我们开发前端页面的时候,为了让页面效果美观,会出现需要垂直居中效果的地方。本章就让我们来了解一下用css如何设置垂直居中,详细介绍一下设置文字与div盒子的垂直居中的几种方法。有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 推荐手册:CSS在线手册 一:css如何设置文本文字垂直居…

    2025年12月24日 好文分享
    000
  • css伪元素有哪些?css伪元素的详情介绍(内附实例)

    今天这篇文章主要的介绍了四种css样式的伪元素,讲解的css伪元素都是在日常中比较常见的,现在就让我们一起来看这篇文章吧。 首先我们先来看看本文介绍的css样式中的四种伪元素: :before 该伪元素定义在元素之前添加内容 :after 该伪元素定义在元素之后添加内容 :first-line 该伪…

    2025年12月24日 好文分享
    000
  • css盒模型的边框用法你知道吗?这里有css盒模型的组成介绍

    本篇文章主要的介绍了关于css样式中的盒模型的边框介绍,有着完整的实例,还有css盒模型边框细节的介绍和代码的解释。下面就让我们一起来看这篇文章吧 首先我们来聊聊盒模型的组成部分: 想到盒模型就不由自主的想到一个盒子,css样式的盒模型里面有内容,边框,内边距,外边距等等,我们今天这篇文章主要说的就…

    2025年12月24日
    000
  • css中的padding属性可以为负值吗?css中padding属性的详解

    关于css盒模型中的内边距padding属性的详细介绍,还有新手常犯的一个错误,内边距padding属性真的能写入负值。这个答案在文章的最后,现在就让我们一起来看这篇文章吧 首先我们介绍的是第一个问题: css中的padding属性可以为负值吗?这个答案很容易,我们先不介绍,在文章最后有关于内边距p…

    2025年12月24日
    000
  • css如何设置圆角边框?css设置圆角边框的方法(图文)

    css如何设置边框?很多时候在开发网页前端的时候,为了让网页上面的东西看起来更加的舒服,我们可能需要设置一些圆角边框比如按钮之类的,那么,我们该怎么来设置圆角边框呢?本篇文章将给大家来介绍一下css设置圆角边框的方法。 css设置圆角边框最常用也是最简单的方法就是利用border-radius属性。…

    2025年12月24日 好文分享
    000
  • css颜色渐变实例:css3文字颜色渐变的实现方法

    在我们浏览网页的时候,有时会看到一些文字的颜色是动态渐变或者是静态渐变的形式的,那么,我们该如何在前端网页中实现文字颜色的渐变效果,本篇文章将给大家来介绍关于css颜色渐变应用中css3文字颜色渐变的效果。 css3文字颜色渐变的实现方法有很多,下面我就在这里为大家介绍 css3文字颜色渐变的方法一…

    2025年12月24日 好文分享
    000

发表回复

登录后才能评论
关注微信