• 简单钟表动画


    目录

    需求

    思路分析和代码实现

    实现效果


    需求

    经过三四天的奋战,做的需求都提测了,现在小歇一下。写个钟表CSS动画玩玩。

    没有素材,所以做出来的都是示意。如果需要,可以添加个钟表的背景图片。此外,由于思路类似,我只做了时针和秒针。

    思路分析和代码实现

    其实要实现这个很简单。放一个div作为容器,类名是container,并为它开启相对定位。以秒针为例,在container中放一个容器second,作为秒针的容器。再在second中放置一个pointer,作为真正的秒针。

    这个地方我是这样设计的:second作为一个正方形容器,在container中居中显示;pointer作为一个细长的指针,居于正方形的上半部分的正中间,这样,指针的顶端就是正方形的上边界,指针的底端就是正方形的及核心。这样,使用动画旋转的时候,可以以正方形的中心去旋转second,而旋转的中心就是指针的底端!

    我觉得这样可以抛弃直接旋转指针的思路。其实,直接旋转指针也是可以的,只是要把旋转的中心改成指针的底端,效果一样的。

    这样一来,定义了keyframes,在秒针和时针上设置不同的用时,就可以了。

    有了思路,直接写代码:

    html部分

    1. <div class="container">
    2. <div class="hour">
    3. <div class="pointer">div>
    4. div>
    5. <div class="second">
    6. <div class="pointer">div>
    7. div>
    8. div>

    css部分

    1. * {
    2. margin: 0;
    3. padding: 0;
    4. }
    5. .container {
    6. width: 300px;
    7. height: 300px;
    8. background-color: antiquewhite;
    9. border-radius: 50%;
    10. margin: auto;
    11. margin-top: 200px;
    12. position: relative;
    13. }
    14. .hour,.second {
    15. position: absolute;
    16. top: 0;
    17. left: 0;
    18. right: 0;
    19. bottom: 0;
    20. margin: auto;
    21. }
    22. .hour{
    23. width: 200px;
    24. height: 200px;
    25. animation: pointerAnimation 3600s linear infinite normal both;
    26. }
    27. .second{
    28. width: 300px;
    29. height: 300px;
    30. animation: pointerAnimation 60s linear infinite normal both;
    31. }
    32. .hour .pointer{
    33. width: 2px;
    34. height: 100px;
    35. background-color: white;
    36. position: absolute;
    37. top: 0;
    38. left: 50%;
    39. transform: translateX(-50%);
    40. }
    41. .second .pointer{
    42. width: 2px;
    43. height: 150px;
    44. background-color: yellow;
    45. position: absolute;
    46. top: 0;
    47. left: 50%;
    48. transform: translateX(-50%);
    49. }
    50. @keyframes pointerAnimation{
    51. from{
    52. transform: rotateZ(0);
    53. }
    54. to{
    55. transform: rotateZ(360deg);
    56. }
    57. }

    实现效果

    效果过于简单,我就不放动图了。。。甚至都没什么好总结的哈哈哈。

    提示文章质量不佳!

  • 相关阅读:
    vue+element模仿实现PC端网易云,对接第三方接口
    Pycharm中Debug的高级技巧
    MySQL简介
    《代码大全2》第16章 控制循环
    Redis管理客户端,兼容Windows、Mac、Linux
    信息收集小技巧
    Word目录中自动添加自定义样式的多级标题的方法
    expect 使用手册命令详解
    windows上运行qemu仿真stm32板子a9板子实例
    北斗——1、北斗时空智能主机
  • 原文地址:https://blog.csdn.net/weixin_45792464/article/details/126164099