学习CSS3,实现红色心形loading特效

试想一下,如果你的网站在加载过程中,loading图由一个老旧的菊花转动图片,变为一个红色的心形loading特效,那该有多炫酷啊。

 

目录

实现思路 

初始化HTML部分 

延迟动画是重点 

设定动画效果 

完整源代码

最后


 

实现思路 

  • 每个竖线由一个li标签来实现,当然,我们需要设定他的起始高度,并且设定色值,设定圆角
  • 由于是loading图,需要在整体页面的垂直和水平居中,这涉及到CSS3的flex布局学习;
  • 动画特效,就需要使用到animation动画了,需要与@keyframes配合使用;
  • 最重要的是这个loading过程,需要设置一定的动画延迟,而不是使用javascript的setTimeout来实现。

可以说,CSS3的成熟,在很多程度上节约了JS的使用,节省了图片的网络请求与加载,这也是网站性能优化的很大体现。

 

初始化HTML部分 

loading图的初始化,需要准备9个 li 标签,而 li 标签的父元素需要相对于整个页面垂直水平居中,而几乎所有的loading图也都是相对于整体网站居中对齐的,这里需要保持一致。

这一小部分,需要学习到的CSS3知识点有,flex布局justify-content水平居中、align-items垂直居中border-radius圆角设置等。代码如下:

<!-- HTML5部分 -->
<div id="he"><ul><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul>
</div>// CSS3部分
*{padding: 0;margin: 0;list-style: none;
}
#he{display: flex;justify-content: center;align-items: center;height: 100vh;background-color: #232e6d;
}
ul{height: 200px;
}
li{float: left;width: 20px;height: 20px;border-radius: 20px;margin-right: 10px;background-color: red;
}

初始化代码后,你可以看到的效果是这样子的,效果如图:

延迟动画是重点 

由于要做的是一个CSS3的loading图,所以就需要从左到右的依次动效,而不是突然就变成一个心形了,这样起不到用户等待的效果。

而依次动效,平时一般使用setTimeout,然后获取每个DOM元素,再依次改变起CSS样式,或者直接修改style行内样式,但CSS3的成熟,大大减小了这方面的性能支出。CSS3设定代码如下:

li:nth-child(1){animation: love1 4s infinite;
}
li:nth-child(2){animation: love2 4s infinite;animation-delay: 0.15s;
}
li:nth-child(3){animation: love3 4s infinite;animation-delay: 0.3s;
}
li:nth-child(4){animation: love4 4s infinite;animation-delay: 0.45s;
}
li:nth-child(5){animation: love5 4s infinite;animation-delay: 0.6s;
}
li:nth-child(6){animation: love4 4s infinite;animation-delay: 0.75s;
}
li:nth-child(7){animation: love3 4s infinite;animation-delay: 0.9s;
}
li:nth-child(8){animation: love2 4s infinite;animation-delay: 1.05s;
}
li:nth-child(9){animation: love1 4s infinite;animation-delay: 1.2s;
}

设定动画效果 

然后就可以设定动画效果了,虽然看上去是9个 li 元素,但仔细观察,其实左右对称,也就是写5份动画@keyframes就可以了,因为第一个和最后一个的动效过程是一样的,依次往下看,只有中间部分,心形的尖头部分特立独行,单独为他准备一份CSS设定即可。

但需要注意的是:这个依次的动效过程,就需要设定好每份样式的起始高度和结束高度,再然后这里面有一个translateY的高度延伸

CSS3代码设定如下:

@keyframes love1{30%,50%{height: 60px; transform: translateY(-30px);}75%,100%{height: 20px; transform: translateY(0);}
}
@keyframes love2{30%,50%{height: 125px; transform: translateY(-62.5px);}75%,100%{height: 20px; transform: translateY(0);}
}
@keyframes love3{30%,50%{height: 160px; transform: translateY(-75px);}75%,100%{height: 20px; transform: translateY(0);}
}
@keyframes love4{30%,50%{height: 180px; transform: translateY(-60px);}75%,100%{height: 20px; transform: translateY(0);}
}
@keyframes love5{30%,50%{height: 190px; transform: translateY(-45px);}75%,100%{height: 20px; transform: translateY(0);}
}

完整源代码

前面说了这么多,怕你看的不够仔细,所以我这里放一下完整的源代码,你可以通过以下步骤自己拿到源代码

  1. 新建一个txt文档,如 CSS动效.txt 这样的文档
  2. 将 txt 文本后缀改为 html
  3. 使用一个开发工具,例如VSCode,sublime,或者直接txt文本工具打开都行(前端开发最初吸引我的地方就是,无需任何特殊环境,只要在一个文本里就可以书写代码,而且可以直接利用浏览器查看效果,这简直太酷了,其他语言可以吗?当然,汉语也不错,你直接张嘴就说,更不需要环境,哈哈,开个玩笑啦)
  4. 再然后,拿到源代码复制到你的 html 文本里,保存,再用浏览器打开就可以啦,就是如此简单,那句名人名言是啥来着?对了So easy!

完整源代码如下:

<!DOCTYPE html>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>CSS3爱心形状加载动画特效</title><style>
*{padding: 0;margin: 0;list-style: none;
}
#he{display: flex;justify-content: center;align-items: center;height: 100vh;background-color: #232e6d;
}
ul{height: 200px;
}
li{float: left;width: 20px;height: 20px;border-radius: 20px;margin-right: 10px;background-color: red;
}
li:nth-child(1){animation: love1 4s infinite;
}
li:nth-child(2){animation: love2 4s infinite;animation-delay: 0.15s;
}
li:nth-child(3){animation: love3 4s infinite;animation-delay: 0.3s;
}
li:nth-child(4){animation: love4 4s infinite;animation-delay: 0.45s;
}
li:nth-child(5){animation: love5 4s infinite;animation-delay: 0.6s;
}
li:nth-child(6){animation: love4 4s infinite;animation-delay: 0.75s;
}
li:nth-child(7){animation: love3 4s infinite;animation-delay: 0.9s;
}
li:nth-child(8){animation: love2 4s infinite;animation-delay: 1.05s;
}
li:nth-child(9){animation: love1 4s infinite;animation-delay: 1.2s;
}
@keyframes love1{30%,50%{height: 60px; transform: translateY(-30px);}75%,100%{height: 20px; transform: translateY(0);}
}
@keyframes love2{30%,50%{height: 125px; transform: translateY(-62.5px);}75%,100%{height: 20px; transform: translateY(0);}
}
@keyframes love3{30%,50%{height: 160px; transform: translateY(-75px);}75%,100%{height: 20px; transform: translateY(0);}
}
@keyframes love4{30%,50%{height: 180px; transform: translateY(-60px);}75%,100%{height: 20px; transform: translateY(0);}
}
@keyframes love5{30%,50%{height: 190px; transform: translateY(-45px);}75%,100%{height: 20px; transform: translateY(0);}
}
</style></head>
<body><div id="he"><ul><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul>
</div></body>
</html>

最后

好啦,代码学习完了,也快要五一节假日啦,给大家提个醒,去哪个景点都注定是东西又贵,又人山人海,所以我一般的选择是周末加请假,这样避开高峰,好出行,能省钱。而五一这样的节假日,当然是应该回家看看许久不见的亲人们啦。

千言万语一句话,工作的时候好好工作,放假了就好好玩好好休息,劳逸结合嘛。

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

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

相关文章

内地家长送孩子去香港上学,这4种途径一定要清楚

为了规划好孩子的升学路&#xff0c;不少大湾区的家长&#xff0c;都想把小孩送去香港上学。 但家长和孩子都没有香港身份的话&#xff0c;是没有办法申请香港本地学校的。 内地户籍的孩子要到香港上学&#xff0c;需要家长办理了香港身份&#xff0c;然后为孩子申请“受养人…

ArrayList线程安全问题解决方案

jdk8 Stream API的出现大大简化了我们对于集合元素的处理代码&#xff0c;对于串行流来说&#xff0c;无需考虑线程安全问题&#xff1b;但是&#xff0c;对于并行流来说&#xff0c;由于它是以多线程的方式并行处理同一个集合中的数据元素的&#xff0c;因此&#xff0c;存在着…

V23 中的新增功能:LEADTOOLS React Medical Web 查看器

LEADTOOLS (Lead Technology)由Moe Daher and Rich Little创建于1990年&#xff0c;其总部设在北卡罗来纳州夏洛特。LEAD的建立是为了使Daher先生在数码图象与压缩技术领域的发明面向市场。在过去超过30年的发展历程中&#xff0c;LEAD以其在全世界主要国家中占有的市场领导地位…

游戏视频录制软件有哪些?这3款推荐给你

在数字化时代的今天&#xff0c;游戏视频录制已经成为广大游戏爱好者和职业玩家的必需品&#xff0c;那么游戏视频录制软件有哪些&#xff1f;哪个更适合您呢&#xff1f; 本文将为您推荐3款游戏视频录制软件&#xff0c;帮助您记录下游戏中的精彩瞬间&#xff0c;也可以通过录…

光伏风电智能互联:IEC104转MQTT网关解决方案

背景情况 IEC60870-5-104&#xff0c;是为适应电力系统&#xff0c;包括能源管理系统&#xff08;EMS&#xff09;、数据采集&#xff08;SCADA&#xff09;系统、配电自动化系统以及其他公用事业&#xff0c;安全监控而制定的传输规约。IEC104规约将IEC101的应用层与TCP/IP提…

鸿蒙内核源码分析(用栈方式篇) | 程序运行场地谁提供的

精读内核源码就绕不过汇编语言&#xff0c;鸿蒙内核有6个汇编文件&#xff0c;读不懂它们就真的很难理解以下问题. 1.系统调用是如何实现的? 2.CPU是如何切换任务和进程上下文的? 3.硬件中断是如何处理的? 4.main函数到底是怎么来的? 5.开机最开始发生了什么? 6.关机…

Allegro画PCB中如何旋转器件

PCB中如何旋转器件 鼠标点击器件&#xff0c;然后右击&#xff0c;选择“Rotate”&#xff0c;然后再“Options”里选择旋转的角度和旋转中心&#xff0c;如下图&#xff1a; 然后鼠标转动就可以转动器件了。

数据结构——时间复杂度与空间复杂度

文章目录 一、算法效率算法的复杂度 二、时间复杂度1.时间复杂度的概念2.大O的渐进表示法3.例子 三、空间复杂度1.空间复杂度概念2.例子 四、常见复杂度对比 一、算法效率 算法的复杂度 算法在编写成可执行程序后&#xff0c;运行时需要耗费时间资源和空间(内存)资源 。 因此…

【算法刷题 | 贪心算法07】4.29(用最少数量的箭引爆气球、无重叠区间)

文章目录 12.用最少数量的箭引爆气球12.1题目12.2解法&#xff1a;贪心12.2.1贪心思路12.2.2代码实现 13.无重叠区间13.1题目13.2解法&#xff1a;贪心13.2.1贪心思路13.2.2代码实现 12.用最少数量的箭引爆气球 12.1题目 有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面…

python可视化图表

1.测试数据准备 2011年1月销售数据.txt 2011-01-01,4b34218c-9f37-4e66-b33e-327ecd5fb897,1689,湖南省 2011-01-01,5b6a6417-9a16-4243-9704-255719074bff,2353,河北省 2011-01-01,ae240260-68a9-4e59-b4c9-206be4c08a8d,2565,湖北省 2011-01-02,c833e851-880f-4e05-9de5-b5…

Flutter 有什么优异特性和革命性创新之处?

Flutter 有什么优异特性和革命性创新之处? 什么是 Flutter&#xff1f; Flutter mobile app SDK是一种新的方式来构建漂亮的原生移动应用程序&#xff0c;摆脱过去常见的“千篇一律”的应用程序。用过Flutter的人都对它赞赏有加&#xff1b; 相比较其他新型系统&#xff0c…

如何用揿针治疗慢性咽炎?

点击文末领取揿针的视频教程跟直播讲解 在日常生活中&#xff0c;慢性咽炎极为常见&#xff0c;不致命却很恼人。一旦发作&#xff0c;你的喉咙每天都会不舒服&#xff0c;总感觉有东西堵着&#xff0c;但是呢&#xff0c;咳又咳不出来&#xff0c;咽也咽不下去&#xff0c;你…

五一劳动节,祝你劳动快乐,休息更快乐!

五一国际劳动节亦称“五一节”&#xff0c;在每年的五月一日。此节源于美国芝加哥城的工人大罢工。Labour Day also known as "51" on May 1 of each year.This section comes from the city of Chicago workers strike. 1886年5月1日&#xff0c;芝加哥的二十一万六…

opencv_23_高斯模糊

void ColorInvert::gaussian_blur(Mat& image) { Mat dst; GaussianBlur(image, dst, Size(0, 0), 15); // Size(2, 2), imshow("图像模糊2", dst); }

最新CRM系统评测:发现双重功能的好用客户关系管理系统

对于绝大多数企业来说&#xff0c;拥有强大的销售能力是实现增长、获得收益的关键。在如今企业数字化的大背景下&#xff0c;我们经常会听到关于自动化的讨论&#xff0c;也有声音会说&#xff0c;企业数字化成功与否的标准之一就是自动化程度。销售自动化&#xff08;SFA&…

集成框架 -- OSS

前言 接入oss必须有这两个文档基础 使用STS临时访问凭证访问OSS_对象存储(OSS)-阿里云帮助中心 前端上传跨域 正文 sts前后端通用&#xff0c;开通图示 AliyunSTSAssumeRoleAccess 后端实现代码 public static void main(String[] args) {String regionId "cn-ha…

Emby Notifier——一个媒体通知推送服务

Emby Notifier 这是另一个项目 watchdog_for_Emby 的最新优化版本&#xff0c;取消了 nfo 文件的监视依赖&#xff0c;该版本不再需要手动设置媒体库路径&#xff0c;对通过网盘挂载生成的媒体库更加友好~ Emby Server 版本 (重要&#xff01;&#xff01;&#xff01;) 4.8.0…

【会员单位】浙江晧月水务科技有限公司

中华环保联合会理事单位 水环境治理专业委员会副主任委员单位 公司成立于2018年3月14日&#xff0c;是专业研究废水处理业务的国家高新技术企业。 公司自主研发的脱硫废水“零排放”的技术&#xff0c;不仅适应性好&#xff0c;技术先进&#xff0c;智慧化程度高&#xff0c…

Leetcode—1041. 困于环中的机器人【中等】

2024每日刷题&#xff08;121&#xff09; Leetcode—1041. 困于环中的机器人 实现代码 class Solution { public:bool isRobotBounded(string instructions) {int x 0;int y 0;int d 0;vector<vector<int>> direction{{0, 1}, {1, 0}, {0, -1}, {-1, 0}};for…

网络安全主题纪录片

网络安全主题纪录片 文章目录 网络安全主题纪录片第四公民黑客帝国系列龙纹身女孩碟中谍系列虎胆龙威4匿名者终结者2&#xff1a;审判日东方快车谋杀案黑客国家公敌我是谁&#xff1a;没有绝对安全的系统黑客军团速度与激情系列十亿美元大劫案勒索软件的背后黑客的恐惧为什么网…