写在前面
小编准备了一个五彩缤纷的爱心,送给各位小美女们~
在桌面创建一个.txt文本文件,把代码复制进去,将后缀.txt改为.html,然后就可以双击运行啦!
HTML简介
HTML(超文本标记语言)是一种用于创建网页的标记语言。它描述了网页的结构和内容,并使用标记来定义文本、图像和其他元素的展示方式。HTML使用标签和属性来标记和组织网页的不同部分,如标题、段落、图片、链接等。这些标记和属性告诉浏览器如何显示网页的内容和布局。HTML是Web开发的基础,与CSS和JavaScript一起使用可以创建丰富的交互式网页。通过使用不同的标签和属性,开发者可以创建具有不同样式和功能的网页。HTML是一种可扩展的语言,可以根据需要添加自定义的标签和属性。
爱心代码
<!DOCTYPE html>
<html>
<head>
<title>五彩缤纷的爱心</title>
<style>
body {
margin: 0;
padding: 0;
height: 100vh;
background: #222;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
overflow: hidden;
}
canvas {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
h1 {
font-size: 50em;
margin: 100px auto;
animation: rainbow 5s ease-in-out infinite;
}
@keyframes rainbow {
0% {
color: #ff0000;
text-shadow: 0 0 10px #ff0000, 0 0 20px #ff0000, 0 0 30px #ff0000;
}
25% {
color: #ff8000;
text-shadow: 0 0 10px #ff8000, 0 0 20px #ff8000, 0 0 30px #ff8000;
}
50% {
color: #ffff00;
text-shadow: 0 0 10px #ffff00, 0 0 20px #ffff00, 0 0 30px #ffff00;
}
75% {
color: #00ff00;
text-shadow: 0 0 10px #00ff00, 0 0 20px #00ff00, 0 0 30px #00ff00;
}
100% {
color: #0000ff;
text-shadow: 0 0 10px #0000ff, 0 0 20px #0000ff, 0 0 30px #0000ff;
}
}
</style>
</head>
<body>
<canvas id="canvas"></canvas>
<h1>❤</h1>
<script>
const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
class TextElement {
constructor(text, x, y, fontSize, color, dx = 0, dy = 0, speed = 1) {
this.text = text;
this.x = x;
this.y = y;
this.fontSize = fontSize;
this.color = color;
this.dx = dx;
this.dy = dy;
this.speed = speed;
}
draw() {
ctx.font = `${this.fontSize}px Arial`;
ctx.fillStyle = this.color;
ctx.fillText(this.text, this.x, this.y);
}
update() {
if (this.x > canvas.width || this.x < 0) {
this.dx = -this.dx;
}
if (this.y > canvas.height || this.y < 0) {
this.dy = -this.dy;
}
this.x += this.dx * this.speed;
this.y += this.dy * this.speed;
}
}
function init() {
for (let i = 0; i < 99; i++) {
const fontSize = Math.random() * 50 + 10;
const text = '❤';
const x = Math.random() * (canvas.width - fontSize * 2);
const y = Math.random() * (canvas.height - fontSize * 2);
const color = `hsla(${Math.random() * 360}, 100%, 50%, 0.8)`;
const dx = Math.random() - 0.5;
const dy = Math.random() - 0.5;
const speed = Math.random() * 5 + 1;
textElements.push(new TextElement(text, x, y, fontSize, color, dx, dy, speed));
}
}
const textElements = [];
init();
function animate() {
requestAnimationFrame(animate);
ctx.clearRect(0, 0, canvas.width, canvas.height);
textElements.forEach((textElement) => {
textElement.draw();
textElement.update();
});
}
animate();
</script>
</body>
</html>
代码分析
这段代码是一个HTML页面,用于创建一个精彩的爱心动画。整体上,它由HTML结构、CSS样式以及JavaScript脚本三部分组成:
1. HTML结构:
- 页面头部设置了`<title>`标签,标题为“五彩缤纷的爱心”。
- 页面主体包含两个元素:一个`<canvas>`元素和一个`<h1>`元素。其中,`<canvas>`用于绘制图形,而`<h1>`中显示了一个爱心字符(❤)并应用了彩虹渐变动画。
2. CSS样式:
- 全局样式设置了整个body背景色为深灰色(#222),使其充满整个屏幕,并通过flex布局居中内容。
- 对`<canvas>`元素进行了定位设置,使其铺满整个浏览器窗口。
- 对`<h1>`元素设置了非常大的字体大小(50em),并应用了一个名为`rainbow`的关键帧动画,这个动画会每5秒循环一次,使爱心字符的颜色从红色渐变到橙色、黄色、绿色,最终变为蓝色,同时伴随着强烈的彩色阴影效果。
3. JavaScript脚本:
- 获取`<canvas>`元素并初始化其上下文(`2d`环境)以便进行绘画操作。
- 设置画布尺寸与浏览器窗口相同。
- 定义了一个名为`TextElement`的类,表示文本元素,具有位置、字体大小、颜色、速度和方向等属性,并定义了`draw()`和`update()`方法,分别用于在画布上绘制和更新该元素的位置。
- `init()`函数负责初始化99个随机生成的爱心文本元素('❤'字符),这些元素的位置、大小、颜色、移动速度和方向都是随机产生的。
- 创建一个空数组`textElements`来存储所有生成的文本元素。
- 调用`init()`函数填充`textElements`数组。
- 定义`animate()`函数,它利用`requestAnimationFrame`创建一个动画循环,每一帧都会清除画布,然后遍历并更新、重绘所有的文本元素。
- 最后调用`animate()`函数启动动画循环。
综上所述,这段代码实现了一个动态网页,网页上有一个全屏的画布,在画布上有许多不同大小、颜色、速度和方向不断运动的爱心字符,与此同时,页面顶部还有一颗固定的大爱心字符呈现炫丽的彩虹渐变效果。
系列推荐
序号 | 目录 | 直达链接 |
1 | HTML实现3D相册 | HTML实现3D相册-CSDN博客 |
2 | HTML元素周期表 | HTML元素周期表-CSDN博客 |
3 | HTML黑客帝国字母雨 | https://want595.blog.csdn.net/article/details/138654054 |
4 | HTML五彩缤纷的爱心 | https://want595.blog.csdn.net/article/details/138654581 |
5 | ||
6 | ||
7 | ||
8 | ||
9 | ||
10 | ||
11 | ||
12 | ||
13 | ||
14 | ||
15 | ||
16 | ||
17 | ||
18 | ||
19 | ||
20 | ||
21 | ||
22 | ||
23 | ||
24 | ||
25 | ||
26 | ||
27 |
写在最后
我是一只有趣的兔子,感谢你的喜欢!