纯CSS实现边框流光效果(跑马灯效果)

首先上一个效果图

有木有发现和夜晚街上的广告牌很像,接下来让我们看看如何使用css实现的吧

结构分析

首先很明显应该使用一个盒子将文字装起来,并且将文字进行了居中,然后我们看到这盒子的周围围绕了两条光带,那么这两条光带是怎么实现的呢?

其实这是用四个小盒子实现的,将这四个小盒子分别放在大盒子的周围(紧贴这大盒子的内壁),然后使用这几个小盒子实现流光(跑马灯)效果。

接下来看看具体的代码实现

代码实现

HTML结构

首先准备一个div大盒子,用来装我们的广告语,还有跑马灯的四个小盒子

	<div class="main">跑马灯<div></div><div></div><div></div><div></div></div>

给大盒子设置样式,方便我们在浏览器中看到

	body {background-color: #000;}.main {position: absolute;width: 400px;height: 150px;top: 50%;left: 50%;transform: translate(-50%, -50%);//当为百分百单位时,相对的是自身的宽高overflow: hidden; //溢出部分隐藏text-align: center;line-height: 150px;background-color: transparent;color: aquamarine;font-size: 30px;font-family: '宋体';}

当前效果是这样的

接下来我们给大盒子设置灯光效果。

内部灯光效果

在效果图上,我们可以看到灯光尾部的颜色比较淡,头部颜色较亮, 展现出一种过渡效果,那这样的效果是怎么实现的呢?

这里就需要用到css3中background的一个新的属性值:linear-gradient,通过这个属性,我们可以将多个颜色设置为一个盒子的背景颜色,并且还有过渡效果,更强大的地方在于,这个属性值可以设置渐变的方向。

语法:linear-gradient(渐变方向,color1,color2,color3...)

这里我选择了#fff, #acd, cyan渐变的三种配色

那就开始使用这个属性值,这是其中一个小盒子的效果(顶部),其他的效果实现方法都类似。

	.main div {position: absolute;}.main :nth-child(1) {top: 0;left: 0;width: 100%;    //与父盒子等宽height: 2px;    //高要设置得较小background: linear-gradient(to right, #fff, #acd, cyan);}

这里设置的是顶部的灯光效果,使用topleft的属性设置这个盒子的位置;使用width:100%,使得这个盒子的宽度与大盒子保持一致,然后使用height:2px,将灯光条的宽度设置为2px,当然也可以根据实际需求,改变灯光条的宽度

接着剩下三条灯光的实现原理基本相同,只有位置和背景颜色不同

剩下右,下,左背景颜色的渐变方向分别是to bottomto leftto top

目前效果是这样的:

 这离我们想要的跑马灯效果越来越像了

其实我们还差最后一步,给灯光加上动画效果,也就是css3中的animation动画属性

同样我们也以设置顶部的灯光效果作为示范:

css3动画:

	@keyframes run1 {from {transform: translateX(-100%) //初始让它沿X轴负方向(向左)位移自身的宽度}to {transform: translateX(100%)  //动画结束时,让它回到原位}}

 给盒子加上动画

.main :nth-child(1) {top: 0;left: 0;width: 100%;height: 2px;animation: run1 1s linear infinite;//复合属性写法,其中infinite是让动画效果无限循环background: linear-gradient(to right, #fff, #acd, cyan);}

前面没有设置动画之前,可以看到颜色最深的部分在最右边,但是跑马灯的实现需求是需要颜色最深部分从左边出现,然后移动到右边,所以应该将动画的初识位置向左移整个盒子的长度,这样就实现了需求

剩下三个盒子的实现方式类似,设置好后,最终得到我们想要的跑马灯效果

想要了解css3动画的可以看看这篇文章,讲解得很详细

全部代码如下:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<style>body {background-color: #000;}.main {position: absolute;width: 400px;height: 150px;top: 50%;left: 50%;transform: translate(-50%, -50%);overflow: hidden;text-align: center;background-color: transparent;line-height: 150px;color: aquamarine;font-size: 30px;font-family: '宋体';}.main div {position: absolute;}.main :nth-child(1) {top: 0;left: 0;width: 100%;height: 2px;animation: run1 1s linear infinite;/* animation-delay: 0s;  */background: linear-gradient(to right, #fff, #acd, cyan);}.main :nth-child(2) {top: 0;right: 0;height: 100%;width: 2px;animation: run2 1s linear infinite;/* animation-delay: 1s; 设置动画延迟加载时间*/background: linear-gradient(to bottom, #fff, #acd, cyan);}.main :nth-child(3) {bottom: 0;left: 0;height: 2px;width: 100%;animation: run3 1s linear infinite;/* animation-delay: 2s; 设置动画延迟加载时间*/background: linear-gradient(to right, #fff, #acd, cyan);}.main :nth-child(4) {top: 0;left: 0;height: 100%;width: 2px;animation: run4 1s linear infinite;/* animation-delay: 3s; 设置动画延迟加载时间 */background: linear-gradient(to top, #fff, #acd, cyan);}@keyframes run1 {from {transform: translateX(-100%)}to {transform: translateX(100%)}}@keyframes run2 {from {transform: translateY(-100%)}to {transform: translateY(100%)}}@keyframes run3 {from {transform: translateX(100%)}to {transform: translateX(-100%)}}@keyframes run4 {from {transform: translateY(100%)}to {transform: translateY(-100%)}}
</style><body><div class="main">海绵宝宝<div></div><div></div><div></div><div></div></div>
</body></html>

最后,希望本文对你有所帮助,阿里嘎多

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/314656.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于低代码的指尖遐想_2

广义低代码解决了企业或个人的哪些问题&#xff0c;其快速发展的背后说明了什么&#xff1f; 基于一个简要的企业信息化系统来分析阐述&#xff08;天下大事合久必分&#xff0c;分久必合&#xff09;&#xff1a; 2010年前后&#xff0c;一个合格的程序员&#xff0c;可以做需…

一文初识Linux进程(超详细!)

&#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 ♈️今日夜电波&#xff1a;HEART BEAT—YOASOBI 2:20━━━━━━️&#x1f49f;──────── 5:35 &#x1f504; ◀️ ⏸ ▶️ ☰ …

数据转换的三剑客:Pandas 中 apply、map 和 applymap 方法的应用指南

数据转换的三剑客&#xff1a;Pandas 中 apply、map 和 applymap 方法的应用指南 ​ 在 Pandas 中&#xff0c;apply、map 和 applymap 是常用的数据转换和处理方法&#xff0c;它们为数据分析和数据处理提供了灵活的功能。这些方法可以根据具体的需求选择合适的方法进行操作。…

异常控制流ECF

大家好&#xff0c;我叫徐锦桐&#xff0c;个人博客地址为www.xujintong.com&#xff0c;github地址为https://github.com/jintongxu。平时记录一下学习计算机过程中获取的知识&#xff0c;还有日常折腾的经验&#xff0c;欢迎大家访问。 一、异常控制流&#xff08;ECF) 现代…

字符串转成时间的SQL,一个多种数据库通用的函数

select date 2010-10-06 from dual; date 函数&#xff0c;此函数适用于&#xff1a; 1.MySQL数据库 2.Oracle数据库 3.达梦数据库 4.人大金仓数据库

生存分析survival_analysis_COXmodel_python实现

什么是生存分析&#xff1f; 生存分析&#xff08;在工程中也称为可靠性分析&#xff09;的目标是建立协变量与事件发生时间之间的联系。该算法起源于临床医学研究&#xff0c;往往主要目标是预测死亡时间&#xff0c;即生存。生存分析是一种回归问题&#xff08;人们想要预测…

如何让GPT成为你的科研助手?

如何让GPT成为你的科研助手&#xff1f; 一OpenAI 1.最新大模型GPT-4 Turbo2.最新发布的高级数据分析&#xff0c;AI画图&#xff0c;图像识别&#xff0c;文档API 3.GPT Store 4.从0到1创建自己的GPT应用 5. 模型Gemini以及大模型Claude2二定制自己的GPTs 1.自定义GPTs使…

深度学习中氨基酸序列的编码方法

目录 1. 常规特征编码方法1.1 类别特征1.2 文本特征 2. 基于领域先验知识的编码方法2.1 演化关系2.2 理化性质 3. 基于学习的编码方法3.1 预训练模型3.2 端到端方法 参考 随着AI算法创新和算力提升&#xff0c;叠加生物&#xff08;组学&#xff09;数据&#xff08;指数级&…

C语言注意点(1)

1、switch&#xff0c;case&#xff0c;break&#xff0c;default相关注意点 当变量表达式的内容与某个case后的常量相等后&#xff0c;就执行该case下的语句&#xff0c;break表示该case以后的内容不会执行(立即跳出switch语句)&#xff0c; 如果没有跟break&#xff0c;会继续…

C++正则表达式全攻略:从基础到高级应用

C正则表达式全攻略&#xff1a;从基础到高级应用 一、基础知识二、正则表达式的基本匹配三、C中使用正则表达式四、高级正则表达式五、实践示例六、性能优化6.1、编译正则表达式6.2、避免过度使用回溯6.3、优化匹配算法 七、总结 一、基础知识 正则表达式是一种用于匹配、搜索…

国标GB28181对接的时候如何配置服务端口和本地端口

目 录 一、国标GB28181对接需要配置的端口等参数 二、GB28181服务器端口的配置&#xff1a;SIP服务器端口 三、GB28181设备测端口的配置&#xff1a;本地SIP端口 &#xff08;一&#xff09;本地SIP端口配置的意义 &#xff08;二&#xf…

<软考高项备考>《论文专题 - 42 范围管理(1) 》

1 范围管理基础 1.1 写作要点 过程定义、作用写作要点、思路规划范围管理规划范围管理是为了记录如何定义、确认和控制项目范围及产品范围&#xff0c;而创建范围管理计划的过程。作用:在整个项目期间对如何管理范围提供指南和方向。写范围管理计划、需求管理计划的内容;编写…