是一个纯CSS实现的Loading特效,包括两个方块绕圈的动画效果。该特效可以被用于网站、应用程序等需要加载时的等待效果。
使用CSS3的@keyframes属性实现动画效果。通过调整,可以实现不同的动画效果。在这个Loading特效中,我们使用了transform属性来旋转、移动和缩放方块,从而使得两个方块可以错开绕圈。
<div class="loading">
<div></div>
<div></div>
</div>
<style>
.loading,
.loading > div {
position: relative;
box-sizing: border-box;
}
.loading {
display: block;
font-size: 0;
color: #000;
}
.loading.la-dark {
color: #333;
}
.loading > div {
display: inline-block;
float: none;
background-color: currentColor;
border: 0 solid currentColor;
}
.loading {
width: 32px;
height: 32px;
}
.loading > div {
position: absolute;
top: 0;
left: 0;
width: 14px;
height: 14px;
margin-top: -7px;
margin-left: -7px;
border-radius: 0;
animation: cube-transition 1.6s 0s infinite ease-in-out;
}
.loading > div:last-child {
animation-delay: -0.8s;
}
.loading.la-sm {
width: 16px;
height: 16px;
}
.loading.la-sm > div {
width: 6px;
height: 6px;
margin-top: -3px;
margin-left: -3px;
}
.loading.la-2x {
width: 64px;
height: 64px;
}
.loading.la-2x > div {
width: 28px;
height: 28px;
margin-top: -14px;
margin-left: -14px;
}
.loading.la-3x {
width: 96px;
height: 96px;
}
.loading.la-3x > div {
width: 42px;
height: 42px;
margin-top: -21px;
margin-left: -21px;
}
@keyframes cube-transition {
25% {
top: 0;
left: 100%;
transform: scale(0.5) rotate(-90deg);
}
50% {
top: 100%;
left: 100%;
transform: scale(1) rotate(-180deg);
}
75% {
top: 100%;
left: 0;
transform: scale(0.5) rotate(-270deg);
}
100% {
top: 0;
left: 0;
transform: scale(1) rotate(-360deg);
}
}
</style>
这个纯CSS实现的俩方块绕圈的Loading特效简单易用,可以为您的网站或应用程序增添一份动感和趣味。希望这个特效对您有所帮助!
1.先定义html标签,.container就是底层大盒子,.item就是一个小方块,后面将通过js快速生成:
<div class="container">
<div class="item"></div>
</div>
2.定义全局css样式,.container的css样式:
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
.container {
position: fixed;
width: 100vw;
height: 100vh;
background-color: rgb(32, 32, 32);
display: flex;
flex-wrap: wrap;
}
vw (viewport width) vh (viewport height) 是视窗的大小,100vw = 100%视窗宽度 100vh = 100%视窗高度;
position:fixed;固定定位;
display: flex; flex布局;
flex-wrap: wrap; 换行;
3.每个小方块.item的css样式,并设置animation动画效果:
.item {
width: 5vw;
height: 5vh;
background-color: white;
animation: move 1.5s ease-in-out forwards;
opacity: 0;
overflow: hidden;
}
@keyframes move {
0% {
opacity: 0;
transform: scale(0) translateY(1000px);
border-radius: 50%;
}
100% {
opacity: 1;
transform: scale(1) translateY(0);
background-image: url("img/52.jpg");
background-attachment: fixed;
background-size: cover;
border-radius: 0;
}
}
animation: move 1.5s ease-in-out forwards; 其中的forwards表示保持动画结束的状态效果;
opacity:0;透明度为0;
transform: scale(0) translateY(1000px); scale为缩放,translateY为Y轴方向偏移;
background-attachment:fixed;当页面的其余部分滚动时,背景图像不会移动;
background-size: cover; 把背景图像扩展至足够大,以使背景图像完全覆盖背景区域。
4.js快速生成多个小方块:
因为每个小方块大小是5×5,而.container大小为100×100,所以需要400个小方块,标签已有一个,还需399个。
// 获取元素
var container = document.querySelector(".container");
var items = document.getElementsByClassName("item");
for (let i = 1; i < 400; i++) {
// 创建小方块div
container.innerHTML += "<div class='item'></div>";
//设置css样式设置动画延迟
items[i].style.cssText = `animation-delay: ${i * 0.05}s;`;
}
注意不能用itemsquerySelectorAll获取全部小方块,因为得到的是一个静态列表,它不会对dom结构进行动态查询,不会再次重新获取。getElementsByClassName是动态查询的过程,会随着dom结构的变化,得到的结点列表也会发生变化。
也可以通过以下方法创建小方块:
var a = document.createElement("div");
a.classList.add("item");
container.appendChild(a);
家好,本篇文章分享小方块来回旋转动画特效,欢迎参考和指正。
效果图:
小方块来回旋转动画特效
HTML代码:
<div class="tui-demo-2"></div>
CSS代码:
<style type="text/css"> .tui-demo-2 { width: 100px; height: 100px; margin: 50px auto; background: #FFB800; animation: tui-demo-2 2.0s infinite; } @keyframes tui-demo-2 { 0% { transform: rotate(0deg); } 50% { transform: rotate(90deg); } 100% { transform: rotate(0deg); } } </style>
知识点:
animation:是CSS3的动画属性,这里把animation绑定到tui-demo-2元素上,并指定该动画需要2.0秒完成,infinite则表示无限次播放该动画。
@keyframes:该规则表示动画可以逐步从一个CSS样式改变为另一个CSS样式。这里0%是动画开头,100%是动画结束。
transform:该属性应用于2D元素或3D元素的转换,允许元素发生旋转,缩放,移动,倾斜等效果。rotate定义2D旋转,可以配置旋转角度。
最后注意下浏览器兼容问题,-webkit-,-ms-或-moz-,有问题可以留言,大家一起学习HTML+CSS基础入门开发。
*请认真填写需求信息,我们会在24小时内与您取得联系。