今天又学习了一个使用CSS实现的聚光灯特效,来一起看看把,效果如下:

实现步骤

1. 构建结构

<body><h1 class="spotlight" data-content="CSS聚光灯">CSS聚光灯</h1>
</body>

这个特效的结构很简单,就是使用一个h1标签套入就行了,至于为什么有个自定义属性data-content,先不着急,后面揭晓

2. 编写CSS样式

先设置好一些全局的样式,

 html {font-size: 10px;}* {margin: 0;padding: 0;}body {background-color: #222;display: flex;justify-content: center;align-items: center;min-height: 100vh;}

然后设置一下底部文字的样式

  .spotlight {color: #444;font-size: 12rem;font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;position: relative;letter-spacing: -0.2rem;}

一开始的效果:

接下来添加伪元素after样式:

 .spotlight:after {content: attr(data-content);color: yellow;
}

在content属性中使用了attr()函数,里面的参数data-content就是.spotlight节点上面添加的自定义属性,

接下来为伪元素添加绝对定位,top和left都设为0,这样两段文字就重叠了,

  position: absolute;top: 0;left: 0;

伪元素的内容会覆盖原来的内容

 接下来就要进入关键的地方了

在CSS3中,有一个clip-path属性,MDN中是这样描述的:

clip-path :CSS 属性使用裁剪方式创建元素的可显示区域。区域内的部分显示,区域外的隐藏。

就是对元素的内容进行裁剪,保留裁剪的部分显示。

想要详细了解的话,可以参考

clip-path - CSS(层叠样式表) | MDN

我们这里为.spotlight:after添加以下样式:

 clip-path: ellipse(12rem 10rem at 50% 50%);-webkit-clip-path: ellipse(12rem 10rem at -0% 50%);

这里由于兼容性问题,需要添加前缀属性-webkit-

可以看到,添加了clip-path属性后伪元素的内容只剩下裁剪的部分显示,其他的部分隐藏住了,底下原来的内容就出来了,

接着把clip-path属性改为:

clip-path: ellipse(12rem 10rem at -0% 50%);
-webkit-clip-path: ellipse(12rem 10rem at -0% 50%);

把聚光灯定位在起始位置:

基本的静态效果就写好了。

接下来就是动态效果的实现

既然要实现动画,就要使用到animation属性了,

下面先来定义一个@keyframes:

@keyframes spotlight {0% {clip-path: ellipse(12rem 10rem at -0% 50%);-webkit-clip-path: ellipse(12rem 10rem at -0% 50%);}50% {clip-path: ellipse(12rem 10rem at 100% 50%);-webkit-clip-path: ellipse(12rem 10rem at 100% 50%);}100% {clip-path: ellipse(12rem 10rem at 0% 50%);-webkit-clip-path: ellipse(12rem 10rem at -0% 50%);}}

在.spotlight:after中添加animation属性

 animation: spotlight 10s infinite;

10s一个来回,且循环播放

这时候已经能够动起来了,但是没有上面的那种渐变的效果

接下来实现渐变的特效

思路也很简单,给伪元素添加渐变背景图片,将文字颜色设成透明,然后使用background-clip属性设置背景的裁剪区域,

background-clip  设置元素的背景(背景图片或颜色)是否延伸到边框、内边距盒子、内容盒子下面。

如果需要详细了解,可以参考:background-clip - CSS(层叠样式表) | MDN

首先我们需要找一张好看的渐变背景图片,我是在unsplash上找的:

然后给.spotlight:after添加样式:

   background-image: url(https://dogefs.s3.ladydaily.com/~/source/unsplash/photo-1579546929518-9e396f3cc809?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxzZWFyY2h8MXx8Z3JhZGllbnR8ZW58MHx8MHx8&auto=format&fit=crop&w=500&q=80);background-size: 100%;background-position: center center;background-clip: text;-webkit-background-clip: text;color: transparent;

这样就能够实现和开头一样的效果啦

源码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>css聚光灯</title><style>html {font-size: 10px;}* {margin: 0;padding: 0;}body {background-color: #222;display: flex;justify-content: center;align-items: center;min-height: 100vh;}.spotlight {color: #444;font-size: 12rem;font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;position: relative;letter-spacing: -0.2rem;}.spotlight:after {content: attr(data-content);color: transparent;position: absolute;top: 0;left: 0;clip-path: ellipse(12rem 10rem at -0% 50%);-webkit-clip-path: ellipse(12rem 10rem at -0% 50%);animation: spotlight 10s infinite;background-image: url(https://dogefs.s3.ladydaily.com/~/source/unsplash/photo-1579546929518-9e396f3cc809?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxzZWFyY2h8MXx8Z3JhZGllbnR8ZW58MHx8MHx8&auto=format&fit=crop&w=500&q=80);background-size: 100%;background-position: center center;background-clip: text;-webkit-background-clip: text;}@keyframes spotlight {0% {clip-path: ellipse(12rem 10rem at -0% 50%);-webkit-clip-path: ellipse(12rem 10rem at -0% 50%);}50% {clip-path: ellipse(12rem 10rem at 100% 50%);-webkit-clip-path: ellipse(12rem 10rem at 100% 50%);}100% {clip-path: ellipse(12rem 10rem at 0% 50%);-webkit-clip-path: ellipse(12rem 10rem at -0% 50%);}}</style>
</head>
<body>
<h1 class="spotlight" data-content="CSS聚光灯">CSS聚光灯</h1>
</body>
</html>

用CSS实现一个聚光灯效果相关推荐

  1. cdr 表格自动填充文字_长期伏案于表格,查看数据时你需要一个聚光灯效果

    [温馨提示]亲爱的朋友,阅读之前请您点击[关注],您的支持将是我最大的动力! 天天与电脑.表格打交道的小伙伴们,对眼睛是个考验,尤其是看那种数据行.列非常多的表格,想要查看某个数据时,眼睛一盯不上,出 ...

  2. 用CSS画一个针线包效果的边框

    今天,发现用CSS可以做出很漂亮的针线包样式的边框(有点类似border的dashed样式), 先放效果图: 很漂亮吧,其实,主要CSS就是 给 border-style:dashed 加上 box- ...

  3. html图片怎么加动画效果,css打造一个动画效果的图片墙

    今天我们将开始建立另一个有趣的CSS演示.这次我们将创建一个大的.无缝的照片墙.当用户将鼠标悬停于一个图像,一个透明的黑色渐变效果覆盖在其上面. Demo:点击这里 HTML代码 第一步我们需要创建一 ...

  4. 如何用css和HTML设置聚光灯效果

    可以使用 CSS 和 HTML 创建聚光灯效果.具体来说,你需要创建一个包含所有内容的容器,并使用 CSS 的 box-shadow 属性在容器周围添加阴影.然后,使用 HTML 的 div 元素在容 ...

  5. opencv+对图片实现聚光灯效果

    dota2玩过蓝猫的同学肯定很熟悉这个中年大叔骚骚的台词"聚光灯呢?朝这打",最近玩游戏的时候突然想到,如果在选人界面加入一个聚光灯效果对游戏体验是不是会有较好的加强,于是我尝试做 ...

  6. HTML+CSS实现聚光灯效果

    聚光灯效果 HTML CSS 关于兼容 知识点 1.content 2.linear-gradient 3.background-clip 4.clip-path HTML <!DOCTYPE ...

  7. 如何用css设置文字的聚光灯效果

    要用 CSS 设置文字的聚光灯效果,你可以使用 text-shadow 属性. 例如: .highlighted {text-shadow: 0 0 5px #ffff00; } 在这个例子中,我们为 ...

  8. html按钮按下效果_【CSS小分享】纯CSS实现一个水波纹效果按钮

    前言 如果大家有用过Material Design风格的UI库,那么一定对水波纹按钮很熟悉,我们这次就是使用纯CSS实现一个最简单的水波纹效果按钮,先上成品: 原理 在按钮中放置一个默认隐藏径向渐变的 ...

  9. html怎么让方块自动旋转,如何使用纯CSS实现一个圆环旋转错觉的动画效果(附源码)...

    本篇文章给大家带来的内容是关于如何使用纯CSS实现一个圆环旋转错觉的动画效果,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 效果预览 源代码下载 https://github.com ...

最新文章

  1. 乔氏西去,敬告各位!
  2. 学生计算机教室管理规章制度,学校规章制度之小学信息技术教室管理制度
  3. ZOJ 3798--解题报告
  4. 【原创】SSRS (SQL Serve Reporting Service) 访问权限的问题
  5. html4.0编辑器,KindEditor HTML(在线编辑器)
  6. Java synchronized的CPU层面实现细节
  7. 数据库:case when then
  8. 面向对象(类,面向对象三大特性)
  9. 一致性哈希算法及其应用
  10. CentOS 6.5 yum安装mysql5.6或其他版本【默认yum只能安装mysql 5.1】 by jason
  11. 【图解】FFmpeg播放器基本原理
  12. JAVA教程下载-JAVA学习视频教程网盘分享
  13. 数据库索引的概念和分类
  14. Microsoft漏洞补丁包下载地址大全
  15. 构建病毒宿主关系知识图谱
  16. 精美的液晶数字字体素材
  17. 香港有个荷里活。。。
  18. 一种基于蜂窝信令数据的数据驱动型OD矩阵构建的方法:以里昂地区(法国)作为研究...
  19. 学习期间的感悟和个人写的一段歌词
  20. 阿里云普通硬盘与NAS盘的读写速度测试

热门文章

  1. PAT乙级|C语言|1025 反转链表 (25分)
  2. 安防摄像机手机直播方案介绍
  3. 【MySQL】MyCAT三大配置文件详解(MySQL专栏启动)
  4. 华睿相机sdk 开发_岳阳楼区供应睿鉑倾斜五镜头相机D2PSDK是
  5. 编写c语言的开篇——Hello World
  6. 菜鸟教程 MarkDown语法
  7. 2012年计算机工作总结,计算机教师工作总结2011-2012
  8. 【Excel办公技能图文教程】
  9. 《社交红利》读书总结--如何从微信微博QQ空间等社交网络带走海量用户、流量与收入...
  10. 微信微博是谁的菜?分久必合