用HTML5+CSS+JavaScript庆祝国庆

用HTML5+CSS+JavaScript庆祝国庆

中华人民共和国的国庆日是每年的10月1日。

1949年10月1日,中华人民共和国中央人民政府成立,在首都北京天安门广场举行了开国大典,中央人民政府主席毛泽东庄严宣告中华人民共和国成立,并亲手升起了第一面五星红旗。这一历史性的时刻标志着新中国的诞生。1949年12月2日,中央人民政府委员会第四次会议接受全国政协的建议,通过了《关于中华人民共和国国庆日的决议》,决定每年10月1日为中华人民共和国国庆日。

国庆日这一天,全国各地都会举行各种庆祝活动,如悬挂国旗、唱国歌、文艺演出、烟花表演等方式来庆祝这一重要节日。

现在,让我们用HTML5+CSS+JavaScript庆祝中华人民共和国的国庆日。

先看用css3画五星红旗效果:

用css3画五星红旗源码如下:

html 复制代码
<!DOCTYPE HTML>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CSS画五星红旗</title>
    <style>
        .flag{
            width: 300px;
            height: 200px;
            background-color: red;
            position: relative;
        }

        body {
            display: flex;
            height: 100vh; /* 页面高度 */
            justify-content: center; /* 水平居中 */
            align-items: center; /* 垂直居中 */
            margin: 0; /* 去掉默认边距 */
        }
        .star{
            margin: 0 0;
            position: absolute;
            display: block;
            /* color: red; */
            width: 0;
            height: 0;
            border-right: 100px solid transparent;
            border-bottom: 70px solid yellow;/* */
            border-left: 100px solid transparent;
            transform: rotate(35deg);
            left: 20px;
        }
        .star:before {
            border-bottom: 80px solid yellow;
            border-left: 30px solid transparent;
            border-right: 30px solid transparent;
            position: absolute;
            height: 0;
            width: 0;
            top: -45px;
            left: -65px;
            display: block;
            content: '';
            transform: rotate(-35deg);
        }
        .star:after{
            content: '';
            margin: 0;
            position: absolute;
            display: block;
            /* color: red; */
            width: 0;
            height: 0;
            border-right: 100px solid transparent;
            border-bottom: 70px solid yellow;/* */
            border-left: 100px solid transparent;
            transform: rotate(-70deg);
            left: -107px;
            top: 5px;
        }
        .big{
            /* position: absolute; */
            transform: scale(.3) rotate(35deg);
            top: 10px;
            left: -50px;
            z-index: 3;
        }
        .little1{
            position: absolute;
            transform: scale(.1) rotate(-60deg);
            top: -15px;
            left: 5px;
        }
        .little2{
            position: absolute;
            transform: scale(.1) rotate(-45deg);
            top: 5px;
            left: 30px;
        }
        .little3{
            position: absolute;
            transform: scale(.1) rotate(35deg);
            top: 33px;
            left: 30px;
        }
        .little4{
            position: absolute;
            transform: scale(.1) rotate(60deg);
            top: 50px;
            left: 5px;
        }

 
    </style>

</head> 
<body>
    <div class="flag">
        <div class="star big"></div>
        <div class="star little1"></div>
        <div class="star little2"></div>
        <div class="star little3"></div>
        <div class="star little4"></div>
    </div>
</body>
</html>

下面添加烟花效果烘托国庆气氛

先看国庆烟花效果:

国庆烟花源码如下:

html 复制代码
<!DOCTYPE HTML>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>国庆烟花气氛</title>
    <style>
        body {
            display: flex;
            height: 100vh; /* 页面高度 */
            justify-content: center; /* 水平居中 */
            align-items: center; /* 垂直居中 */
            margin: 0; /* 去掉默认边距 */
            position: relative;
            overflow: hidden;
            background-color: #000; /* 背景设为黑色,模拟夜空 */
        }
        .flag {
            width: 300px;
            height: 200px;
            background-color: red;
            position: relative;
            z-index: 1;
        }
        .star {
            margin: 0 0;
            position: absolute;
            display: block;
            width: 0;
            height: 0;
            border-right: 100px solid transparent;
            border-bottom: 70px solid yellow;
            border-left: 100px solid transparent;
            transform: rotate(35deg);
            left: 20px;
        }
        .star:before {
            border-bottom: 80px solid yellow;
            border-left: 30px solid transparent;
            border-right: 30px solid transparent;
            position: absolute;
            height: 0;
            width: 0;
            top: -45px;
            left: -65px;
            display: block;
            content: '';
            transform: rotate(-35deg);
        }
        .star:after {
            content: '';
            margin: 0;
            position: absolute;
            display: block;
            width: 0;
            height: 0;
            border-right: 100px solid transparent;
            border-bottom: 70px solid yellow;
            border-left: 100px solid transparent;
            transform: rotate(-70deg);
            left: -107px;
            top: 5px;
        }
        .big {
            transform: scale(.3) rotate(35deg);
            top: 10px;
            left: -50px;
            z-index: 3;
        }
        .little1 {
            position: absolute;
            transform: scale(.1) rotate(-60deg);
            top: -15px;
            left: 5px;
        }
        .little2 {
            position: absolute;
            transform: scale(.1) rotate(-45deg);
            top: 5px;
            left: 30px;
        }
        .little3 {
            position: absolute;
            transform: scale(.1) rotate(35deg);
            top: 33px;
            left: 30px;
        }
        .little4 {
            position: absolute;
            transform: scale(.1) rotate(60deg);
            top: 50px;
            left: 5px;
        }
        canvas {
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            pointer-events: none; /* 使canvas不会阻止点击事件 */
        }
    </style>
</head>
<body>
    <canvas id="fireworks"></canvas>
    <div class="flag">
        <div class="star big"></div>
        <div class="star little1"></div>
        <div class="star little2"></div>
        <div class="star little3"></div>
        <div class="star little4"></div>
    </div>
    <script>
        const canvas = document.getElementById('fireworks');
        const ctx = canvas.getContext('2d');
        canvas.width = window.innerWidth;
        canvas.height = window.innerHeight;

        function randomColor() {
            return `hsl(${Math.random() * 360}, 100%, 50%)`;
        }

        function Firework(x, y) {
            this.x = x;
            this.y = y;
            this.size = Math.random() * 10 + 5;
            this.speed = Math.random() * 6 + 2;
            this.angle = Math.random() * Math.PI * 2;
            this.color = randomColor();
            this.exploded = false;
            this.particles = [];

            this.update = function () {
                if (!this.exploded) {
                    this.y -= this.speed;
                    // 限制烟花的最大高度
                    if (this.y < canvas.height * 0.2) { // 高度限制
                        this.exploded = true;
                        this.createParticles();
                    }
                    if (this.size > 0) {
                        this.size -= 0.1;
                    } else {
                        this.exploded = true;
                        this.createParticles();
                    }
                } else {
                    this.particles.forEach(p => p.update());
                }
            };

            this.createParticles = function () {
                const particleCount = Math.random() * 100 + 50;
                for (let i = 0; i < particleCount; i++) {
                    this.particles.push(new Particle(this.x, this.y, this.color));
                }
            };

            this.draw = function () {
                if (!this.exploded) {
                    if (this.size > 0) { // 仅在大小为正时绘制。
                        ctx.fillStyle = this.color;
                        ctx.beginPath();
                        ctx.arc(this.x, this.y, this.size, 0, Math.PI * 2);
                        ctx.fill();
                    }
                } else {
                    this.particles.forEach(p => p.draw());
                }
            };
        }

        function Particle(x, y, color) {
            this.x = x;
            this.y = y;
            // 将颜色分解为RGB,以便后续使用
            this.color = color.match(/\d+/g).map(Number);
            this.size = Math.random() * 3 + 2;
            this.speed = Math.random() * 3 + 1;
            this.angle = Math.random() * Math.PI * 2;
            this.alpha = 1;

            this.update = function () {
                this.x += Math.cos(this.angle) * this.speed;
                this.y += Math.sin(this.angle) * this.speed;
                this.alpha -= 0.02;
            };

            this.draw = function () {
                ctx.fillStyle = `rgba(${this.color.join(",")}, ${this.alpha})`;
                if (this.alpha > 0) { // 仅当透明度为正时绘制。
                    ctx.beginPath();
                    ctx.arc(this.x, this.y, this.size, 0, Math.PI * 2);
                    ctx.fill();
                }
            };
        }

        const fireworks = [];
        function createFirework() {
            const firework = new Firework(Math.random() * canvas.width, canvas.height);
            fireworks.push(firework);
        }

        function animate() {
            ctx.clearRect(0, 0, canvas.width, canvas.height);
            fireworks.forEach((firework, index) => {
                firework.update();
                firework.draw();
                if (firework.exploded && firework.particles.length === 0) {
                    fireworks.splice(index, 1);
                }
            });
            requestAnimationFrame(animate);
        }

        for (let i = 0; i < 5; i++) {
            createFirework();
        }
        animate();

        setInterval(createFirework, 1000);
    </script>
</body>
</html>
相关推荐
qq_544329173 分钟前
下载一个项目到跑通的大致过程是什么?
javascript·学习·bug
Jane - UTS 数据传输系统2 小时前
VUE+ Element-plus , el-tree 修改默认左侧三角图标,并使没有子级的那一项不展示图标
javascript·vue.js·elementui
ThomasChan1234 小时前
Typescript 多个泛型参数详细解读
前端·javascript·vue.js·typescript·vue·reactjs·js
zzlyx995 小时前
.NET 9 微软官方推荐使用 Scalar 替代传统的 Swagger
javascript·microsoft·.net
Bunury5 小时前
组件封装-List
javascript·数据结构·list
我命由我123455 小时前
NPM 与 Node.js 版本兼容问题:npm warn cli npm does not support Node.js
前端·javascript·前端框架·npm·node.js·html5·js
浪浪山小白兔5 小时前
HTML5 语义元素详解
前端·html·html5
Orange3015116 小时前
【自己动手开发Webpack插件:开启前端构建工具的个性化定制之旅】
前端·javascript·webpack·typescript·node.js
Jacob程序员8 小时前
leaflet绘制室内平面图
android·开发语言·javascript
eguid_18 小时前
JavaScript图像处理,常用图像边缘检测算法简单介绍说明
javascript·图像处理·算法·计算机视觉