CSS3学习记录之loading动画
loading动画就是在加载一些网页内容的时候呈现出来的小动画,记录一下学到的几种loading动画:
效果:http://39.105.101.122/myhtml/CSS/Loading/loading.html
第一个是一个圆形的一部分在旋转,实现原理:
在相应的位置添加一个 i 标签,然后设置width和height(值一样),然后添加border-radius:50%,此时这个i标签呈现出来的是一个圆,为了和图示效果一样,需要把这个圆遮住多半个,用background: linear-gradient(transparent 0%, transparent 70%, #333 70%, #333 100%);这样用背景过渡的方法就让上面70%透明掉了。然后添加动画:0%{rotate(0deg)} 50%{rotate(180deg)} 100%{rotate(360deg)}, animation: loading-1 .2s linear 0s infinite;//循环播放。
第二个是几个竖线在不停的伸缩,实现原理:
在相应的位置添加若干个 i 标签,这里添加了6个,i 标签是行内元素,因此他们可以在一行内,设置margin-right,width为4像素,height可以自己随便定义。然后添加颜色等属性。然后定义一个动画。
@keyframes loading-2{
0%{
transform: scaleY(1);
}
50%{
transform: scaleY(0.4);
}
100%{
transform: scaleY(1);
}
}
0%和100%的时候值要一样,这样才能平滑过渡。50%的时候可以伸缩相应的值。然后给每个 i 标签添加动画属性:animation: loading-2 1s ease-in .1s infinite;
一个动画循环是1s,0.1s延迟,循环播放,每个 i 标签的动画延迟时间递增一点,显示的结果就会呈现出波浪的效果。
第三个是围成一个圆的8个小圆在不停从大变小同时颜色由深变浅,这个原理和第二个是相同的,先添加8个 i 标签,设置position:absolute,width、height、border-radius、颜色、它的父级div不设置width和height,这样没有宽度和高度的父级div的左上角也是居中的,然后给每个 i 标签设置相应的top和left,也就是围着中心点均匀绕开。这样就完成了布局。然后添加动画:
@keyframes loading-3{
0%{
/*background: linear-gradient(transparent 0%);*/
opacity: 1;
transform: scale(2);
}
100%{
/*background: linear-gradient(transparent 0%,transparent 100%);*/
transform: scale(0.5);
opacity: 0;
}
}
在0%的时候opacity:1(不透明度是1,即完全不透明),scale(2),大小为原大小的两倍,100%的时候opacity为0,完全透明,大小为原大小的一半,这样就能实现一边变小同时颜色变淡的效果。然后给 i 标签添加:animation: loading-3 .8s ease-in .1s infinite;每个 i 标签的延迟时间是递增的,并且递增到0.8s和一个循环的动画时间一样,这样才能保证只有一个最大的,后面的都是逐渐缩小的,如果想让在打开页面之后动画就是播放着的,可以给第一个延迟时间改成-0.8s,后面的递增0.1s即可。
代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<style type="text/css">
.box{
width: 100%;
padding: 3%;
/*margin: 100px auto;*/
box-sizing: border-box;
overflow: hidden;
/*background-color: #ccc;*/
}
.loader{
width: 30%;
height: 200px;
/*background-color: #fff;*/
border: 1px solid #ccc;
float: left;
margin-right: 3%;
box-sizing: border-box;
position: relative;
display: flex;
align-items: center;
justiy-content: center;
}
@keyframes loading-1{
0%{
transform: rotate(0deg);
}
50%{
transform: rotate(180deg);
}
100%{
transform: rotate(360deg);
}
}
.loading_1{
width: 35px;
height: 35px;
margin: auto;
border-radius: 50%;
position: relative;
background-color: #000;
/*display: block;*/
background: linear-gradient(transparent 0%, transparent 70%, #333 70%, #333 100%);
animation: loading-1 .2s linear 0s infinite;
}
@keyframes loading-2{
0%{
transform: scaleY(1);
} 50%{
transform: scaleY(0.4);
} 100%{
transform: scaleY(1);
}
}
.loading_2{
width: auto;
height: 35px;
margin: auto;
/*background-color: #000;*/
}
.loading_2 i{
width: 4px;
height: 35px;
border-radius: 2px;
margin-right: 4px;
margin-left: 4px;
background-color: #000;
float: left;
}
.loading_2 i:nth-child(1){
animation: loading-2 1s ease-in .1s infinite;
}
.loading_2 i:nth-child(2){
animation: loading-2 1s ease-in .2s infinite;
}
.loading_2 i:nth-child(3){
animation: loading-2 1s ease-in .3s infinite;
}
.loading_2 i:nth-child(4){
animation: loading-2 1s ease-in .4s infinite;
}
.loading_2 i:nth-child(5){
animation: loading-2 1s ease-in .5s infinite;
}
.loading_2 i:nth-child(6){
animation: loading-2 1s ease-in .6s infinite;
}
@keyframes loading-3{
0%{
/*background: linear-gradient(transparent 0%);*/
opacity: 1;
transform: scale(2);
}
100%{
/*background: linear-gradient(transparent 0%,transparent 100%);*/
transform: scale(0.5);
opacity: 0;
}
}
.loading_3{
/*padding: 2px;*/
width: 30px;
height: 30px;
margin: auto;
background-color: #000;
position: relative;
}
.loading_3 i{
width: 8px;
height: 8px;
border-radius: 4px;
position: absolute;
/*clear: both;*/
display: block;
background-color: black;
}
.loading_3 i:nth-child(1){
top: 25px;
left: 0px;
background: red;
animation: loading-3 .8s ease-in .1s infinite;
}
.loading_3 i:nth-child(2){
top: 17px;
left: 17px;
background: #ff6600;
animation: loading-3 .8s ease-in .2s infinite;
}
.loading_3 i:nth-child(3){
top: 0px;
left: 25px;
background: yellow;
animation: loading-3 .8s ease-in .3s infinite;
}
.loading_3 i:nth-child(4){
top: -17px;
left: 17px;
background: green;
animation: loading-3 .8s ease-in .4s infinite;
}
.loading_3 i:nth-child(5){
top: -25px;
left: 0px;
background: #00ffff;
animation: loading-3 .8s ease-in .5s infinite;
}
.loading_3 i:nth-child(6){
top: -17px;
left: -17px;
background: blue;
animation: loading-3 .8s ease-in .6s infinite;
}
.loading_3 i:nth-child(7){
top: 0px;
left: -25px;
background: #ff00ff;
animation: loading-3 .8s ease-in .7s infinite;
}
.loading_3 i:nth-child(8){
top: 17px;
left: -17px;
background: #ff0099;
animation: loading-3 .8s ease-in .8s infinite;
}
</style>
<body>
<div class="box">
<div class="loader">
<i class="loading_1"></i>
</div>
<div class="loader">
<div class="loading_2">
<i></i>
<i></i>
<i></i>
<i></i>
<i></i>
<i></i>
</div>
</div>
<div class="loader">
<div class="loading_3">
<i></i>
<i></i>
<i></i>
<i></i>
<i></i>
<i></i>
<i></i>
<i></i>
</div>
</div>
</div>
</body>
</html>
CSS3学习记录之loading动画的更多相关文章
- CSS3学习笔记之loading动画
效果截图: HTML代码: <div class="divBox"> <div class="loader"> <div clas ...
- HTML5与CSS3权威指南之CSS3学习记录
title: HTML5与CSS3权威指南之CSS3学习记录 toc: true date: 2018-10-14 00:06:09 学习资料--<HTML5与CSS3权威指南>(第3版) ...
- CSS3学习总结3-3D与动画
前言:这是篇CSS3中关于3D效果与动画相关的内容. (1)在CSS3的3D效果中,需要结合透视perspective的属性才能看到3d的效果,这个属性在屏幕上实现了元素近大远小的效果,所以要使用CS ...
- 纯css3 加载loading动画特效
最近项目中要实现当页面还没有加载完给用户提示正在加载的loading,本来是想做个图片提示的,但是图片如果放大电脑的分辨率就会感觉到很虚,体验效果很不好.于是就采用css3+js实现这个loading ...
- loading动画效果记录
看到好多网页都有一个炫酷的loading动画,以前不知道怎么实现的.今天学习了一下,发现其实也很简单. 首先在学习的时候偶然遇到一个pace.js的库,非常好用.优点是,不需要挂接到任何代码,自动检测 ...
- css3波浪形loading动画
css3做个第一个动画,主要点在box-shadow和background的变化,虽然不难,但是还是有一定的技巧性的!备注下 html <div class="loading" ...
- CSS3效果:animate实现点点点loading动画效果(二)
box-shadow实现的打点效果 简介 box-shadow理论上可以生成任意的图形效果,当然也就可以实现点点点的loading效果了. 实现原理 html代码,首先需要写如下html代码以及cla ...
- 简单的CSS3 Loading动画
最终效果如图一,gif图片稍微有点卡顿,事实上代码在浏览器里执行得很流畅.这里面用到的css3技术非常简单,分别是border-radius.伪元素.css3关键帧以及animation动画. 首先整 ...
- 纯CSS3文字Loading动画特效
纯CSS3文字Loading动画特效是一款个性的loading文字加载动画. 在线演示本地下载
- 10种CSS3实现的loading动画,挑一个走吧?
这篇文章主要介绍了10种CSS3实现的loading动画,帮助大家更好的美化自身网页,完成需求,感兴趣的朋友可以了解下. HTML: 1 <body> 2 <div class=&q ...
随机推荐
- ACM-NEFU-2020大一寒假培训三(暴力)
A.二倍的问题 Description 给定2到15个不同的正整数,你的任务是计算这些数里面有多少个数对满足:数对中一个数是另一个数的两倍.比如给定1 4 3 2 9 7 18 22,得到的答案是3, ...
- VUE插值语法
目录 基本使用 基本使用 在body中创建一个标签,一般使用div,定义好id后,在script中进行定义,在前台使用{{变量}}的形式进行调用,语法如下: <!DOCTYPE html> ...
- [Linux/Apache Http]Apache Http(d)服务访问时报: 403 Forbidden You don't have permission to access /cdh/ on this server.
1 问题描述 http错误代码403:403 Forbidden 资源不可用.服务器理解客户的请求,但拒绝处理它.通常由于服务器上文件或目录的权限设置导致. 2 解决思路 胜利的果实: 确保关闭sel ...
- 网络框架重构之路plain2.0(c++23 without module) 环境
接下来本来就直接打算分享框架重构的具体环节,但重构的代码其实并没有完成太多,许多的实现细节在我心中还没有形成一个定型.由于最近回归岗位后,新的开发环境需要自己搭建,搭建的时间来说花了我整整一天的时间才 ...
- SPI-SPI主机硬件片选功能使用说明
SPI主机硬件片选功能使用说明 SPI协议最早的标准,是由摩托罗拉公司制定.在协议使用的过程中,根据实际需求可能会进行一些扩展和修改. 在一份由飞思卡尔半导体发布的SPI V4.01版本规范中,对片选 ...
- abp(net core)+easyui+efcore实现仓储管理系统——组织管理升级之下(六十二)
Abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统--ABP总体介绍(一) abp(net core)+ ...
- [Pytorch框架] 4.2.2 使用Tensorboard在 PyTorch 中进行可视化
文章目录 4.2.2 使用Tensorboard在 PyTorch 中进行可视化 Tensorboard 简介 Tensorboard 安装 页面 SCALAR IMAGES GRAPHS HISTO ...
- 浅谈 LIS 问题的几种做法
LIS 问题也就是最长不下降子序列问题,是一个经典的问题. 做法一 我们发现可以动态规划,设 \(f_i\) 表示前 \(i\) 项包含 \(i\) 的 LIS 长度. 有转移方程: \[f_i=\m ...
- 性能_2 Jmeter脚本增强
一.写脚本注意事项(回顾): 协议: http,https必须写 域名或ip: 不能有/ 请求方法: 看清楚接口文档 路径: 不要把 域名和ip再次 路径中,前后空格要看清楚 %20 空格的urlen ...
- 波场(Tron) 网页版钱包开源
之前做区块链项目太难了,很多组件.工具没有开源项目,需要自己写很麻烦. 我整理了几个自己给公司开发项目的时候,分离出来的几个工具,已经上传到 Gihub 了,感觉浏览量还行,在这里给园子里的朋友分享下 ...