CSS实现漂亮的时钟动画效果的实例代码


Posted in HTML / CSS onMarch 30, 2021

CSS实现漂亮的时钟动画效果的实例代码

我要找工作 !!!

预先准备:

首先这个动画,是根据之前的 Loading 动画制作的,Loading炫酷动画, 这些的思路都是一样的,在这个动画上进行了一次创新。

预习知识点:

  • 动画帧
  • 背景渐变
  • var() 和 calc() 的使用
  • flex布局的场景
  • 多个动画操作
  • 延迟动画的使用 

开始

核心代码分析

transform: rotate(calc(30deg * var(--i)));
        transform-origin: 0 250px;
        animation: rotate 5s linear infinite;
        animation-delay: calc(0.42s * var(--i));

根据在 HTML 上搭建的style 样式, 获取每个对应的i值, 分别计算每个时刻盒子的旋转度数, 同时我们更改他们的初始旋转点, 不然每个都只是中心旋转, 转成了一个圆形。

思路还是loading的制作思路, 只不过这次尺寸比例放大了,

CSS实现漂亮的时钟动画效果的实例代码

HTML代码搭建:

<div class="box">
            <div class="color" style="--i:1">1</div>
            <div class="color" style="--i:2">2</div>
            <div class="color" style="--i:3">3</div>
            <div class="color" style="--i:4">4</div>
            <div class="color" style="--i:5">5</div>
            <div class="color" style="--i:6">6</div>
            <div class="color" style="--i:7">7</div>
            <div class="color" style="--i:8">8</div>
            <div class="color" style="--i:9">9</div>
            <div class="color" style="--i:10">10</div>
            <div class="color" style="--i:11">11</div>
            <div class="color" style="--i:12">12</div>
            <div class="hours"></div>
            <div class="mintues"></div>
        </div>

Less代码:

* {
  margin: 0px;
  padding: 0px;
  box-sizing: border-box;
}

body {
  background: -webkit-linear-gradient(left top, pink, rgb(90, 83, 83));
  display: flex;
  min-height: 100vh;
  justify-content: center;
  align-items: center;

  section {
    height: 500px;
    width: 500px;
    .box {
      position: relative;
      height: 500px;
      width: 500px;
      display: flex;
      justify-content: center;
      align-items: center;
      border: 5px solid #e2adb6;
      border-radius: 50%;
      // border: 2px solid red;
      &:hover .color {
        animation-play-state: paused;
      }

      &::after {
        content: "";
        display: block;
        height: 25px;
        width: 25px;
        background-color: #000;
        z-index: 4;
        border-radius: 50%;
      }

      @keyframes rotate {
        0%,
        50% {
          text-shadow: none;
          color: #000;
          transform: rotate(calc(30deg * var(--i))) scale(1);
        }

        50.1%,
        100% {
          text-shadow: 0 0 10px #000,
            0 0 15px #000;
          color: #fff;
          transform: rotate(calc(30deg * var(--i))) scale(1.01);
        }
      }

      .color {
        position: absolute;
        top: 0;
        color: #f2f2f2;
        opacity: .6;
        font-size: 20px;
        transform: rotate(calc(30deg * var(--i)));
        transform-origin: 0 250px;
        line-height: 50px;
        animation: rotate 5s linear infinite;
        animation-delay: calc(0.42s * var(--i));
      }

      @keyframes change1 {
        0% {
          transform: translateY(-50%) rotate(0deg);
          transform-origin: 0 100px;
        }

        100% {
          transform: translateY(-50%) rotate(360deg);
          transform-origin: 0 100px;
        }
      }

      @keyframes change2 {
        0% {
          transform: translateY(-50%) rotate(-30deg) rotate(0deg);
          transform-origin: 0 150px;
        }

        100% {
          transform: translateY(-50%) rotate(-30deg) rotate(360deg);
          transform-origin: 0 150px;
        }
      }

      .hours {
        position: absolute;
        top: 40%;
        width: 5px;
        transform: translateY(-50%);
        height: 100px;
        background-color: #f2f2f2;
        animation: change1 24s linear infinite;

        &::after {
          content: "";
          position: absolute;
          top: 0;
          left: -10px;
          width: 20px;
          height: 20px;
          border-bottom: 5px solid #f2f2f2;
          border-right: 5px solid #f2f2f2;
          transform: rotate(-135deg);
        }
      }

      .mintues {
        position: absolute;
        top: 36%;
        width: 3px;
        height: 150px;
        background-color: #000;
        transform: translateY(-50%) rotate(-30deg);
        transform-origin: 0 150px;
        animation: change2 2s linear infinite;

        &::after {
          content: "";
          position: absolute;
          top: 0;
          left: -10px;
          // display: block;
          width: 20px;
          height: 20px;
          border-bottom: 3px solid #000;
          border-right: 3px solid #000;
          transform: rotate(-135deg);
        }
      }
    }
  }
}

到此这篇关于CSS实现漂亮的时钟动画效果的实例代码的文章就介绍到这了,更多相关css时钟动画内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章,希望大家以后多多支持三水点靠木!

 
HTML / CSS 相关文章推荐
CSS3轻松实现圆角效果
Nov 09 HTML / CSS
css 元素选择器的简单实例
May 23 HTML / CSS
CSS3实现文字描边的2种方法(小结)
Feb 14 HTML / CSS
网易微博Web App用HTML5开发的过程介绍
Jun 13 HTML / CSS
html5图片上传预览示例分享
Apr 14 HTML / CSS
HTML5 canvas基本绘图之文字渲染
Jun 27 HTML / CSS
web字体加载方案优化小结
Nov 29 HTML / CSS
微信小程序canvas实现水平、垂直居中效果
Feb 05 HTML / CSS
HTML5通过navigator.mediaDevices.getUserMedia调用手机摄像头问题
Apr 27 HTML / CSS
amazeui 验证按钮扩展的实现
Aug 21 HTML / CSS
HTML5来实现本地文件读取和写入的实现方法
May 25 HTML / CSS
HTML实现仿Windows桌面主题特效的实现
Jun 28 HTML / CSS
CSS3点击按钮圆形进度打钩效果的实现代码
完美实现CSS垂直居中的11种方法
CSS代码检查工具stylelint的使用方法详解
5个HTML5的常用本地存储方式详解与介绍
CSS实现fullpage.js全屏滚动效果的示例代码
css animation配合SVG制作能量流动效果
如何通过 CSS 写出火焰效果
You might like
php判断字符串在另一个字符串位置的方法
2014/02/27 PHP
php操作mongoDB实例分析
2014/12/29 PHP
php生成带logo二维码方法小结
2016/04/08 PHP
php使用str_shuffle()函数生成随机字符串的方法分析
2017/02/17 PHP
javascript 学习之旅 (1)
2009/02/05 Javascript
写给想学习Javascript的朋友一点学习经验小结
2010/11/23 Javascript
基于jQuery的动态表格插件
2011/03/28 Javascript
JavaScript程序员应该知道的45个实用技巧
2014/03/04 Javascript
jQuery中:selected选择器用法实例
2015/01/04 Javascript
js中键盘事件实例简析
2015/01/10 Javascript
基于JS实现省市联动效果代码分享
2016/06/06 Javascript
原生js获取iframe中dom元素--父子页面相互获取对方dom元素的方法
2016/08/05 Javascript
AngularJS指令与指令之间的交互功能示例
2016/12/14 Javascript
JS触摸与手势事件详解
2017/05/09 Javascript
bootstrap弹出层的多种触发方式
2017/05/10 Javascript
js移动端事件基础及常用事件库详解
2017/08/15 Javascript
JS实现问卷星自动填问卷脚本并在两秒自动提交功能
2020/06/17 Javascript
浅谈Vue组件及组件的注册方法
2018/08/24 Javascript
Vue 组件修改根实例的数据的方法
2019/04/02 Javascript
js 计数排序的实现示例(升级版)
2020/01/12 Javascript
vue学习笔记之slot插槽用法实例分析
2020/02/29 Javascript
[12:21]VICI vs TNC (BO3)
2018/06/07 DOTA
常见python正则用法的简单实例
2016/06/21 Python
python中模块的__all__属性详解
2017/10/26 Python
JavaScript实现一维数组转化为二维数组
2018/04/17 Python
Python OpenCV利用笔记本摄像头实现人脸检测
2020/08/20 Python
获取Pytorch中间某一层权重或者特征的例子
2019/08/17 Python
在Mac中PyCharm配置python Anaconda环境过程图解
2020/03/11 Python
Python: glob匹配文件的操作
2020/12/11 Python
美国电视购物HSN官网:HSN
2016/09/07 全球购物
2014年学校领导班子对照检查材料
2014/09/19 职场文书
2015年信贷员工作总结
2015/04/28 职场文书
2015年城管个人工作总结
2015/05/15 职场文书
2016年社区文体活动总结
2016/04/06 职场文书
PyTorch 如何检查模型梯度是否可导
2021/06/05 Python
基于PyQT5制作一个桌面摸鱼工具
2022/02/15 Python