首页 > 作文

基于HTML5+Webkit实现树叶飘落动画

更新时间:2023-04-06 11:14:47 阅读: 评论:0

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

html代码:

<!doctype html><html><head>    <title>html5树叶飘落动画</title>    <meta chart="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('images/backgroundleaves.jpg') no-repeat top left;}#leafcontainer {    position: absolute;    width: 100%;    height: 100%;}#message{    position: absolute;    top: 160px;    width: 100%;    height: 300px;    background:transparent url('images/textbackground.png') repeat-x center;    color: #5c090a;    font-size: 220%;    font-family: 'georgia';    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 > div {    position: absolute;    width: 100px;    height: 100px;    -webkit-animation-iteration-count: infinite;    -webkit-animation-direction: normal;    -webkit-animation-timing-function: linear;}#leafcontainer > div > img {     position: absolute;     width: 100px;     height: 100px;     -webkit-animation-iteration-count: infinite;     -webkit-animation-direction: alternate;     -webkit-描叙animation-timing-function: ea-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 clockwispin{    0%   { -webkit-transform: rotate(-50deg); }    100% { -webkit-transform: rotate(50deg); }}@-webkit-keyframes counterclockwispinandflip {    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('leafcontainer');    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 + 'px';}function durationvalue(value){    return value + 's';}function createaleaf(){    var leafdiv = document.createelement('div');    leafdiv.style.top = "-100px";    leafdiv.style.left = pixelvalue(randominteger(0, 500));    leafdiv.style.webkitanimationname = 'fade, drop';    var fadeanddropduration = durationvalue(randomfloat(5, 11));    leafdiv.style.webkitanimationduration = fadeanddropduration + ', ' + fadeanddropduration;    var leafdelay = durationvalue(randomfloat(0, 5));    leafdiv.style.webkitanimationdelay = leafdelay + ', ' + leafdelay;    var image = document.createelement('img');    image.src = 'images/realleaf' + randominteger(1, 5) + '.png';    var spinanimationname = (math.random() < 0.5) ? 'clockwispin' : 'counterclockwispinandflip';    image.style.webkitanimationname = spinanimationname;    var spinduration = durationvalue(randomfloat(4, 8));    image.style.webkitanimationduration = spinduration;    leafdiv.appendchild(image);    return leafdiv;}window.addeventlistener('load', init, fal);

ps:下面看下html5 canvas处理连续帧图片,下面的代码基于ie8以上

<!doctype html><html><head><meta chart="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, ur-scalable=no"/><title>canvas demo</title><script>var canvas = null;//初始化参数var img = null;var ctx = null;var imageready = fal;window.onload = function() {    var canvas = document.getelementbyid("animation_canvas");    canvas.width = canvas.parentnode.clientwidth;    canvas.height = canva咏梅古诗s.parentnode.clientheight;    if (!canvas.getcontext) {        console.log("canvas not supported. plea install a html5 compatible browr.");        return;    }       // get 2d context of canvas and draw rectangel    ctx = canvas.getcontext("2d");    ctx.fillstyle="black";    ctx.fillrect(0, 0, canvas.width, canvas.height);    console.log(canvas.height);    img = document.createelement('img');    img.src = "images/ab0.png";    img.onload = loaded();}  //保证只有图像加载后才开始循环动画function loaded() {    imageready = true;    ttimeout( update, 1000/3);//添加3帧每秒间隔计时器}function redraw() {    ctx.fillstyle="black";    ctx.fillrect(0, 0, 460, 460);    ctx.drawimage(img, 0, 0, 232, 180);}   //为了让图片以规定的速度动画,我们必须追踪已经经过的时间,然后根据分配给每帧的时间播放帧。基本步骤是://1、按每秒几帧设置动画速度(msperframe)。//2、当你循环游戏时,计算一下自最后一帧以后已经经过了多少时间(delta)。//3、如果已经经过的时间足够把动画帧播完,那么播放这一帧并设置累积delta为0。//4、如果已经经过的时间不够,那么记住(累积)delta时间(acdelta)。var frame = 0;var lastupdahelptetime = 0;var acdelta = 0;var msperframe = 200;function update() {    requestanimframe(update);    var delta = date.now() - lastupdatetime;    //console.log(date.now(),lastupdatetime);    if (acdelta > msperframe){        acdelta = 0;        redraw();        img.src='images/ab'+frame+'.png';        frame++;         if(frame >= 3) frame = 0; //当绘制后且帧推进完,计时器就会重置。    }el{        acdelta += delta;    }    lastupdatetime = date.now();}//requestanimframe的作用基本上就是ttimeout,但浏览器知道你正在渲染帧,所以它可以优化绘制循环,以及如何与剩下的页面回流。//在某些情况下,ttimeout比requestanimframe更好用,特别是对于手机。//以下是在不同的浏览器上调用requestanimframe的情况也不同,标准的检测方法如下:window.requestanimframe = (function(){    return window.requestanimationframe ||            window.webkitrequestanimationframe ||            window.mozrequestanimationframe ||            window.orequestanimationframe ||            window.msrequestanimationframe ||            function( callback ){                window.ttimeout(callback, 1000 / 3); //如果requestanimframe支持不可用,还是可以用回内置的ttimeout。            };})();</script></head><body style="position:absolute;margin:0;padding:0;width:100%;height:100%;">    <canvas id="animation_canvas"></canvas></body></html>

总结

以上所述是www.887551.com给大家介绍的基于html5+webkit实现树叶飘落动画,希望对大家有所帮助

本文发布于:2023-04-06 11:14:44,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/643410f25e49088d8f2d340dd71bb381.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:基于HTML5+Webkit实现树叶飘落动画.doc

本文 PDF 下载地址:基于HTML5+Webkit实现树叶飘落动画.pdf

标签:动画   时间   代码   计时器
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图