HTML五彩缤纷的爱心

news2024/9/22 1:10:24

写在前面

小编准备了一个五彩缤纷的爱心,送给各位小美女们~

在桌面创建一个.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()`函数启动动画循环。

综上所述,这段代码实现了一个动态网页,网页上有一个全屏的画布,在画布上有许多不同大小、颜色、速度和方向不断运动的爱心字符,与此同时,页面顶部还有一颗固定的大爱心字符呈现炫丽的彩虹渐变效果。

系列推荐

序号目录直达链接
1HTML实现3D相册HTML实现3D相册-CSDN博客
2HTML元素周期表HTML元素周期表-CSDN博客
3HTML黑客帝国字母雨https://want595.blog.csdn.net/article/details/138654054
4HTML五彩缤纷的爱心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

写在最后

我是一只有趣的兔子,感谢你的喜欢!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1666303.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Stable Diffusion是什么?

目录 一、Stable Diffusion是什么&#xff1f; 二、Stable Diffusion的基本原理 三、Stable Diffusion有哪些运用领域&#xff1f; 一、Stable Diffusion是什么&#xff1f; Stable Diffusion是一个先进的人工智能图像生成模型&#xff0c;它能够根据文本描述创造出高质量的图…

VMware安装centos7教程

文章目录 1、centos7的ios镜像下载2、CentOS7安装3、Centos配置 其他教程&#xff1a; 1、VMware Workstation 16 Pro安装教程 2、VMwarePro16安装Ubuntu16.04图文教程 1、centos7的ios镜像下载 官网&#xff1a;https://vault.centos.org/ 阿里云&#xff1a;https://develo…

Idea入门:一分钟创建一个Java工程

一&#xff0c;新建一个Java工程 1&#xff0c;启动Idea后&#xff0c;选择 [New Project] 2&#xff0c;完善工程信息 填写工程名称&#xff0c;根据实际用途取有意义的英文名称选择Java语言&#xff0c;可以看到还支持Kotlin、Javascript等语言选择包管理和项目构建工具Mav…

新闻资讯微信小程序开发后端+php【附源码,文档说明】

博主介绍&#xff1a;✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3…

2024最新版JavaScript逆向爬虫教程-------基础篇之无限debugger的原理与绕过

目录 一、无限debugger的原理与绕过1.1 案例介绍1.2 实现原理1.3 绕过debugger方法1.3.1 禁用所有断点1.3.2 禁用局部断点1.3.3 替换文件1.3.4 函数置空与hook 二、补充2.1 改写JavaScript文件2.2 浏览器开发者工具中出现的VM开头的JS文件是什么&#xff1f; 三、实战 一、无限…

Java构造方法详解

在Java方法内部定义一个局部变量时&#xff0c;必须要初始化&#xff0c;否则就会编译失败&#xff0c;如下&#xff1a; 要让上述代码通过编译&#xff0c;只需在使用a之前给a赋一个初始值即可 如果是对象&#xff1a;下面用一个日期类演示 我们没有给年月日赋值&#xff0c;…

laravel8 导入 excel常见问题

上传xls 或 xlsx 文件后&#xff0c;文件解析为 zip 格式&#xff0c;输入正常情况&#xff0c;不影响解析 里面的内容 遇到解析内容&#xff0c;解析为空的情况&#xff0c;可能是 因为excel 存在多个 Sheet1 造成&#xff0c;服务器不能解析一个 Sheet1 的情况&#xff0…

阿里开源编程大模型 CodeQwen1.5:64K92编程语言,Code和SQL编程,评测接近GPT-4-Turbo

前言 阿里巴巴最近发布的CodeQwen1.5模型标志着其在编程语言模型领域的一次重大突破。这款开源模型不仅支持高达92种编程语言和64K的上下文长度&#xff0c;而且在多项性能评测中显示出接近或超过当前行业领导者GPT-4-Turbo的能力。 Huggingface模型下载&#xff1a;https://h…

# ERROR: node with name “rabbit“ already running on “MS-ITALIJUXHAMJ“ 解决方案

ERROR: node with name “rabbit” already running on “MS-ITALIJUXHAMJ” 解决方案 一、问题描述&#xff1a; 1、启动 rabbitmq-server.bat 服务时&#xff0c;出错 Error 2、查询 rabbitmqctl status 状态时&#xff0c;出错 Error 3、停止 rabbitmqctl stop 服务时&a…

如何使用CertCrunchy从SSL证书中发现和识别潜在的主机名称

关于CertCrunchy CertCrunchy是一款功能强大的网络侦查工具&#xff0c;该工具基于纯Python开发&#xff0c;广大研究人员可以利用该工具轻松从SSL证书中发现和识别潜在的主机信息。 支持的在线源 该工具支持从在线源或给定IP地址范围获取SSL证书的相关数据&#xff0c;并检索…

A Dexterous Hand-Arm Teleoperation System

A Dexterous Hand-Arm Teleoperation System Based on Hand Pose Estimation and Active Vision解读 摘要1. 简介2.相关工作2.1 机器人遥操作2.2 主动视觉&#xff08;Active Vision&#xff09; 3. 硬件设置4. 基于视觉的机器人手部姿态估计4.1 Transteleop4.2 Dataset 5. 主动…

【基础绘图】 09.小提琴图

效果图&#xff1a; 主要步骤&#xff1a; 1. 数据准备&#xff1a;生成随机数组 2. 数据处理&#xff1a;计算四分位数、中位数、均值、最大最小值 3. 图像绘制&#xff1a;绘制小提琴图 详细代码&#xff1a;着急的直接拖到最后有完整代码 步骤一&#xff1a;导入库包及…

使用C#和NMODBUS快速搭建MODBUS从站模拟器

MODBUS是使用广泛的协议&#xff0c;通讯测试时进行有使用。Modbus通讯分为主站和从站&#xff0c;使用RS485通讯时同一个网络内只能有一个主站&#xff0c;多个从站。使用TCP通讯时没有这方面的限制&#xff0c;可以同时支持多个主站的通讯读写。 开发测试时有各种复杂的需求&…

Milvus中那些年重要的基本概念

Milvus是一款开源的云原生向量数据库&#xff0c;专为海量向量数据的存储、检索和管理而设计。它支持实时的向量相似度搜索&#xff0c;适用于各种AI和机器学习应用场景。以下是Milvus的一些基本概念&#xff1a; 非结构化数据 非结构化数据是指那些不遵循特定数据模型或格式、…

npm无法安装node-sass 的问题

安装 node-sass 的问题呈现&#xff1a;4.9.0版本无法下载 Downloading binary from https://github.com/sass/node-sass/releases/download/v4.9.0/win32-x64-72_binding.node Cannot download "https://github.com/sass/node-sass/releases/download/v4.9.0/win32-x64-…

Linux服务器常用巡检命令,查看日志

查看日志 3.1 通过journalctl命令查看系统日志 命令&#xff1a;journalctl 3.2 通过tail查看系统日志 查看日志文件多少行代码&#xff1a;tail -n [行数] [日志文件] 4. 服务状态 4.1 查看指定服务的状态 命令&#xff1a;systemctl status <service> 比如查看防火墙…

React 第三十四章 React 渲染流程

现代前端框架都可以总结为一个公式&#xff1a;UI f&#xff08;state&#xff09; 上面的公式还可以进行一个拆分&#xff1a; 根据自变量&#xff08;state&#xff09;的变化计算出 UI 的变化根据 UI 变化执行具体的宿主环境的 API 对应的公式&#xff1a; const state…

Axure PR 10 制作顶部下拉三级菜单和侧边三级菜单教程和源码

在线预览地址&#xff1a;Untitled Document 2.侧边三级下拉菜单 在线预览地址&#xff1a;Untitled Document 文件包和教程下载地址&#xff1a;https://pan.quark.cn/s/77e55945bfa4 程序员必备资源网站&#xff1a;天梦星服务平台 (tmxkj.top)

事件代理 浅谈

事件代理是一种将事件处理委托给父元素或祖先元素来管理的技术。当子元素触发特定事件时&#xff0c;该事件不会直接在子元素上进行处理&#xff0c;而是会冒泡到父元素或祖先元素&#xff0c;并在那里进行处理。这样做的好处是可以减少事件处理函数的数量&#xff0c;提高性能…

PyCharm 集成 Git

目录 1、配置 Git 忽略文件 2、定位Git 3、使用pycharm本地提交 3.1、初始化本地库 3.2、添加到暂存区 3.3、提交到本地库 3.4、切换版本 4、分支操作 4.1、创建分支 4.2、切换分支 4.3、合并分支 5、解决冲突 1、配置 Git 忽略文件 作用&#xff1a;与项目的实际…