首页 >web前端 >H5教程 >使用Html5实现树叶飘落的效果

使用Html5实现树叶飘落的效果

迷茫
迷茫原创
2017-03-26 15:41:343916浏览

实现如图所示的东西效果(落叶下落):

000.jpg

html代码:

<!DOCTYPE html>
<html>
<head>
    <title>HTML5树叶飘落动画</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=500px, initial-scale=0.64">
    <link rel="stylesheet" href="leaves.css" type="text/css">
    <script src="leaves.js" type="text/javascript"></script>
</head>
<body>
    <div id="container">
        <div id="leafContainer"></div>
        <div id="message">
            <em>这是基于webkit的落叶动画</em>
        </div>
    </div>  
</body>
</html>

css代码:

body{
    background-color: #4E4226;
}#container {
    position: relative;
    height: 700px;
    width: 500px;
    margin: 10px auto;
    overflow: hidden;
    border: 4px solid #5C090A;
    background: #4E4226 url(&#39;images/backgroundLeaves.jpg&#39;) no-repeat top left;
}#leafContainer {
    position: absolute;
    width: 100%;
    height: 100%;
}#message{
    position: absolute;
    top: 160px;
    width: 100%;
    height: 300px;
    background:transparent url(&#39;images/textBackground.png&#39;) repeat-x center;
    color: #5C090A;
    font-size: 220%;
    font-family: &#39;Georgia&#39;;
    text-align: center;
    padding: 20px 10px;
    -webkit-box-sizing: border-box;
    -webkit-background-size: 100% 100%;
    z-index: 1;
}em {
    font-weight: bold;
    font-style: normal;
}#leafContainer > p {
    position: absolute;
    width: 100px;
    height: 100px;
    -webkit-animation-iteration-count: infinite;
    -webkit-animation-direction: normal;
    -webkit-animation-timing-function: linear;
}#leafContainer > p > img {
     position: absolute;
     width: 100px;
     height: 100px;
     -webkit-animation-iteration-count: infinite;
     -webkit-animation-direction: alternate;
     -webkit-animation-timing-function: ease-in-out;
     -webkit-transform-origin: 50% -100%;
}@-webkit-keyframes fade{
    0%   { opacity: 1; }
    95%  { opacity: 1; }
    100% { opacity: 0; }}

@-webkit-keyframes drop{
    0%   { -webkit-transform: translate(0px, -50px); }
    100% { -webkit-transform: translate(0px, 650px); }}

@-webkit-keyframes clockwiseSpin{
    0%   { -webkit-transform: rotate(-50deg); }
    100% { -webkit-transform: rotate(50deg); }}


@-webkit-keyframes counterclockwiseSpinAndFlip 
{
    0%   { -webkit-transform: scale(-1, 1) rotate(50deg); }
    100% { -webkit-transform: scale(-1, 1) rotate(-50deg); }}

js代码:

const NUMBER_OF_LEAVES = 30;
function init(){
    var container = document.getElementById(&#39;leafContainer&#39;);
    for (var i = 0; i < NUMBER_OF_LEAVES; i++) {
        container.appendChild(createALeaf());
    }
}

function randomInteger(low, high){
    return low + Math.floor(Math.random() * (high - low));
}

function randomFloat(low, high){
    return low + Math.random() * (high - low);
}

function pixelValue(value){
    return value + &#39;px&#39;;
}

function durationValue(value){
    return value + &#39;s&#39;;
}

function createALeaf(){
    var leafDiv = document.createElement(&#39;div&#39;);
    leafDiv.style.top = "-100px";
    leafDiv.style.left = pixelValue(randomInteger(0, 500));
    leafDiv.style.webkitAnimationName = &#39;fade, drop&#39;;
    var fadeAndDropDuration = durationValue(randomFloat(5, 11));
    leafDiv.style.webkitAnimationDuration = fadeAndDropDuration + &#39;, &#39; + fadeAndDropDuration;
    var leafDelay = durationValue(randomFloat(0, 5));
    leafDiv.style.webkitAnimationDelay = leafDelay + &#39;, &#39; + leafDelay;
    
    var image = document.createElement(&#39;img&#39;);
    image.src = &#39;images/realLeaf&#39; + randomInteger(1, 5) + &#39;.png&#39;;
    var spinAnimationName = (Math.random() < 0.5) ? &#39;clockwiseSpin&#39; : &#39;counterclockwiseSpinAndFlip&#39;;
    image.style.webkitAnimationName = spinAnimationName;
    var spinDuration = durationValue(randomFloat(4, 8));
    image.style.webkitAnimationDuration = spinDuration;

    leafDiv.appendChild(image);
    return leafDiv;
}

window.addEventListener(&#39;load&#39;, init, false);

以上是使用Html5实现树叶飘落的效果的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn