问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何用纯css实现一个动态画圆环效果

发布网友 发布时间:2022-04-22 08:14

我来回答

2个回答

热心网友 时间:2022-04-06 11:51

html结构如下:
<div class="wrap">
<div class="circle"></div>
<div class="top"></div>
<div class="bottom"></div>
</div>
实现的思路就是:
1. 首先定义外层容器大小,本例采用200x200,
.wrap{
position: relative;
width: 200px;
height: 200px;
}
2. 通过border-radius画一个圆环,这个比较简单
.circle{
height: 100%;
box-sizing: border-box;
border: 20px solid red;
border-radius: 50%;
}
效果如下:
2. 然后用上下两层挡板遮住这个圆环,通过旋转挡板将圆环慢慢露出,过程如下图所示:
通过将下层挡板旋转180deg就能够实现将下半圆慢慢画出的效果,画完以后就需要将其隐藏起来,那该如何实现呢?
这里我用了opacity这个属性,当100%时将其设置为0,同时设置animation-fill-mode: forwards;这样就隐藏了
0%{
transform: rotate( 0 );
}
99%{
transform: rotate( 180deg );
opacity: 1;
}
100%{
transform: rotate( 180deg );
opacity: 0;
}
3. 那如何显示上半圆呢?同样的思路我们对上面挡板进行旋转,通过实际效果我们可以看到,虽然上半圆露出来了,但是确把下半圆给遮挡了。
如何解决这个问题呢?
我们可以在下半圆和挡板间再放一个半圆,同时设置他们的z-index,让上面的挡板旋转时被下半圆遮住,这样就可以了。
说的有些复杂,相当于我们现在有四个元素:上挡板,下挡板,底部的大圆环,一个处在下挡板和大圆环间的半圆。
它们的z-index如下:
上挡板:1
下挡板和底部的大圆间的半圆:2
下挡板:3
为了不增加额外的元素,下挡板和底部的大圆间的半圆我们通过伪元素来实现
.circle:before{
content: '';
position: absolute;
display: block;
width: 100%;
height: 50%;
box-sizing: border-box;
top: 50%;
left: 0;
border: 20px solid red;
border-top: transparent;
border-radius: 0 0 50% 50%/ 0 0 100% 100%;
z-index: 2;
}
4. 组后再结合css3的transform动画就可以了,需要注意的是,上挡板和下挡板动画是同时开始了,所以上挡板的动画要设置一个延时,时长就是下挡板动画的时长
本例用到的知识点如下:
1. 如何画一个圆环
2. 如何画一个半圆
3. css3动画
4. 定位
最终代码如下:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>动态画一个圆环</title>
<style>
*{
margin: 0; padding: 0;
}
.wrap{
position: relative;
width: 200px;
height: 200px;
}
.circle{
height: 100%;
box-sizing: border-box;
border: 20px solid red;
border-radius: 50%;
}
.circle:before{
content: '';
position: absolute;
display: block;
width: 100%;
height: 50%;
box-sizing: border-box;
top: 50%;
left: 0;
border: 20px solid red;
border-top: transparent;
border-radius: 0 0 50% 50%/ 0 0 100% 100%;
z-index: 2;
}
.top, .bottom{
position: absolute;
left: 0px;
width: 100%;
height: 50%;
box-sizing: border-box;
background: white;
}
.top{
top: 0;
z-index: 1;
transform-origin: center bottom;
animation: 1s back-half linear 1s;
animation-fill-mode: forwards;
}
.bottom{
z-index: 3;
top: 50%;
transform-origin: center top;
animation: 1s front-half linear;
animation-fill-mode: forwards;
}
@keyframes front-half{
0%{
transform: rotate( 0 );
}
99%{
transform: rotate( 180deg );
opacity: 1;
}
100%{
transform: rotate( 180deg );
opacity: 0;
}
}
@keyframes back-half{
0%{
transform: rotate( 0 );
}
99%{
transform: rotate( 180deg );
opacity: 1;
}
100%{
transform: rotate( 180deg );
opacity: 0;
}
}
</style>
</head>
<body>
<div class="wrap">
<div class="circle"></div>
<div class="top"></div>
<div class="bottom"></div>
</div>
</body>
</html>

热心网友 时间:2022-04-06 13:09

http://www.runoob.com/css3/css3-animations.html

具体我也没试过,但是你可以琢磨一下的~
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
月经不尽褐色的是怎么回事 月经前后有褐色分泌物是什么原因 二十四节气的重要意义24节气在生活中的作用 你来我往,猜一个数字? 姓谭女孩起什么名字最优雅 男孩姓谭的好名字 黄家驹在beyond的地位 黄家驹是Beyond的主唱吗? 老板对员工的新年微信 每次感冒和一些小毛病,我都是选择运动出身汗,让它自然好,请问这种方 ... android循环属性动画结束后状态怎样变回原状态 CSS3的animation CSS animation 与 CSS transition 有何区别 css3的-webkit-animation动画执行后会变回原来的样... CSS3 动画 animation-fill-mode:forwards css3里面动画有没有用过?动画的属性有哪些?具体... css3动画学习的方向 css3动画播放后如何停止在最后的状态 如何理解animation-fill-mode及其使用 洗衣机甩干桶嗡嗡响但不转是怎么回事? 生活大爆炸中的威尔威顿的演员真实身份是 求生活大爆炸中,饰演莱纳德妈妈的演员的名字和资... 谁会是卡蕾·措科最想邀请来《生活大爆炸》客串的女... 生活大爆炸米希的演员 和大家说说你最喜欢生活大爆炸的哪个演员?好不好? 生活大爆炸第六季谢耳朵女助手亚力克斯演员是谁 生活大爆炸拉丽塔的演员名字? 这个生活大爆炸第九季新来的女的演员叫什么名字 请问。美剧”生活大爆炸”中饰演潘妮的演员,名叫?? 生活大爆炸Amy的扮演者 css3动画如何在动作结束时保持该状态不变 css3的过渡和动画会阻塞线程么,为什么 css3 animation 如何让他停在最后 CSS3动画中怎么一边移动一边旋转? css3动画怎样能从下往上慢慢升上去 代码怎么写 我梦见我要喝奶意味着什么意思? animation里的forwards到底是什么作用 css3中的动画模块持续时长后面写两个时间是什么意... 如何停止css animation动画 梦到自己亲人睡在自己身边要吃奶? 我是女生,我的女性朋友梦到了我和她一起在床上喝奶... 女孩没结婚梦见自己有孩子吃奶 C语言中变量的存储类型有哪几种,存储方式哪几种?谢喽 我的電腦剛買沒多久,為什麼老是死機啊! 浴室门如何防水防潮 浴室门防水条的特点以及如何安装浴室的防水带 卫生间木门怎么做防水 玻璃浴室门自爆如何预防 生活小妙招防止浴室门缝漏水 如何防止玻璃浴室的门爆裂?