• 技术文章 >web前端 >css教程

    如何使用纯CSS实现一个转动的自行车车轮的动画效果

    不言不言2018-09-04 11:11:38原创2360
    本篇文章给大家带来的内容是关于如何使用纯CSS实现一个转动的自行车车轮的动画效果 ,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

    效果预览

    556305927-5b4be8b265c74_articlex.gif

    源代码下载

    https://github.com/comehope/front-end-daily-challenges

    代码解读

    定义 dom,容器中包含 6 个元素:

    <div class="wheel">
        <span></span>
        <span></span>
        <span></span>
        <span></span>
        <span></span>
        <span></span>
    </div>

    居中显示:

    body {
        margin: 0;
        height: 100vh;
        display: flex;
        align-items: center;
        justify-content: center;
        background-image: linear-gradient(#555, #222);
    }

    画出轮圈:

    .wheel {
        width: 9em;
        height: 9em;
        font-size: 25px;
        border: 0.4em solid #777;
        border-radius: 50%;
        box-shadow: 0 0 0 0.5em #111;
    }

    定义辐条的样式:

    .wheel {
        display: flex;
        align-items: center;
        justify-content: center;
    }
    
    .wheel span {
        position: absolute;
        width: 8em;
        height: 1em;
        border: 0.1em solid;
        border-color: #ccc transparent;
    }

    定义变量,画出多根幅条:

    .wheel span {
        transform: rotate(calc((var(--n) - 1) * 30deg));
    }
    
    .wheel span:nth-child(1) {
        --n: 1;
    }
    
    .wheel span:nth-child(2) {
        --n: 2;
    }
    
    .wheel span:nth-child(3) {
        --n: 3;
    }
    
    .wheel span:nth-child(4) {
        --n: 4;
    }
    
    .wheel span:nth-child(5) {
        --n: 5;
    }
    
    .wheel span:nth-child(6) {
        --n: 6;
    }

    让车轮转动起来:

    .wheel span {
        animation: run 4s linear infinite;
    }
    
    @keyframes run {
        to {
            transform: rotate(calc((var(--n) - 1) * 30deg + 360deg));
        }
    }

    用伪元素画出地面上的线条:

    .wheel {
        position: relative;
    }
    
    .wheel::before {
        content: '';
        position: absolute;
        width: 15em;
        height: 0.2em;
        top: 11em;
        background-image: linear-gradient(
                to right,
                silver 0, silver 4em,
                transparent 4em, transparent 5em,
                silver 5em, silver 10em,
                transparent 10em, transparent 12em,
                silver 12em, silver 14em,
                transparent 14em, transparent 15em
            );
    }

    最后,让地面上的线条动起来,形成车轮向前走的效果:

    .wheel::before {
        background-position: 15em;
        animation: run2 6s linear infinite;
    }
    @keyframes run2 {
        to {
            background-position: -15em;
        }
    }

    大功告成!

    相关推荐:

    如何使用纯CSS实现小球变矩形背景的按钮悬停效果(附源码)

    如何使用纯CSS实现一只纸鹤(附源码)

    如何使用CSS和D3实现小鱼游动的交互动画(附代码)

    以上就是如何使用纯CSS实现一个转动的自行车车轮的动画效果的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:前端 html5 css css3 动画
    上一篇:如何使用纯CSS 实现类似于旗帜飘扬动画效果(附源码) 下一篇:如何使用纯CSS实现小球跳跃台阶的动画效果(附源码)
    PHP编程就业班

    相关文章推荐

    • 如何使用纯CSS实现一台咖啡机的效果• 如何使用纯CSS实现一颗土星的效果• 如何使用纯CSS实现切换按钮时背景的悬停动画效果• 如何使用纯CSS实现文字断开的动画效果(附源码)

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网