iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >基于JavaScript如何实现除夕烟花秀与随机祝福语
  • 507
分享到

基于JavaScript如何实现除夕烟花秀与随机祝福语

2023-06-29 00:06:05 507人浏览 泡泡鱼
摘要

这篇文章主要介绍基于javascript如何实现除夕烟花秀与随机祝福语,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!项目截图进入后的界面点击按钮点击之后的动画烟花结束后的界面代码实现涉及的技术:HTML5多媒体,CS

这篇文章主要介绍基于javascript如何实现除夕烟花秀与随机祝福语,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

项目截图

进入后的界面

基于JavaScript如何实现除夕烟花秀与随机祝福语

点击按钮

基于JavaScript如何实现除夕烟花秀与随机祝福语

点击之后的动画

基于JavaScript如何实现除夕烟花秀与随机祝福语

烟花结束后的界面

基于JavaScript如何实现除夕烟花秀与随机祝福语

代码实现

涉及的技术:HTML5多媒体,CSS定位,动画,js面向对象Jquery动画、事件

html代码

<!DOCTYPE html><html lang="cn"><head>    <meta charset="UTF-8">    <meta Http-equiv="X-UA-Compatible" content="IE=edge">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>2022</title>    <link rel="shortcut icon" href="./images/favicon.ico" rel="external nofollow"  type="image/x-icon">    <link rel="stylesheet" href="./css/index.css" rel="external nofollow" >    <script src="./js/jquery-3.6.0.min.js"></script>    <script src="./js/index.js"></script></head><body>    <!--这个是点击按钮的盒子,算是烟花筒 -->    <div class="he">        <!--这个是点击按钮,点击以后就开始做一些处理 -->        <button id="fire"></button>    </div>    <!--这个是烟花哦-->    <div class="box">    </div>    <!--这个是烟花结束后,出现在上面的2022图片    <div class="title"></div>    <!--这个就是随机生成祝福语的大盒子啦-->    <div class="greetings">        <!--可以通过这个div来动态的呈现祝福语,默认第一个是虎虎生威-->        <div class="yu"><span id="blessing">虎虎生威</span></div>        <!--这个是点击按钮,点击后停下快闪的祝福语-->        <button id="btn">查看我的祝福</button>    </div>    <audio src="./meiti/chuxi.mp3"></audio>    <audio src="./meiti/yanhua.mp3"></audio></body></html>

上面的html代码结构就是,烟花盒(.he)、点火按钮(.fire)、烟花(.box)、显示2022虎年loGo(.title)、祝福语盒子(.greetings)、显示祝福的具体容器(.yu 和 .blessing)、暂停快速显示的按钮(.btn)、两个音频。一共10个重要元素。

CSS代码

* {    margin: 0;    padding: 0;}@font-face {    font-family: 'djs';    src: url(../font/datk6.ttf);}body {        overflow: hidden;    background: #F35708 url(../images/hebj.png)no-repeat center center/100% 100%;}.he {    position: absolute;    width: 160px;    height: 120px;    background: url(../images/hebj.png)no-repeat center center/100% 100%;    border-radius: 5px 5px 0 0;    bottom: 0;    left: 50%;    transfORM: translateX(-50%);    z-index: 2;    transition: all 3s;}.he button {    position: absolute;    bottom: 20px;    left: 50%;    transform: translateX(-50%);    border: 1px solid #C33830;    box-shadow: 0 0 5px #D7A057, 0 0 2px #D7A057 inset;    border-radius: 5px;    width: 50px;    height: 50px;    background: transparent url(../images/huzhua.png)no-repeat center center/100% 100%;    font-size: 12px;    color: yellow;    font-weight: 700;}.box {    position: absolute;    width: 50px;    height: 50px;    border-radius: 50%;    overflow: hidden;    transition: all;    top: calc(100% - 50px);    left: 50%;    transform: translateX(-50%);}.box span {    position: absolute;    display: inline-block;    border-radius: 50%;}.fire {    left: 50%;    transform: translateX(-50%);    animation: suofang 4.5s linear;}.title {    position: absolute;    width: 300px;    height: 150px;    background: url(../images/hunian.png)no-repeat center center/100% 100%;    top: 10px;    left: 50%;    transform: translateX(-50%);    transition: all 1s;    display: none;}.greetings {    position: absolute;    top: 180px;    width: 260px;    height: 400px;    background: #FFE5C8;    left: 50%;    transform: translateX(-50%);    display: flex;    flex-direction: column;    justify-content: center;    padding: 30px;    box-sizing: border-box;    border-radius: 20px;    overflow: hidden;    opacity: 0;}.yu {    display: flex;    justify-content: center;    align-items: center;    writing-mode: tb;    width: 100%;    height: 85%;    border-radius: 10px;    background: url(../images/zhufu.png)no-repeat center center/100% 100%;}#blessing {    font-size: 50px;    font-weight: 800;    color: rgba(0, 0, 0, 0.74);    letter-spacing: 6px;    font-family: 'djs';}#btn {    width: 100%;    height: 15%;    margin-top: 50px;    border-radius: 10px;    border: 1px solid #D7A057;    color: #D7A057;    font-size: 14px;    font-weight: 700;    background: url(../images/btn.png)no-repeat center center/100% 100%;}@keyframes suofang {    0% {        transform: scale(1);        opacity: 1;    }    50% {        transform: scale(20);        opacity: .5;    }    100% {        transform: scale(100);        opacity: 0;        display: none;    }}

以上的css代码,可以看到,我使用了大量的定位。这是因为后面的动画都需要基于定位的left和top来实现。

好啦结构和样式都有了,我们就来看看js(行为)吧

javaScript代码

生成烟花球和焰火

$(function() {//封装一个生成随机数的函数,方便后期随机生成烟花焰火的个数,大小,位置    function rand(min, max) {        return Math.random() * (max - min) + min;    }    //创建一个构造函数,构造函数中调用随机函数,生成500-1000之间随机的随机数,用于生成焰火的个数    function Birth() {        this.sum = parseInt(rand(500, 1000));    }    //在构造函数的原型对象上添加随机生成位置,大小的函数,里面调用之前定义的随机函数    Birth.prototype.suiji = function() {        //随机生成一个X轴坐标        this.x = parseInt(rand(0, 50));        //随机生成一个Y轴坐标        this.y = parseInt(rand(0, 50));        //随机生成一个宽度,因为生成的焰火式正圆,所以这里生成的焰火宽高式相等        this.w = parseInt(rand(1, 3));        //随机生成一个rgb颜色(0-255之间哦)        this.color = parseInt(rand(0, 255));        //将生成的对象返回(抛出)        return this;    }        //将上面的构造函数实例化为对象,这样这个对象就可以访问上面构造函数生成的所有数据了    const qiu = new Birth();    //定义一个文档碎片,优化程序性能(减少页面重绘与回流)    const jsbox = document.createDocumentFragment();    //使用循环生成焰火,这里焰火使用span标签来表示    for (var i = 0; i < qiu.sum; i++) {        //获取本次循环生成的x轴坐标        var x = qiu.suiji().x;        //获取本次循环生成的y轴坐标        var y = qiu.suiji().y;        //获取本次循环生成的高和宽        var w = qiu.suiji().w;        //生成span元素,并将其追加到文档碎片中        $(jsbox).append('<span></span>').children().eq(i).css({ 'background': `rgb(${qiu.suiji().color},${qiu.suiji().color},${qiu.suiji().color})`, 'width': w, 'height': w, 'left': x, 'top': y });    }    //将文档碎片追加到烟花盒子里,至此烟花部分结束    $('.box').append(jsbox);        })

祝福语快速切换与暂停查看

    //我们将需要展示的祝福语,写在数组中,后期遍历这个数组就可以了    const arr = ['虎虎生威', '财源滚滚', '虎年大运', '虎气冲天', '虎越新春', '虎虎虎虎'];        //声明一个全局变量,用来当作下标访问数组    let ind = 0;        let isok = false;        //定义一个全局变量用来存储页面中的定时器    let t;        //快速切换祝福语的函数    function setZf() {    //使用定时器,每0.01秒执行一次定时器中的代码    t = setInterval(function() {                    if (ind >= arr.length - 1) {                ind = 0;            } else {                ind++;            }                        $('#blessing')[0].innerHTML = arr[ind];        }, 10);    }        setZf();             $('#btn')[0].onclick = function() {        if (isok) {            setZf();            isok = false;        } else {                    clearInterval(t);            isok = true;        }    }

点击开火按钮后所做的事情(一下代码使用了Jquery)

//获取元素并重新赋值    const box = $('.box');     const fire = $('#fire');         let count;    //当点火按钮被点击时,立马让烟花发射BGM开始播放,并将按钮设为禁止点击,防止用户反复点击,造成BUG重叠    fire[0].onclick = function() {        $('audio')[1].play();        fire[0].disabled = true;    }        //当开火按钮被点击,利用这个事件的一点点的延迟效果(刚好是烟花发射BGM播放结束)播放新年BGM    fire.click(function() {        $('audio')[0].play();        //给烟花盒子添加CSS样式,达到烟花居中显示        box.css({            left: '50%',            transform: 'translateX(-50%)',        })                box.animate({            top: '100px',                    }, function() {                    box.addClass('fire');                        count = setInterval(() => {                if (Math.abs(box.offset().top) == 100) {                    box.css({ 'opacity': '0' })                    $('.he').hide();                    $('.title')[0].style.display = 'block';                    $('.greetings')[0].style.opacity = '1';                    $('body').css({                    })                    clearInterval(count);                }            }, 100);        });    })

以上是“基于JavaScript如何实现除夕烟花秀与随机祝福语”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网精选频道!

--结束END--

本文标题: 基于JavaScript如何实现除夕烟花秀与随机祝福语

本文链接: https://www.lsjlt.com/news/321380.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 基于JavaScript实现除夕烟花秀与随机祝福语
    目录项目截图进入后的界面点击按钮点击之后的动画烟花结束后的界面代码实现HTML代码CSS代码javaScript代码项目截图 进入后的界面 点击按钮 点击之后的动画 烟花结束后...
    99+
    2024-04-02
  • 基于JavaScript如何实现除夕烟花秀与随机祝福语
    这篇文章主要介绍基于JavaScript如何实现除夕烟花秀与随机祝福语,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!项目截图进入后的界面点击按钮点击之后的动画烟花结束后的界面代码实现涉及的技术:HTML5多媒体,CS...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作