基于SVG和CSS3的炫酷飞鸟动画效果

当前位置:主页 > CSS3库 > CSS3动画 > 基于SVG和CSS3的炫酷飞鸟动画效果
基于SVG和CSS3的炫酷飞鸟动画效果
分享:

    插件介绍

    这是一款基于SVG和CSS3的炫酷飞鸟动画效果。该SVG和CSS3的飞鸟动画效果通过CSS3的帧动画,配合SVG图形,制作出逼真的飞鸟动画效果。

    浏览器兼容性

    浏览器兼容性
    时间:08-02
    阅读:
简要教程

这是一款基于SVG和CSS3的炫酷飞鸟动画效果。该SVG和CSS3的飞鸟动画效果通过CSS3的帧动画,配合SVG图形,制作出逼真的飞鸟动画效果。

使用方法

HTML代码
<div class="container">
    <div class="wrapper">
        <h1>SVG Animated Birds</h1>

        <div class="bird-container bird-container--one">
            <div class="bird bird--one"></div>
        </div>

        <div class="bird-container bird-container--two">
            <div class="bird bird--two"></div>
        </div>

        <div class="bird-container bird-container--three">
            <div class="bird bird--three"></div>
        </div>

        <div class="bird-container bird-container--four">
            <div class="bird bird--four"></div>
        </div>
    </div>
</div>
		

CSS代码

*,
*::before,
*::after {
    box-sizing: border-box;
}

h1 {
    color: black;
    font-size: 4rem;
    letter-spacing: 2px;
    text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.6);
    position: relative;
    z-index: 3;
}

.container {
    z-index: 1;
    position: relative;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 35rem;
    background-image: linear-gradient(to bottom, rgba(255, 168, 76, 0.6) 0%, rgba(255, 123, 13, 0.6) 100%), url(./img/photo-1446824505046-e43605ffb17f.jpg);
    background-blend-mode: soft-light;
    background-size: cover;
    background-position: center center;
    padding: 2rem;
}

.bird {
    background-image: url(./img/bird-cells-new.svg);
    background-size: auto 100%;
    width: 88px;
    height: 125px;
    will-change: background-position;
    animation-name: fly-cycle;
    animation-timing-function: steps(10);
    animation-iteration-count: infinite;
}

.bird--one {
    animation-duration: 1s;
    animation-delay: -0.5s;
}

.bird--two {
    animation-duration: 0.9s;
    animation-delay: -0.75s;
}

.bird--three {
    animation-duration: 1.25s;
    animation-delay: -0.25s;
}

.bird--four {
    animation-duration: 1.1s;
    animation-delay: -0.5s;
}

.bird-container {
    position: absolute;
    top: 20%;
    left: -10%;
    transform: scale(0) translateX(-10vw);
    will-change: transform;
    animation-name: fly-right-one;
    animation-timing-function: linear;
    animation-iteration-count: infinite;
}

.bird-container--one {
    animation-duration: 15s;
    animation-delay: 0;
}

.bird-container--two {
    animation-duration: 16s;
    animation-delay: 1s;
}

.bird-container--three {
    animation-duration: 14.6s;
    animation-delay: 9.5s;
}

.bird-container--four {
    animation-duration: 16s;
    animation-delay: 10.25s;
}

@keyframes fly-cycle {
    100% {
        background-position: -900px 0;
    }
}

@keyframes fly-right-one {
    0% {
        transform: scale(0.3) translateX(-10vw);
    }

    10% {
        transform: translateY(2vh) translateX(10vw) scale(0.4);
    }

    20% {
        transform: translateY(0vh) translateX(30vw) scale(0.5);
    }

    30% {
        transform: translateY(4vh) translateX(50vw) scale(0.6);
    }

    40% {
        transform: translateY(2vh) translateX(70vw) scale(0.6);
    }

    50% {
        transform: translateY(0vh) translateX(90vw) scale(0.6);
    }

    60% {
        transform: translateY(0vh) translateX(110vw) scale(0.6);
    }

    100% {
        transform: translateY(0vh) translateX(110vw) scale(0.6);
    }
}

@keyframes fly-right-two {
    0% {
        transform: translateY(-2vh) translateX(-10vw) scale(0.5);
    }

    10% {
        transform: translateY(0vh) translateX(10vw) scale(0.4);
    }

    20% {
        transform: translateY(-4vh) translateX(30vw) scale(0.6);
    }

    30% {
        transform: translateY(1vh) translateX(50vw) scale(0.45);
    }

    40% {
        transform: translateY(-2.5vh) translateX(70vw) scale(0.5);
    }

    50% {
        transform: translateY(0vh) translateX(90vw) scale(0.45);
    }

    51% {
        transform: translateY(0vh) translateX(110vw) scale(0.45);
    }

    100% {
        transform: translateY(0vh) translateX(110vw) scale(0.45);
    }
}
		

codepen网址:https://codepen.io/matchboxhero/details/RLebOY