欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

css3动画实现时钟效果

程序员文章站 2022-05-08 17:21:49
...

效果图

css3动画实现时钟效果

html代码

css3动画实现时钟效果
源代码:`

<div class="clock">
        <div class="line line1"></div>
        <div class="line line2"></div>
        <div class="line line3"></div>
        <div class="line line4"></div>
        <div class="line line5"></div>
        <div class="line line6"></div>
        <div class="shade"></div>
        <div class="hour"></div>
        <div class="minutes"></div>
        <div class="seconds"></div>
        <div class="circle"></div>
    </div>`

css代码

css3动画实现时钟效果
css3动画实现时钟效果
css3动画实现时钟效果css3动画实现时钟效果
源代码:

`*{
    padding: 0px;
    margin: 0px;
}
/* 最外层圆 */
.clock{
 width: 500px;
 height: 500px;
 border: 20px solid black;
 border-radius:50%; 
 margin: 0 auto;  
 position: relative;
}
.line{
 width:20px;
 height: 500px;
 background-color: gray;
 position: absolute;
 left: 50%;
 transform: translate(-50%,0);
}
/* 设置6条线,并且旋转这6条线,将最外面的那个圆平分为12等分 */
.line1{
 transform: translate(-50%,0) rotate(0deg);
}
.line2{
    transform: translate(-50%,0) rotate(30deg);
}
.line3{
    transform: translate(-50%,0) rotate(60deg);
}
.line4{
    transform: translate(-50%,0) rotate(90deg);
}
.line5{
    transform: translate(-50%,0) rotate(120deg);
}
.line6{
    transform: translate(-50%,0) rotate(150deg);
}
/* 设置遮罩层,遮住6条线多余的部分,在视觉上显示出每一个整点的刻度 */
.shade{
    width: 420px;
    height: 420px;
    border-radius: 50%; 
    background-color: white;
    position:absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%,-50%);
}
/* 设置三个最中心的那个小圆 */
.circle{
    width: 50px;
    height: 50px;
    border-radius: 50%; 
    background-color: gray;
    position:absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%,-50%);
}
/* 设置时针的样式和动画 */
.hour{
    width: 15px;
    height: 150px;
    background-color: blue;
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%,-100%);
    /* 设置动画名称 */
    animation-name: move;
    /* 设置时针转一圈需要使用的时间12*60*60 */
    animation-duration: 43200s;
    /* 设置动画一直循环播放 */
    animation-iteration-count: infinite;
    /* 设置动画速度 */
    animation-timing-function: linear;
    /* 上面的几个属性也可以全部写在一起 */
    /* animation: move 43200s linear infinite; */
    /* 设置指针旋转圆点 */
    transform-origin:bottom center; 
}
/* 设置分针的样式和动画 */
.minutes{
    width: 10px;
    height: 180px;
    background-color: peachpuff;
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%,-100%);
    /* 设置动画名称 */
    animation-name: move;
    /* 设置分针转一圈需要使用的时间60*60 */
    animation-duration: 3600s;
    /* 设置动画一直循环播放 */
    animation-iteration-count: infinite;
    /* 设置动画速度 */
    animation-timing-function: linear;
    /* 上面的几个属性也可以全部写在一起 */
    /* animation: move 3600s linear infinite; */
    /* 设置指针旋转圆点 */
    transform-origin:bottom center; 
}
/* 设置秒针的样式和动画 */
.seconds{
    width: 6px;
    height: 200px;
    background-color: black;
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%,-100%);
    /* 设置动画名称 */
    animation-name: move;
    /* 设置秒针转一圈需要使用的时间60 */
    animation-duration: 60s;
    /* 设置动画一直循环播放 */
    animation-iteration-count: infinite;
    /* 设置动画速度 */
    animation-timing-function: steps(60);
    /* 上面的几个属性也可以全部写在一起 */
    /* animation: move 60s infinite steps(60); */
    /* 设置指针旋转圆点 */
    transform-origin:bottom center; 
}

/* 定义动画css */
@keyframes move{
    /* 开始状态 */
    from{
        transform:translate(-50%,-100%) rotate(0);
    }
    /* 结束状态 */
    to{
        transform:translate(-50%,-100%) rotate(360deg);
    }
}

`

(注:主要代码是CSS里面定义动画和设置动画属性,如有哪里错误,希望指正,谢谢。)