超简单好看的HTML5七夕情人节表白网页(表白直接拿去用) HTML+CSS+JS

news2024/12/23 5:39:44

博主:命运之光

专栏:web开发(html css js)

 

目录

 ✨简介:

 ✨前言:

 ✨视频展示

✨源代码

✨代码的使用方法(超简单什么都不用下载)

🍓1.打开记事本 

🍓2.将上面的源代码复制粘贴到记事本里面将文件另存为HTML文件点击保存即可

🍓3.打开html文件(大功告成(●'◡'●))

✨代码讲解(选看,小白看到这里就可以结束了哈,不用再往下看了哈)

✨结语


✨简介:

在这个数字时代,爱情表白方式也随之改变。在过去,我们可能会写情书或亲自表达情感,但现在,我们可以利用互联网和编程技术来创造独特而有趣的方式来表达爱意。本篇博客将介绍如何使用HTML、CSS和JavaScript创建一个令人惊喜的爱心表白网页。


✨前言:

最近天气一直在下雨,本来是像写一个有着下雨效果的网页的,我也不知道怎么写着写着就开始表白了(●'◡'●)废话不多说我们直接看网页的效果展示好了,有下雨效果的网页我也写了都在专栏里有兴趣的小伙伴可以去看看。

🍓🍓图片看不清的我们下面有视频展示(图片这块大小超过5M所以传输的时候就会有点问题)

 ✨视频展示

爱心——命运之光(表白)

✨源代码

🍓这里先直接放上源代码需要的直接复制粘贴即可

🍓这里我们先放源代码为的就是让即便没有学过代码的小伙伴们,也可以直接拿上代码用,不用看太多大道理(●'◡'●)

🍓注意:源代码后面有使用的方法记得看哈🤭


<!DOCTYPE html>
<html>
<head>
    <title>下雪背景效果和爱心</title>
    <style type="text/css">
        body {
            display: flex;
            align-items: center;
            justify-content: center;
            height: 100vh;
            margin: 0;
            overflow: hidden;
			 background-color: #FCE8F8;
        }

        #snow-container {
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            pointer-events: none;
            z-index: -1;
        }

        .snowflake {
            position: absolute;
            width: 10px;
            height: 10px;
            background-color: #fff;
            border-radius: 50%;
            opacity: 0.8;
            pointer-events: none;
            animation: snowfall linear infinite;
        }

        @keyframes snowfall {
            0% {
                transform: translateY(-100%);
            }
            100% {
                transform: translateY(100vh);
            }
        }

        .heart {
            width: 200px;
            height: 200px;
            position: relative;
            animation: heartbeat 1s infinite;
            transform-origin: center center;
        }

        .heart:before,
        .heart:after {
            content: "";
            background-color: red;
            border-radius: 50px 50px 0 0;
            position: absolute;
            top: 0;
        }

        .heart:before {
            left: 100px;
            width: 100px;
            height: 160px;
            transform: rotate(-45deg);
            transform-origin: 0 100%;
        }

        .heart:after {
            left: 0;
            width: 100px;
            height: 160px;
            transform: rotate(45deg);
            transform-origin: 100% 100%;
        }

        #timeElapsed {
            text-align: center;
            font-size: 24px;
            margin-top: 20px;
        }

        @keyframes heartbeat {
            0% {
                transform: scale(1);
            }
            50% {
                transform: scale(1.2);
            }
            100% {
                transform: scale(1);
            }
        }

        @keyframes falling {
            0% {
                transform: translateY(-100vh);
            }
            100% {
                transform: translateY(100vh);
            }
        }

        .sakura {
            position: absolute;
            top: -20px;
            left: -20px;
            width: 40px;
            height: 40px;
            background-image: url('https://www.unicode.org/emoji/charts/full-emoji-list.html#1f338'); /* 🌸的Unicode转义序列 */
            background-size: cover;
            animation: falling linear infinite;
            animation-duration: 10s;
        }
    </style>
</head>
<body>
    <div id="snow-container"></div>
    <div class="heart"></div>
    <div id="timeElapsed"></div>

    <script>
        function getTimeElapsed() {
            var startDate = new Date("2022-01-01"); // 设置开始日期,替换为实际的起始日期
            var currentDate = new Date();
            var timeDiff = currentDate - startDate;

            var milliseconds = timeDiff % 1000;
            timeDiff = Math.floor(timeDiff / 1000);
            var seconds = timeDiff % 60;
            timeDiff = Math.floor(timeDiff / 60);
            var minutes = timeDiff % 60;
            timeDiff = Math.floor(timeDiff / 60);
            var hours = timeDiff % 24;
            timeDiff = Math.floor(timeDiff / 24);
            var days = timeDiff;

            var timeString = "宝贝我们已经在一起 " + days + " 天 " + hours + " 小时 " + minutes + " 分钟 " + seconds + " 秒了";

            document.getElementById("timeElapsed").textContent = timeString;
        }

        setInterval(getTimeElapsed, 1000);
    </script>

    <script>
        function createSnowflake() {
            const snowflake = document.createElement('div');
            snowflake.classList.add('snowflake');
            snowflake.style.left = Math.random() * window.innerWidth + 'px';
            snowflake.style.animationDuration = Math.random() * 3 + 2 + 's';
            snowflake.style.opacity = Math.random();
            snowflake.style.fontSize = Math.random() * 10 + 10 + 'px';

            const randomColor = getRandomColor();
            snowflake.style.backgroundColor = randomColor;

            snowflake.innerHTML = '命运之光'; // You can customize the snowflake symbol here

            return snowflake;
        }

        function getRandomColor() {
            const letters = '0123456789ABCDEF';
            let color = '#';
            for (let i = 0; i < 6; i++) {
                color += letters[Math.floor(Math.random() * 16)];
            }
            return color;
        }

        function snowfall() {
            const snowContainer = document.getElementById('snow-container');
            const numSnowflakes = 50; // Adjust the number of snowflakes here

            for (let i = 0; i < numSnowflakes; i++) {
                const snowflake = createSnowflake();
                snowContainer.appendChild(snowflake);
            }
        }

        snowfall();
    </script>

    <script>
        function createSakura() {
            var sakura = document.createElement("div");
            sakura.className = "sakura";
            sakura.style.left = Math.random() * 100 + "vw";
            sakura.style.animationDelay = Math.random() * 5 + "s";
            document.body.appendChild(sakura);

            setTimeout(function () {
                sakura.remove();
            }, 10000);
        }

        setInterval(createSakura, 200);
    </script>
</body>
</html>

✨代码的使用方法(超简单什么都不用下载)

🍓1.打开记事本 

🍓2.将上面的源代码复制粘贴到记事本里面将文件另存为HTML文件点击保存即可

🍓3.打开html文件(大功告成(●'◡'●))

✨代码讲解(选看,小白看到这里就可以结束了哈,不用再往下看了哈)

🍓这里必须说一下,代码不难,会使用HTML,CSS,JS就行,小白看也看不明白,所以以下内容选看哈,写在最后就是为了不影响小白们的观看体验哈(●'◡'●),祝大家开心快乐🎉🎉

🍓下面逐行解释代码的功能和作用:

1. `<!DOCTYPE html>`:声明文档类型为HTML,这里使用HTML5的文档类型声明。

2. `<html>`:表示整个HTML文档的根元素。

3. `<head>`:包含了文档的元数据信息和样式表。

4. `<title>`:设置网页的标题。

5. `<style>`:定义内部样式表,用于设置网页的样式。

6. `body`:定义页面的内容。

  • `display: flex;`:设置页面的布局为弹性布局,使其内容在垂直和水平方向上居中显示。
  • `align-items: center;`:使页面内容在垂直方向上居中对齐。
  • `justify-content: center;`:使页面内容在水平方向上居中对齐。
  • `height: 100vh;`:设置页面高度为视窗的高度,使其充满整个屏幕。
  • `margin: 0;`:移除页面的默认边距。
  • `overflow: hidden;`:隐藏页面内容溢出部分。
  • `background-color: #FCE8F8;`:设置页面背景颜色为粉色。

7. `#snow-container`:一个用于容纳下雪效果的元素。

  • `position: fixed;`:将元素的定位方式设置为固定定位,相对于浏览器窗口固定位置。
  • `top: 0; left: 0;`:将元素定位到页面的左上角。
  • `width: 100%; height: 100%;`:将元素的宽度和高度设置为100%,使其充满整个屏幕。
  • `pointer-events: none;`:禁用元素的鼠标事件,使其不接收用户的交互操作。
  • `z-index: -1;`:将元素的堆叠顺序设置为-1,使其在其他内容的下方。

8. `.snowflake`:定义雪花元素的样式。

  • `position: absolute;`:将元素的定位方式设置为绝对定位。
  • `width: 10px; height: 10px;`:设置元素的宽度和高度为10像素。
  • `background-color: #fff;`:设置元素的背景颜色为白色。
  • `border-radius: 50%;`:将元素的边框半径设置为50%,使其呈现圆形。
  • `opacity: 0.8;`:设置元素的透明度为0.8。
  • `pointer-events: none;`:禁用元素的鼠标事件。
  • `animation: snowfall linear infinite;`:应用名为`snowfall`的动画效果,设置为线性运动
  • ,并无限循环播放。

9. `@keyframes snowfall`:定义名为`snowfall`的关键帧动画。

  • `0%`:动画的起始状态,将元素向上移动到-100%的位置。
  • `100%`:动画的结束状态,将元素向下移动到视窗高度(100vh)的位置。

10. `.heart`:定义爱心元素的样式。

  • `width: 200px; height: 200px;`:设置元素的宽度和高度为200像素。
  • `position: relative;`:将元素的定位方式设置为相对定位。
  • `animation: heartbeat 1s infinite;`:应用名为`heartbeat`的动画效果,设置为1秒的循环播放。
  • `transform-origin: center center;`:设置元素的变换原点为中心点。

11. `.heart:before` 和 `.heart:after`:定义爱心元素的伪元素样式,用于绘制爱心的两个半边。

  • `content: "";`:设置伪元素的内容为空。
  • `background-color: red;`:设置伪元素的背景颜色为红色。
  • `border-radius: 50px 50px 0 0;`:设置伪元素的边框半径,实现爱心形状。
  • `position: absolute;`:将伪元素的定位方式设置为绝对定位。
  • `top: 0;`:将伪元素定位到顶部位置。

12. `#timeElapsed`:显示时间流逝的元素。

  • `text-align: center;`:设置文本内容在水平方向上居中对齐。
  • `font-size: 24px;`:设置文本的字体大小为24像素。
  • `margin-top: 20px;`:设置文本距离顶部的边距为20像素。

13. `<script>`:嵌入JavaScript代码,用于实现网页的交互和动态效果。

14. `function getTimeElapsed()`:定义一个获取时间流逝的函数。

  • `var startDate = new Date("2022-01-01");`:设置开始日期,可以替换为实际的起始日期。
  • `var currentDate = new Date();`:获取当前日期和时间。
  • `var timeDiff = currentDate - startDate;`:计算当前日期与开始日期之间的时间差。
  • 然后,通过一系列的计算,将时间差转换为天、小时、分钟和秒,并拼接成一个时间字符串。
  • 最后,将时间字符串设置为`timeElapsed`元素的文本内容。

15. `setInterval(getTimeElapsed, 1000);`:每隔一秒调用一次`getTimeElapsed`函数,更新时间流逝的显示。

16. `function createSnowflake()`:定义创建雪花的函数。

  • 创建一个`<div>`元素作为雪花。
  • 设置

雪花的样式,包括位置、动画持续时间、透明度、字体大小和背景颜色。

  • 随机生成雪花的背景颜色。
  • 设置雪花的内容为"命运之光"(可自定义)。
  • 返回创建的雪花元素。

17. `function getRandomColor()`:定义获取随机颜色的函数。

  • 生成一个随机的十六进制颜色。
  • 返回随机颜色。

18. `function snowfall()`:定义雪花下落效果的函数

  • 获取雪花容器元素。
  • 设置生成的雪花数量。
  • 循环生成雪花,并将其添加到雪花容器中。

19. `snowfall();`:调用`snowfall`函数,开始下雪效果。

20. `function createSakura()`:定义创建樱花的函数。

  • 创建一个`<div>`元素作为樱花。
  • 设置樱花的样式,包括位置和动画延迟时间。
  • 将樱花添加到页面中。
  • 设置一个定时器,在10秒后移除樱花。

21. `setInterval(createSakura, 200);`:每隔200毫秒调用一次`createSakura`函数,创建樱花效果。

🍓🍓这段代码实现了一个带有下雪背景效果和爱心的网页,同时显示了两个倒计时效果,一个是从指定日期开始计算的时间流逝,另一个是每秒钟刷新的下雪效果。通过CSS和JavaScript的配合,实现了页面的布局、样式和动态效果。

✨结语

能看到这里的就说明,你一定是一个十分有耐心且浪漫的人,最后的最后祝愿你开开心心,快快乐乐,早日脱单,就不用再为如何表白发愁啦(●'◡'●)🤭

 

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

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

相关文章

springboot+vue高校食堂点餐送餐配送系统

食堂送餐系统的开发过程中&#xff0c;采用B / S架构&#xff0c;主要使用java语言进行开发&#xff0c;结合最新流行的springboot框架。使用Mysql数据库和Eclipse/idea开发工具。该四川工商学院食堂送餐系统包括用户、商家、送餐员和管理员。其主要功能包括商家管理、用户管理…

【Azure】微软 Azure 基础解析(八)Azure 存储服务:Blob存储、队列存储、文件存储等特点与应用场景

本系列博文还在更新中&#xff0c;收录在专栏&#xff1a;「Azure探秘&#xff1a;构建云计算世界」 专栏中。 本系列文章列表如下&#xff1a; 【Azure】微软 Azure 基础解析&#xff08;三&#xff09;描述云计算运营中的 CapEx 与 OpEx&#xff0c;如何区分 CapEx 与 OpEx…

chatgpt赋能python:Python创建节点:简单易行的SEO优化技巧

Python创建节点&#xff1a;简单易行的SEO优化技巧 简介 在今天的数字时代&#xff0c;拥有强大在线存在感已经成为了非常重要的一种要素&#xff0c;而搜索引擎优化&#xff08;SEO&#xff09;就是其中重要的一环。优秀的SEO技巧不仅能够帮助网站吸引更多的访客&#xff0c…

chatgpt赋能python:Python编程实现高效的SEO搜索程序

Python编程实现高效的SEO搜索程序 在当今互联网时代&#xff0c;搜索引擎是人类获取信息的主要途径&#xff0c;而优化搜索引擎结果从而使自己的网站得到更多展示机会是一直以来网站优化重要的一环。Python语言以其简洁、高效、易学的特点&#xff0c;成为了编写高效SEO搜索程…

Linux 实操篇--定时任务调度

Linux 实操篇-定时任务调度 crond 任务调度 crontab 进行定时任务的设置 概述 任务调度&#xff1a;是指系统在某个时间执行的特定的命令或程序。 任务调度分类&#xff1a;1.系统工作&#xff1a;有些重要的工作必须周而复始地执行。如病毒扫描等 个别用户工作&#xff…

java-基础语法(二)

java-基础语法(二) 一、流程控制语句 1.1 流程控制语句分类 顺序结构 分支结构(if, switch) 循环 结构(for, while, do…while) 1.2 顺序结构 顺序结构执行流程图&#xff1a; 1.3 分支结构之if语句 if语句格式1 格式&#xff1a;if (关系表达式) {语句体; }执行流程&…

04.JavaWeb-Tomcat服务器+Maven

1.B/S架构 B/S架构即浏览器/服务器模式&#xff0c;他是对C/S架构的一种改进&#xff1b;与C/S架构相比B/S架构可以实现跨平台&#xff0c;客户端零维护&#xff0c;但是个性化能力低&#xff0c;响应速度较慢。 2.Tomcat服务器 Tomcat是一个用于运行Java Web应用程序的服务器&…

chatgpt赋能python:Python分解9位数的方法介绍

Python分解9位数的方法介绍 Python是一种广泛使用的编程语言&#xff0c;具有强大的功能和易于使用的语法。其中&#xff0c;分解一个9位数是一个常见的问题。在本篇文章中&#xff0c;将介绍如何用Python分解一个9位数。 分解9位数的方法 对于一个9位数&#xff0c;我们可以…

SVM算法的介绍

一、SVM算法的介绍 1.什么是SVM算法&#xff1f; SVM&#xff08;Support Vector Machine&#xff09;是一种常见的监督学习算法&#xff0c;用于进行二分类或多分类任务。它的主要思想是找到一个最优的超平面&#xff0c;将不同类别的样本分隔开。 超平面最大间隔介绍&#…

MyBatisPlus快速入门

MyBatisPlus 1、MyBatisPlus简介MyBatisPlus概述入门案例 2、标准数据层开发MyBatisPlus开启日志标准CRUD分页查询 3、DQL编程控制条件查询null值处理查询投影查询条件字段映射与表名映射 4、DML编程控制id生成策略控制多数据操作逻辑删除乐观锁 5、代码生成器 1、MyBatisPlus简…

testng介绍

1、java.lang.Exception: No runnable methods at org.junit.runners.BlockJUnit4ClassRunner.validateInstanceMethods IDEA run case抛出no runnable methods&#xff0c;project基于testng编写case 需要配置Run→Edit Configuration 2、task配置 test {useTestNG {//打印…

Vector-常用CAN工具 - CANoe迁移常见Port配置问题

从 CANoe 和 CANalyzer 12.0 SP4 版本开始&#xff0c;以太网迁移向导将在必要时自动开始将现有工具配置转换为新的基于端口的网络访问格式。尽管大多数现有配置都可以毫无问题地转换&#xff0c;但有些可能不会。如果在迁移过程中遇到问题&#xff0c;迁移向导将通过以下可能的…

LeetCode刷题(ACM模式)-04字符串

参考引用&#xff1a;代码随想录 注&#xff1a;每道 LeetCode 题目都使用 ACM 代码模式&#xff0c;可直接在本地运行&#xff0c;蓝色字体为题目超链接 1. 反转字符串 344. 反转字符串 编写一个函数&#xff0c;其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形…

PAT A1162 Postfix Expression

1162 Postfix Expression 分数 25 作者 陈越 单位 浙江大学 Given a syntax tree (binary), you are supposed to output the corresponding postfix expression, with parentheses reflecting the precedences of the operators. Input Specification: Each input file …

权限管理与Shiro入门

权限管理与Shiro入门 学习目标&#xff1a; 理解前端权限控制思路 理解有状态服务和无状态服务通过拦截器实现JWT鉴权 能够理解shiro以及shiro的认证和授权 前端权限控制 需求分析 需求说明 基于前后端分离的开发模式中&#xff0c;权限控制分为前端页面可见性权限与后…

操作系统复习3.1.1-内存非连续存储

基本分页存储管理 背景 固定分区带来的是内部内存碎片难以利用 而动态分配带来的外部内存碎片难以利用 而基本分页存储管理解决了这个问题&#xff0c;将一个进程分散地装入不同分区&#xff0c;避免了紧凑的处理 思想 将一个进程(43MB)装入内存&#xff0c;一个分页大小为…

【fluent】利用UDF和Scheme变量实现根据条件满足情况保存dat、case数据案例文件

一、问题背景 前一段时间在闲鱼上&#xff0c;遇到有一个人问我“在udf中如何实现某一个变量满足一定取值范围内才保存dat和case文件”。 而后我帮他解决了这个问题&#xff0c;在此处也将解决办法公益性地分享出来。 主要参考的是CFD online上的一篇讨论fluent udf, saving…

chatgpt赋能python:Python函数:介绍及应用

Python函数&#xff1a;介绍及应用 Python是一种功能强大的编程语言。函数是Python编程中最常用的组件之一。函数是用来执行特定的程序并返回结果的工具&#xff0c;可以在一个程序中调用多次。在本文中&#xff0c;我们将介绍Python函数的应用和使用方法。 Python函数的定义…

ant-design-vue将英文改为中文 DatePicker日期控件

ant-design设置DatePicker日期控件中文显示 ant-design-vue将英文改为中文 我们在使用 ant-design-vue 的时候 会遇到默认的语言是 英语 大部分我们需要转成为中文 这时候我们就需要进行配置 首先我们改单一组件的语言&#xff1a; <template><a-date-picker v-model:…