【HTML+CSS+JavaScript】实现鼠标点击烟花效果

这篇具有很好参考价值的文章主要介绍了【HTML+CSS+JavaScript】实现鼠标点击烟花效果。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【HTML+CSS+JavaScript】实现鼠标点击烟花效果(爆炸型、心型、圆形)

本文主要讲解三种烟花效果(爆炸型、心型、圆形),文章末尾附有完整的代码和图片获取链接。

一. 效果图

效果图(一) - 心型

网页制作点击效果,有趣实用案例,css,javascript,html,开发语言

效果图(二) - 圆型

网页制作点击效果,有趣实用案例,css,javascript,html,开发语言

效果图(三) - 爆炸型

网页制作点击效果,有趣实用案例,css,javascript,html,开发语言

二. 鼠标点击烟花效果 - 心型实现代码

(1) HTML部分代码

<!-- 引入外部的js代码 -->
<script type="text/javascript" src="buffermove1.js"></script> 

(2) CSS部分代码

* {
    padding: 0px;
    margin: 0px;
}

body {
    background: #000;
    width: 100%;
    height: 100%;
    overflow: hidden;
}

(3) 内部的JavaScript部分代码

//this绑定的属性可以在整个构造函数内部都可以使用,而变量只能在函数内部使用。
function Fireworks(x, y) { //x,y鼠标的位置
    this.x = x;
    this.y = y;
    var that = this;
    //1.创建烟花。
    this.ceratefirework = function() {
        this.firework = document.createElement('div'); //整个构造函数内部都可以使用
        this.firework.style.cssText = `width:5px;height:5px;background:#fff;position:absolute;left:${this.x}px;top:${document.documentElement.clientHeight}px;`;
        document.body.appendChild(this.firework);
        this.fireworkmove();
    };
    //2.烟花运动和消失
    this.fireworkmove = function() {
        buffermove(this.firework, {
            top: this.y
        }, function() {
            document.body.removeChild(that.firework); //烟花消失,碎片产生
            that.fireworkfragment();
        });
    };
    //3.创建烟花的碎片
    this.fireworkfragment = function() {
        var num = this.ranNum(30, 60); //盒子的个数
        this.perRadio = 2 * Math.PI / num; //弧度
        for (var i = 0; i < num; i++) {
            this.fragment = document.createElement('div');
            this.fragment.style.cssText = `width:5px;height:5px;background:rgb(${this.ranNum(0, 255)},${this.ranNum(0, 255)},${this.ranNum(0, 255)});position:absolute;left:${this.x}px;top:${this.y}px;`;
            document.body.appendChild(this.fragment);
            this.fireworkboom(this.fragment, i); //将当前创建的碎片传过去,方便运动和删除
        }
    }
    //4.碎片运动
    this.fireworkboom = function(obj, i) { //obj:创建的碎片
        var r = 0.1;
        obj.timer = setInterval(function() { //一个盒子运动
            r += 0.4;
            if (r >= 10) {
                clearInterval(obj.timer);
                document.body.removeChild(obj);
            }
            obj.style.left = that.x + 16 * Math.pow(Math.sin(that.perRadio * i), 3) * r + 'px';
            obj.style.top = that.y - (13 * Math.cos(that.perRadio * i) - 5 * Math.cos(2 * that.perRadio * i) - 2 * Math.cos(3 * that.perRadio * i) - Math.cos(4 * that.perRadio * i)) * r + 'px';
        }, 20);
    }
    //随机方法
    this.ranNum = function(min, max) {
        return Math.round(Math.random() * (max - min)) + min;
    };
}
document.onclick = function(ev) {
    var ev = ev || window.event;
    new Fireworks(ev.clientX, ev.clientY).ceratefirework();
}

三. 鼠标点击烟花效果 - 圆型实现代码

(1) HTML部分代码

<!-- 引入外部的js代码 -->
<script type="text/javascript" src="buffermove1.js"></script> 

(2) CSS部分代码

* {
    padding: 0px;
    margin: 0px;
}

body {
    background: #000;
    width: 100%;
    height: 100%;
    overflow: hidden;
}

(3) 内部的JavaScript部分代码

//this绑定的属性可以在整个构造函数内部都可以使用,而变量只能在函数内部使用。
function Fireworks(x, y) { //x,y鼠标的位置
    this.x = x;
    this.y = y;
    var that = this;
    //1.创建烟花。
    this.ceratefirework = function() {
        this.firework = document.createElement('div'); //整个构造函数内部都可以使用
        this.firework.style.cssText = `width:5px;height:5px;background:#fff;position:absolute;left:${this.x}px;top:${document.documentElement.clientHeight}px;`;
        document.body.appendChild(this.firework);
        this.fireworkmove();
    };
    //2.烟花运动和消失
    this.fireworkmove = function() {
        var that = this;
        buffermove(this.firework, {
            top: this.y
        }, function() {
            document.body.removeChild(that.firework); //烟花消失,碎片产生
            that.fireworkfragment();
        });
    };
    //3.创建烟花的碎片
    this.fireworkfragment = function() {
        var num = this.ranNum(30, 60); //盒子的个数
        this.perRadio = 2 * Math.PI / num; //弧度
        for (var i = 0; i < num; i++) {
            this.fragment = document.createElement('div');
            this.fragment.style.cssText = `width:5px;height:5px;background:rgb(${this.ranNum(0, 255)},${this.ranNum(0, 255)},${this.ranNum(0, 255)});position:absolute;left:${this.x}px;top:${this.y}px;`;
            document.body.appendChild(this.fragment);
            this.fireworkboom(this.fragment, i); //将当前创建的碎片传过去,方便运动和删除
        }
    }
    //4.碎片运动
    this.fireworkboom = function(obj, i) { //obj:创建的碎片
        var r = 10;
        obj.timer = setInterval(function() { //一个盒子运动
            r += 4;
            if (r >= 200) {
                clearInterval(obj.timer);
                document.body.removeChild(obj);
            }
            obj.style.left = that.x + Math.sin(that.perRadio * i) * r + 'px';
            obj.style.top = that.y + Math.cos(that.perRadio * i) * r + 'px';
        }, 20);
    }
    //随机方法
    this.ranNum = function(min, max) {
        return Math.round(Math.random() * (max - min)) + min;
    };
}
document.onclick = function(ev) {
    var ev = ev || window.event;
    new Fireworks(ev.clientX, ev.clientY).ceratefirework();
}

四. 鼠标点击烟花效果 - 爆炸型实现代码

(1) HTML部分代码

<!-- 引入外部的js代码 -->
<script type="text/javascript" src="buffermove1.js"></script> 

(2) CSS部分代码

* {
    padding: 0px;
    margin: 0px;
}

body {
    background: #000;
    width: 100%;
    height: 100%;
    overflow: hidden;
}

(3) 内部的JavaScript部分代码

//this绑定的属性可以在整个构造函数内部都可以使用,而变量只能在函数内部使用。
function Fireworks(x, y) { //x,y鼠标的位置
    this.x = x;
    this.y = y;
    var that = this;
    //1.创建烟花。
    this.ceratefirework = function() {
        this.firework = document.createElement('div'); //整个构造函数内部都可以使用
        this.firework.style.cssText = `width:5px;height:5px;background:#fff;position:absolute;left:${this.x}px;top:${document.documentElement.clientHeight}px;`;
        document.body.appendChild(this.firework);
        this.fireworkmove();
    };
    //2.烟花运动和消失
    this.fireworkmove = function() {
        buffermove(this.firework, {
            top: this.y
        }, function() {
            document.body.removeChild(that.firework); //烟花消失,碎片产生
            that.fireworkfragment();
        });
    };
    //3.创建烟花的碎片
    this.fireworkfragment = function() {
        for (var i = 0; i < this.ranNum(30, 60); i++) {
            this.fragment = document.createElement('div');
            this.fragment.style.cssText = `width:5px;height:5px;background:rgb(${this.ranNum(0, 255)},${this.ranNum(0, 255)},${this.ranNum(0, 255)});position:absolute;left:${this.x}px;top:${this.y}px;`;
            document.body.appendChild(this.fragment);
            this.fireworkboom(this.fragment); //将当前创建的碎片传过去,方便运动和删除
        }
    }

    //4.碎片运动
    this.fireworkboom = function(obj) { //obj:创建的碎片

        //设点速度(值不同,正负符号不同)
        var speedx = parseInt((Math.random() > 0.5 ? '-' : '') + this.ranNum(1, 15));
        var speedy = parseInt((Math.random() > 0.5 ? '-' : '') + this.ranNum(1, 15));

        //初始速度
        var initx = this.x;
        var inity = this.y;
        obj.timer = setInterval(function() { //一个盒子运动
            initx += speedx;
            inity += speedy;
            if (inity >= document.documentElement.clientHeight) {
                clearInterval(obj.timer);
                document.body.removeChild(obj);
            }
            obj.style.left = initx + 'px';
            obj.style.top = inity + 'px';
        }, 20);

    }

    //随机方法
    this.ranNum = function(min, max) {
        return Math.round(Math.random() * (max - min)) + min;
    };
}


document.onclick = function(ev) {
    var ev = ev || window.event;
    new Fireworks(ev.clientX, ev.clientY).ceratefirework();
}

五. 共同引用的JavaScript部分代码

function getstyle(obj, attr) {
    if (window.getComputedStyle) {
        //标准
        return getComputedStyle(obj)[attr]
    } else {
        //IE
        return obj.currentStyle[attr]
    }
}

function buffermove(obj, json, fn) {
    var speed = 0
    clearInterval(obj.timer)
    obj.timer = setInterval(function() {
        var bstop = true
        for (var attr in json) {
            var currentvalue = 0
            if (attr === 'opacity') {
                currentvalue = Math.round(getstyle(obj, attr) * 100)
            } else {
                currentvalue = parseInt(getstyle(obj, attr))
            }
            speed = (json[attr] - currentvalue) / 10
            speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed)
            if (currentvalue != json[attr]) {
                if (attr === 'opacity') {
                    obj.style.opacity = (currentvalue + speed) / 100
                    obj.style.filter = 'alpha(opacity:' + (currentvalue + speed) + ')'
                } else {
                    obj.style[attr] = currentvalue + speed + 'px'
                }
                bstop = false
            }
        }
        if (bstop) {
            clearInterval(obj.timer)
            fn && fn()
        }
    }, 5)
}

六. 完整的代码和图片获取

:细心地网友估计已经发现三种效果的CSS和HTML这两部分的代码其实是一样的。

完整的代码和图片获取方式文章来源地址https://www.toymoban.com/news/detail-789134.html

链接:https://pan.baidu.com/s/16kbVr5pOcBqxdCRfs-GJnA?pwd=yhxg 
提取码:yhxg

到了这里,关于【HTML+CSS+JavaScript】实现鼠标点击烟花效果的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【静态网页制作大作业——个人博客搭建(HTML+CSS+Javascript)】

    网页作品简介: 寒假期间学习HTML和CSS即部分Javascript后的第一个大作业,搭建一个个人静态博客,后面出于兴趣,将其部署到GitPage上并利用GitHub添加了留言功能。 代码如下(示例): 以上就是今天要讲的内容,本文仅仅简单介绍了个人静态博客,而部署个人静态博客基本上

    2024年02月11日
    浏览(29)
  • Web前端大作业制作个人网页(html+css+javascript)

    🧑个人网页设计、🙋‍♂️个人简历制作、👨‍💼简单静态HTML个人网页作品、👨‍🏭个人介绍网站模板 、等网站的设计与制作。 ⭐个人网页设计网站模板采用DIV CSS布局制作,网页作品有多个页面,如 :个人介绍(文字页面)、我的作品(图片列表)、个人技能(图文页

    2024年02月10日
    浏览(44)
  • HTML旅游景点网页作业制作——旅游中国11个页面(HTML+CSS+JavaScript)

    👨‍🎓学生HTML静态网页基础水平制作👩‍🎓,页面排版干净简洁。使用HTML+CSS页面布局设计,web大学生网页设计作业源码,这是一个不错的旅游网页制作,画面精明,排版整洁,内容丰富,主题鲜明,非常适合初学者学习使用, 这个实例比较全面,有助于同学的学习,本文将

    2024年02月05日
    浏览(44)
  • HTML5七夕情人节表白网页制作【抖音3D立方体图像库】HTML+CSS+JavaScript html生日快乐祝福网页制作

    这是程序员表白系列中的100款网站表白之一,旨在让任何人都能使用并创建自己的表白网站给心爱的人看。 此波共有100个表白网站,可以任意修改和使用,很多人会希望向心爱的男孩女孩告白,生性腼腆的人即使那个TA站在眼前都不敢向前表白。说不出口的话就用短视频告诉

    2024年02月02日
    浏览(36)
  • 简单个人静态HTML网页设计作品 基于HTML+CSS+JavaScript仿小米手机网站 html静态在线购物商城网页制作

    常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 游戏、 节日、 戒烟、 电影、 摄影、 文化、 家乡、 鲜花、 礼品、 汽车、 其他等网页设计题目

    2024年02月09日
    浏览(44)
  • 【网页设计】基于HTML+CSS+JavaScript制作美食网站舌尖上的美食

    🎀 精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (1000套) 】 🧡 程序员有趣的告白方式:【💌HTML七夕情人节表白网页制作

    2024年02月09日
    浏览(48)
  • 期末前端web大作业——我的家乡陕西介绍网页制作源码HTML+CSS+JavaScript

    家乡旅游景点网页作业制作 网页代码运用了DIV盒子的使用方法,如盒子的嵌套、浮动、margin、border、background等属性的使用,外部大盒子设定居中,内部左中右布局,下方横向浮动排列,大学学习的前端知识点和布局方式都有运用,CSS的代码量也很足、很细致,使用hover来完成

    2024年02月06日
    浏览(365)
  • css - 如何禁用 <a> 标签点击,让 <a> 标签实现 disabled 禁用效果(鼠标无法触发点击事件)

    我们知道a标签是没有disabled属性的,那么我们该如何实现a标签按钮的禁用呢? 给a标签设置 “禁用” 属性,如下代码所示: 这样 @click 点击事件就不会触发了。 使用 jquery:removerAttr() 或者 JS:removeAttribute() 移除 a 标签的 href 属性。 使用 jquery:unbind() 或者 JS:removeEventListe

    2024年01月16日
    浏览(48)
  • HTML+CSS+JavaScript:实现B站评论发布效果

    1、用户输入内容,输入框右下角实时显示输入字数  2、为避免用户输入时在内容左右两端误按多余的空格,在发送评论时,检测用户输入的内容左右两端是否带有空格,若有空格,发布时自动取消左右两端的空格 3、若用户发布的内容为空,则自动取消该条评论的发送,并弹

    2024年02月14日
    浏览(28)
  • HTML + CSS + JavaScript【实战案例】 实现动画导航栏效果

    ​Hello~ 咱们今天一起来学习一个动画导航的小项目 HTML结构

    2024年02月03日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包