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垂直手风琴菜单
Jun 28 HTML / CSS
一款纯css3实现简单的checkbox复选框和radio单选框
Nov 05 HTML / CSS
CSS3打造百度贴吧的3D翻牌效果示例
Jan 04 HTML / CSS
Css3实现无缝滚动防抖
Sep 14 HTML / CSS
html5表单及新增的改良元素详解
Jun 07 HTML / CSS
Canvas引入跨域的图片导致toDataURL()报错的问题的解决
Sep 19 HTML / CSS
canvas绘图按照contain或者cover方式适配并居中显示
Feb 18 HTML / CSS
Html5与App的通讯方式详解
Oct 24 HTML / CSS
iframe跨域的几种常用方法
Nov 11 HTML / CSS
Html5页面获取微信公众号的openid的方法
May 12 HTML / CSS
详解如何解决H5开发使用wx.hideMenuItems无效果不生效
Jan 20 HTML / CSS
详解CSS3浏览器兼容
Dec 24 HTML / CSS
CSS3点击按钮圆形进度打钩效果的实现代码
完美实现CSS垂直居中的11种方法
CSS代码检查工具stylelint的使用方法详解
5个HTML5的常用本地存储方式详解与介绍
CSS实现fullpage.js全屏滚动效果的示例代码
css animation配合SVG制作能量流动效果
如何通过 CSS 写出火焰效果
You might like
重置版战役片段
2020/04/09 魔兽争霸
PHP文件读写操作之文件读取方法详解
2011/01/13 PHP
PHP魔术引号所带来的安全问题分析
2014/07/15 PHP
php使用Jpgraph绘制饼状图的方法
2015/06/10 PHP
PHP查找与搜索数组元素方法总结
2015/06/12 PHP
javascript事件函数中获得事件源的两种不错方法
2014/03/17 Javascript
js继承call()和apply()方法总结
2014/12/08 Javascript
JS实现表单中checkbox对勾选中增加边框显示效果
2015/08/21 Javascript
jQuery实现ctrl+enter(回车)提交表单
2015/10/19 Javascript
JS动态插入并立即执行回调函数的方法
2016/04/21 Javascript
jQuery实现字符串全部替换的方法
2016/12/12 Javascript
node.js 和HTML5开发本地桌面应用程序
2016/12/13 Javascript
JS基于面向对象实现的拖拽功能示例
2016/12/20 Javascript
Angular2使用Guard和Resolve进行验证和权限控制
2017/04/24 Javascript
微信小程序开发之toast提示插件使用示例
2017/06/08 Javascript
Vue.js常用指令之循环使用v-for指令教程
2017/06/27 Javascript
node中的cookie的具体使用
2018/09/13 Javascript
Vue实现调节窗口大小时触发事件动态调节更新组件尺寸的方法
2018/09/15 Javascript
JS数组求和的常用方法总结【5种方法】
2019/01/14 Javascript
在微信小程序中保存网络图片
2019/02/12 Javascript
Vuejs学习笔记之使用指令v-model完成表单的数据双向绑定
2019/04/29 Javascript
javascript实现蒙版与禁止页面滚动
2020/01/11 Javascript
整理 node-sass 安装失败的原因及解决办法(小结)
2020/02/19 Javascript
pycharm下查看python的变量类型和变量内容的方法
2018/06/26 Python
python实现网站用户名密码自动登录功能
2019/08/09 Python
利用Python产生加密表和解密表的实现方法
2019/10/15 Python
用pandas划分数据集实现训练集和测试集
2020/07/20 Python
使用CSS3来匹配横屏竖屏的简单方法
2015/08/04 HTML / CSS
Sephora丝芙兰澳洲官方网站:国际知名化妆品购物
2016/10/27 全球购物
菲律宾购物网站:Lazada菲律宾
2018/04/05 全球购物
伯克斯奥特莱斯:Burkes Outlet
2019/03/30 全球购物
项目建议书
2015/02/04 职场文书
房地产销售主管岗位职责
2015/02/13 职场文书
2016重阳节红领巾广播稿
2015/12/18 职场文书
导游词之河北野三坡
2019/12/11 职场文书
Vue.Draggable实现交换位置
2022/04/07 Vue.js