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

    CSS实现波浪移动

    php中世界最好的语言php中世界最好的语言2018-03-20 14:18:25原创1342
    这次给大家带来CSS实现波浪移动,CSS实现波浪移动的注意事项有哪些,下面就是实战案例,一起来看一下。

    在某些页面上常常看到波浪的效果,虽然只有装饰的作用,但是却让页面看上去更生动了,同时某些情况下也能起到进度条的作用,而波浪的形式却比普通进度条更美观有趣。

    如果想要实现波浪的效果,作者想到的第一个方法是通过 canvas 绘制波浪,然后用帧动画让波浪运动起来。这种方式实现的波浪效果应该是最好的,能够实现很多细节,比如控制波峰的高度、改变波浪的数量、根据前一个波浪的高度计算后一个波浪的高度等等。

    但是往往需求并不会这么复杂,产品经理和设计想要的只是一个看上去还比较美观的波浪效果而已。如果用 canvas 去做,就实在是大材小用了,耗时耗力。所以这种情况下,就可以尝试使用 css 来完成这个小需求。

    分析波浪效果

    上面是作者完成的波浪效果的其中一种(不会做 gif,就用多张图片拼贴在一起代替吧),它有两个波峰,这两个波峰动起来时,会有一种向右推进的效果。我们先一个一个来看,如果要实现一个波峰,我们应该怎么做?

    波峰具有弧度,在 css 中能够实现弧度效果的是border-raduis这个属性;而对于向右推进的效果,单个来看的话,其实可以理解为是旋转动画,我们可以通过animation来实现。

    // html
    <p class="wave"></p>
    // style
    .wave {
        width: 300px;
        height: 300px;
        border-raduis: 50%;
        background: blue;
    }

    上面代码中的.wave在页面上的显示效果是一个圆形。虽然还没有添加动画,但是我们已经可以预想到,即使旋转起来,我们视觉上看来并没有在运动。这要怎么解决呢?其实很简单,只要让每一个角的弧度都不同就行了。同时,让宽高不同,可以使绘制出来的效果更好。

    .wave {
        width: 250px;
        height: 300px;
        border-top-right-radius: 150px;
        border-top-left-radius: 150px;
        border-bottom-right-radius: 150px;
        border-bottom-left-radius: 140px;
        background: #adcbfe;
    }

    然后通过动画使这个不规则的形状动起来。

    .wave {
        width: 250px;
        height: 300px;
        border-top-right-radius: 150px;
        border-top-left-radius: 150px;
        border-bottom-right-radius: 150px;
        border-bottom-left-radius: 140px;
        background: #adcbfe;
        animation: wave 4s linear infinite;
    }
    @keyframes wave {
        0% {transform: rotate(0deg);}
        100% {transform: rotate(360deg);}
    }

    关于 css 动画的使用,可以参考之前的一篇文章:

    纯CSS实现轮播图效果

    到这里,一个波浪的实现就完成了。第二个波浪的实现步骤和第一个是相同的,但是可以对width height border-raduis animation 这些属性进行修改,使两个波浪的运动节奏不同,有快有慢有高有低,这样波浪的效果就会更真实。

    想要看源码的小伙伴可以戳下面这个链接:

    demo on github

    相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

    推荐阅读:

    重绘与重排如何使用

    Canvas制作旋转太极的动画

    以上就是CSS实现波浪移动的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:样式表 css 移动
    上一篇:CSS Gird的布局详解 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • 手把手教你使用CSS实现酷炫六边形网格背景图• 实例详解CSS渐变锯齿问题如何解决!• 另辟蹊径!看看使用CSS滤镜怎么构建圆角和波浪效果• 聊聊怎么利用 CSS 构建花式透视背景• 详解css中的比较函数(示例介绍)
    1/1

    PHP中文网