分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

css实现圆形倒计时效果

发布时间:2023-09-06 02:17责任编辑:董明明关键词:暂无标签

实现思想:

1.最外层包裹内部的div1(.box)

2.内部左右两边div2(.left_box和.right_box),宽度为div1的一半,通过overflow:hidden隐藏其内部的div

3.在左右两个div2中各有一个div3(.left_item和.right_item),div3在div2中旋转,旋转超出div2后被隐藏实现倒计时的效果

4.遮罩div4(.mask),用来遮住中心部分,形成进度“条”的效果

css代码:

 ???.box{ ?????/* 最外层的盒子 */ ?????width:200px; ?????height:200px; ?????margin: 0 auto; ?????position: relative; ?????overflow: hidden; ?????border-radius: 50%;
?????background-color: pink; ???} ???.left_box,.right_box{ ?????/* ????????左右两边用于 隐藏 旋转的div的盒子 ????????通过overflow来隐藏内部div旋转出去的部分 ?????*/ ?????position: absolute; ?????top: 0; ?????width:100px; ?????height:200px; ?????overflow: hidden; ?????z-index: 1; ???} ???.left_box{ ?????left: 0; ???} ???.right_box{ ?????right: 0; ???} ???.left_item,.right_item{ ?????/*
??????这是需要旋转的div(没有被mask遮盖展示出来的部分作为倒计时的线条)
??????为了方便理解,下面用deeppink和cyan分别设置了左右两边div的颜色
?????*/ ?????width: 100px; ?????height: 200px; ???} ???.left_item{ ?????/* ??????1.设置圆角,圆角大小为高度的一半 ??????2.这只旋转的中心店,这是左边圆,中心点设置到右边中心点,右边圆则设置到左边中心点 ??????*/ ?????border-top-left-radius: 100px; ?????border-bottom-left-radius: 100px; ?????-webkit-transform-origin: right center; ?????transform-origin: right center; ?????-webkit-animation: loading_left 3s linear; ?????background-color: deeppink; ???} ???.right_item{ ?????border-top-right-radius: 100px; ?????border-bottom-right-radius: 100px; ?????-webkit-transform-origin: left center; ?????transform-origin: left center; ?????-webkit-animation: loading_right 3s linear; ?????background-color: cyan; ???} ???.mask{ ?????/* 遮住div多余的部分,呈现出线条的效果 */ ?????position: absolute; ?????top: 15px; ?????left: 15px; ?????right: 15px; ?????bottom: 15px; ?????z-index: 2; ?????border-radius: 50%; ?????background-color: #fff; ???} ???@-webkit-keyframes loading_left{ ???????0%{ ???????????-webkit-transform: rotate(0deg); ???????} ???????50%{ ???????????-webkit-transform: rotate(0deg); ???????} ???????100%{ ???????????-webkit-transform: rotate(180deg); ???????} ???} ???@-webkit-keyframes loading_right{ ???????0%{ ?????????-webkit-transform: rotate(0deg); ???????} ???????50%{ ?????????-webkit-transform: rotate(180deg); ???????} ???????100%{ ?????????-webkit-transform: rotate(180deg); ???????} ???}

html代码:

<div class="box"> ??<div class="left_box"> ????<div class="left_item"></div> ??</div> ??<div class="right_box"> ????<div class="right_item"></div> ??</div> ??<div class="mask"></div> </div>
.box{
?????/* 最外层的盒子 */
?????background: pink;
?????width:200px;
?????height:200px;
?????margin: 0 auto;
?????position: relative;
?????overflow: hidden;
?????border-radius: 50%;
???}
???.left_box,.right_box{
?????/*
???????左右两边用于 隐藏 旋转的div的盒子
???????通过overflow来隐藏内部div旋转出去的部分
?????*/
?????position: absolute;
?????top: 0;
?????width:100px;
?????height:200px;
?????overflow: hidden;
?????z-index: 1;
???}
???.left_box{
?????left: 0;
???}
???.right_box{
?????right: 0;
???}
???.left_item,.right_item{
?????/* 这是需要旋转的div(没有被mask遮盖展示出来的部分作为倒计时的线条) */
?????width: 100px;
?????height: 200px;
???}
???.left_item{
?????/*
??????1.设置圆角,圆角大小为高度的一半
??????2.这只旋转的中心店,这是左边圆,中心点设置到右边中心点,右边圆则设置到左边中心点
??????*/
?????border-top-left-radius: 100px;
?????border-bottom-left-radius: 100px;
?????-webkit-transform-origin: right center;
?????transform-origin: right center;
?????-webkit-animation: loading_left 3s linear;
?????background: deeppink;
???}
???.right_item{
?????border-top-right-radius: 100px;
?????border-bottom-right-radius: 100px;
?????-webkit-transform-origin: left center;
?????transform-origin: left center;
?????-webkit-animation: loading_right 3s linear;
?????background: cyan;
???}
???.mask{
?????/* 遮住div多余的部分,呈现出线条的效果 */
?????position: absolute;
?????top: 15px;
?????left: 15px;
?????right: 15px;
?????bottom: 15px;
?????z-index: 2;
?????border-radius: 50%;
?????background-color: #fff;
???}
???@-webkit-keyframes loading_left{
???????0%{
???????????-webkit-transform: rotate(0deg);
???????}
???????50%{
???????????-webkit-transform: rotate(0deg);
???????}
???????100%{
???????????-webkit-transform: rotate(180deg);
???????}
???}
???@-webkit-keyframes loading_right{
???????0%{
?????????-webkit-transform: rotate(0deg);
???????}
???????50%{
?????????-webkit-transform: rotate(180deg);
???????}
???????100%{
?????????-webkit-transform: rotate(180deg);
???????}
???}

css实现圆形倒计时效果

原文地址:https://www.cnblogs.com/sunchundong/p/9760153.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved