html、css、javascript 实现红包雨
<p><strong>先看看效果吧!</strong></p><p><strong><img src="https://img2018.cnblogs.com/common/1543983/202002/1543983-20200206080357150-1653696339.gif"></strong></p>
<p><strong>HTML代码:</strong></p>
<div class="cnblogs_code">
<pre><div id="wrapper">
<img src="images/hb/petal1.png" >
</div><br><div id="modol">
<div id="hb">
<div id="text"></div>
<div id="btn">继续抢红包</div>
</div>
</div>
</pre>
</div>
<p><strong>CSS代码:</strong></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(128, 0, 0, 1)">* </span>{<span style="color: rgba(255, 0, 0, 1)">
padding</span>:<span style="color: rgba(0, 0, 255, 1)"> 0</span>;<span style="color: rgba(255, 0, 0, 1)">
margin</span>:<span style="color: rgba(0, 0, 255, 1)"> 0</span>;
}<span style="color: rgba(128, 0, 0, 1)">
body </span>{<span style="color: rgba(255, 0, 0, 1)">
background-color</span>:<span style="color: rgba(0, 0, 255, 1)"> #fb9d3b</span>;<span style="color: rgba(255, 0, 0, 1)">
overflow</span>:<span style="color: rgba(0, 0, 255, 1)"> hidden</span>;
}
<span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)">
animation各参数意思
关键帧动画名称
动画执行时间
动画延迟时间
动画执行次数
动画的执行速度函数
动画执行方向alternate间隔的顺序 ( 0 到 100 到 0 到 100 )
reverse 反向运动 (100 到 0 )
reverse-alternate 反向间隔运动
动画执行模式forwards(动画停止在最后一个关键帧的位置)
backwards (动画第一个关键帧立即执行)
both(两者都 即立即作用第一个关键帧也停止在最后一个关键帧)
</span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(128, 0, 0, 1)">
#wrapper img </span>{<span style="color: rgba(255, 0, 0, 1)">
position</span>:<span style="color: rgba(0, 0, 255, 1)"> absolute</span>;<span style="color: rgba(255, 0, 0, 1)">
transform</span>:<span style="color: rgba(0, 0, 255, 1)"> translateY(-100%)</span>; <span style="color: rgba(0, 128, 0, 1)">/*下落动画*/</span><span style="color: rgba(255, 0, 0, 1)">
animation</span>:<span style="color: rgba(0, 0, 255, 1)"> dropDowm 3s forwards</span>; <span style="color: rgba(0, 128, 0, 1)">/*旋转动画*/</span>
}<span style="color: rgba(128, 0, 0, 1)">
@keyframes dropDowm</span>{<span style="color: rgba(255, 0, 0, 1)">
0% {
top</span>:<span style="color: rgba(0, 0, 255, 1)"> 0px</span>;<span style="color: rgba(255, 0, 0, 1)">
transform</span>:<span style="color: rgba(0, 0, 255, 1)"> translateY(-100%) rotate(0deg)</span>;
}<span style="color: rgba(128, 0, 0, 1)">
100% </span>{<span style="color: rgba(255, 0, 0, 1)">
top</span>:<span style="color: rgba(0, 0, 255, 1)"> 110%</span>;<span style="color: rgba(255, 0, 0, 1)">
transform</span>:<span style="color: rgba(0, 0, 255, 1)"> translateY(0%) rotate(360deg)</span>;
}<span style="color: rgba(128, 0, 0, 1)">
}
#modol </span>{<span style="color: rgba(255, 0, 0, 1)">
display</span>:<span style="color: rgba(0, 0, 255, 1)"> none</span>;
}<span style="color: rgba(128, 0, 0, 1)">
#modol::before </span>{<span style="color: rgba(255, 0, 0, 1)">
content</span>:<span style="color: rgba(0, 0, 255, 1)"> ''</span>;<span style="color: rgba(255, 0, 0, 1)">
position</span>:<span style="color: rgba(0, 0, 255, 1)"> fixed</span>;<span style="color: rgba(255, 0, 0, 1)">
top</span>:<span style="color: rgba(0, 0, 255, 1)"> 0</span>;<span style="color: rgba(255, 0, 0, 1)">
left</span>:<span style="color: rgba(0, 0, 255, 1)"> 0</span>;<span style="color: rgba(255, 0, 0, 1)">
right</span>:<span style="color: rgba(0, 0, 255, 1)"> 0</span>;<span style="color: rgba(255, 0, 0, 1)">
bottom</span>:<span style="color: rgba(0, 0, 255, 1)"> 0</span>;<span style="color: rgba(255, 0, 0, 1)">
background-color</span>:<span style="color: rgba(0, 0, 255, 1)"> rgba(0,0,0, 0.5)</span>;
}<span style="color: rgba(128, 0, 0, 1)">
#hb </span>{<span style="color: rgba(255, 0, 0, 1)">
width</span>:<span style="color: rgba(0, 0, 255, 1)"> 350px</span>;<span style="color: rgba(255, 0, 0, 1)">
height</span>:<span style="color: rgba(0, 0, 255, 1)"> 450px</span>;<span style="color: rgba(255, 0, 0, 1)">
border-radius</span>:<span style="color: rgba(0, 0, 255, 1)"> 20px</span>;<span style="color: rgba(255, 0, 0, 1)">
background-color</span>:<span style="color: rgba(0, 0, 255, 1)"> #e7223e</span>;<span style="color: rgba(255, 0, 0, 1)">
color</span>:<span style="color: rgba(0, 0, 255, 1)"> #fad755</span>;<span style="color: rgba(255, 0, 0, 1)">
position</span>:<span style="color: rgba(0, 0, 255, 1)"> fixed</span>;<span style="color: rgba(255, 0, 0, 1)">
left</span>:<span style="color: rgba(0, 0, 255, 1)"> 50%</span>;<span style="color: rgba(255, 0, 0, 1)">
top</span>:<span style="color: rgba(0, 0, 255, 1)"> 50%</span>;<span style="color: rgba(255, 0, 0, 1)">
margin-top</span>:<span style="color: rgba(0, 0, 255, 1)"> -225px</span>;<span style="color: rgba(255, 0, 0, 1)">
margin-left</span>:<span style="color: rgba(0, 0, 255, 1)"> -175px</span>;<span style="color: rgba(255, 0, 0, 1)">
font-size</span>:<span style="color: rgba(0, 0, 255, 1)"> 30px</span>;<span style="color: rgba(255, 0, 0, 1)">
font-weight</span>:<span style="color: rgba(0, 0, 255, 1)"> 900</span>;<span style="color: rgba(255, 0, 0, 1)">
display</span>:<span style="color: rgba(0, 0, 255, 1)"> flex</span>;<span style="color: rgba(255, 0, 0, 1)">
flex-direction</span>:<span style="color: rgba(0, 0, 255, 1)"> column</span>;<span style="color: rgba(255, 0, 0, 1)">
justify-content</span>:<span style="color: rgba(0, 0, 255, 1)"> center</span>;<span style="color: rgba(255, 0, 0, 1)">
align-items</span>:<span style="color: rgba(0, 0, 255, 1)"> center</span>;
}<span style="color: rgba(128, 0, 0, 1)">
#btn </span>{<span style="color: rgba(255, 0, 0, 1)">
background-color</span>:<span style="color: rgba(0, 0, 255, 1)"> #fad755</span>;<span style="color: rgba(255, 0, 0, 1)">
color</span>:<span style="color: rgba(0, 0, 255, 1)"> #e7223e</span>;<span style="color: rgba(255, 0, 0, 1)">
font-size</span>:<span style="color: rgba(0, 0, 255, 1)"> 18px</span>;<span style="color: rgba(255, 0, 0, 1)">
margin-top</span>:<span style="color: rgba(0, 0, 255, 1)"> 10px</span>;<span style="color: rgba(255, 0, 0, 1)">
padding</span>:<span style="color: rgba(0, 0, 255, 1)"> 10px</span>;<span style="color: rgba(255, 0, 0, 1)">
border</span>:<span style="color: rgba(0, 0, 255, 1)">none</span>;<span style="color: rgba(255, 0, 0, 1)">
outline</span>:<span style="color: rgba(0, 0, 255, 1)"> none</span>;<span style="color: rgba(255, 0, 0, 1)">
cursor</span>:<span style="color: rgba(0, 0, 255, 1)"> pointer</span>;
}</pre>
</div>
<p>JavaScript代码:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)"> init() {
</span><span style="color: rgba(0, 0, 255, 1)">var</span> dom = createDom(40<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 0, 255, 1)">var</span> wrapper = document.getElementById('wrapper'<span style="color: rgba(0, 0, 0, 1)">);
wrapper.appendChild(dom);
bindEvent();
}
</span>
<span style="color: rgba(0, 0, 255, 1)">var</span> totalMoney = 0<span style="color: rgba(0, 0, 0, 1)">;<span style="color: rgba(51, 153, 102, 1)"> //保存所有抢到的红包总金额
</span></span><span style="color: rgba(0, 0, 255, 1)">var</span> delayTime = 0<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">var</span> lastImg = <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">; <span style="color: rgba(51, 153, 102, 1)">//最后一张掉落的图片
</span></span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">创建红包结构, num代表红包个数</span>
<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)"> createDom(num) {
</span><span style="color: rgba(0, 0, 255, 1)">var</span> frag = document.createDocumentFragment();<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">创建文档碎片</span>
<span style="color: rgba(0, 0, 255, 1)">for</span>(<span style="color: rgba(0, 0, 255, 1)">var</span> i = 0; i < num; i ++<span style="color: rgba(0, 0, 0, 1)">) {
</span><span style="color: rgba(0, 0, 255, 1)">var</span> img = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> Image();
img.src </span>= './images/hb/petal' + ranNum(0,10) + '.png'<span style="color: rgba(0, 0, 0, 1)">;
img.style.left </span>= ranNum(0, window.innerWidth) + 'px'<span style="color: rgba(0, 0, 0, 1)">; <span style="color: rgba(51, 153, 102, 1)"> //让红包散列分布
</span></span><span style="color: rgba(0, 0, 255, 1)">var</span> delay = ranNum(0,100) / 10<span style="color: rgba(0, 0, 0, 1)">;
img.style.animationDelay </span>= delay + 's'<span style="color: rgba(0, 0, 0, 1)">; <span style="color: rgba(51, 153, 102, 1)">//设置红包出现时间
</span></span><span style="color: rgba(0, 0, 255, 1)">if</span>(delayTime <<span style="color: rgba(0, 0, 0, 1)"> delay) {
delayTime </span>=<span style="color: rgba(0, 0, 0, 1)"> delay;
lastImg </span>=<span style="color: rgba(0, 0, 0, 1)"> img;
}
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">data-money</span>
img.dataset.money = ranNum(0,1000) / 100<span style="color: rgba(0, 0, 0, 1)">; <span style="color: rgba(51, 153, 102, 1)">//设置每个红包的钱数</span>
frag.appendChild(img);
}
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> frag;
}
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">绑定点击事件</span>
<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)"> bindEvent() {
</span><span style="color: rgba(0, 0, 255, 1)">var</span> wrapper = document.getElementById('wrapper'<span style="color: rgba(0, 0, 0, 1)">),
imgList </span>= document.getElementsByTagName('img'<span style="color: rgba(0, 0, 0, 1)">),
modol </span>= document.getElementById('modol'<span style="color: rgba(0, 0, 0, 1)">),
text </span>= document.getElementById('text'<span style="color: rgba(0, 0, 0, 1)">),
btn </span>= document.getElementById('btn'<span style="color: rgba(0, 0, 0, 1)">);<br><br> <span style="color: rgba(51, 153, 102, 1)">//点击红包事件</span>
addEvent(wrapper, </span>'mousedown', <span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)">(e) {
</span><span style="color: rgba(0, 0, 255, 1)">var</span> event = e ||<span style="color: rgba(0, 0, 0, 1)"> window.event,
target </span>= event.target ||<span style="color: rgba(0, 0, 0, 1)"> event.srcElement,
money </span>=<span style="color: rgba(0, 0, 0, 1)"> event.target.dataset.money;
</span><span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)">(money) {
text.innerText </span>= '恭喜抢到红包' + money + '元'<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">for</span>(<span style="color: rgba(0, 0, 255, 1)">var</span> i = 0, len = imgList.length; i < len; i ++<span style="color: rgba(0, 0, 0, 1)">) {
imgList.style.animationPlayState </span>= 'paused'<span style="color: rgba(0, 0, 0, 1)">;
}
modol.style.display </span>= 'block'<span style="color: rgba(0, 0, 0, 1)">;
totalMoney </span>+=<span style="color: rgba(0, 0, 0, 1)"> Number(money);
}
});<br><br> <span style="color: rgba(51, 153, 102, 1)">//点击继续抢红包按钮事件</span>
addEvent(btn, </span>'click', <span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)">() {
modol.style.display </span>= 'none'<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">for</span>(<span style="color: rgba(0, 0, 255, 1)">var</span> i = 0, len = imgList.length; i < len; i ++<span style="color: rgba(0, 0, 0, 1)">) {
imgList.style.animationPlayState </span>= 'running'<span style="color: rgba(0, 0, 0, 1)">;
}
});<br><br> <span style="color: rgba(51, 153, 102, 1)">//监听最后一个红包动画完成</span>
addEvent(lastImg, </span>'webkitAnimationEnd', <span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)">() {
modol.style.display </span>= 'block'<span style="color: rgba(0, 0, 0, 1)">;
text.innerText </span>= '恭喜总共抢到了' + totalMoney.toFixed(2) + '元'<span style="color: rgba(0, 0, 0, 1)">;
btn.style.display </span>= 'none'<span style="color: rgba(0, 0, 0, 1)">;
});
}
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">min 到 max 之间的随机数</span>
<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)"> ranNum(min, max) {
</span><span style="color: rgba(0, 0, 255, 1)">return</span> Math.ceil(Math.random()*(max - min) +<span style="color: rgba(0, 0, 0, 1)"> min);
}
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">兼容的 添加事件函数</span>
<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)"> addEvent(elem, type, handle) {
</span><span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> (elem.addEventListener) {
elem.addEventListener(type, handle, </span><span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">);
} </span><span style="color: rgba(0, 0, 255, 1)">else</span> <span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> (elem.attachEvent) {
elem.attachEvent(</span>'on' + type, <span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)">() {
handle.call(elem);
})
} </span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)"> {
elem[</span>'on' + type] =<span style="color: rgba(0, 0, 0, 1)"> handle;
}
}
</span>
<span style="color: rgba(0, 0, 0, 1)">
init();</span></pre>
</div>
<p> </p>
<p> </p>
<p><span style="font-size: 18px"><strong><span style="color: rgba(255, 153, 204, 1)">*:ஐ٩(๑´ᵕ`)۶ஐ:*</span> </strong></span><span style="font-size: 18px">学习使我进步</span></p>
<p><span style="font-size: 18px">欢迎留言讨论哦!</span></p>
<p> <img src="https://common.cnblogs.com/images/loading.gif"></p>
<p> </p><br><br>
来源:https://www.cnblogs.com/hjysunshine/p/12267560.html
頁:
[1]