前端代码分享--爱心

给对象写的,顺便源码给大家分享一下

就是简单的html+css+js,不复杂

xin1.html

<!DOCTYPE html>  
<html lang="zh-CN">  
<head>  
    <meta charset="UTF-8">  
    <title>写你自己的</title>  
    <link rel="stylesheet" href="petal.css">
    <style>  
        body {  
            margin: 0;  
            overflow: hidden;  
            background: radial-gradient(circle at bottom, #ff89b5, #ffe0e5);  
            display: flex;  
            justify-content: center;  
            align-items: center;  
            position: relative;  
            height: 100vh;  
        }  
        /* 心形动画 */  
        .heart {  
            position: absolute;  
            z-index: 10; /* 确保爱心在最上层 */  
            width: 150px;  
            height: 135px;  
            background: pink;  
            transform: rotate(45deg);  
            animation: heartbeat 1s infinite;  
        }  
        .heart::before,  
        .heart::after {  
            content: "";  
            position: absolute;  
            width: 150px;  
            height: 135px;  
            background: pink;  
            border-radius: 50%;  
        }  
        .heart::before {  
            left: -75px;  
            border-radius: 50% 0 0 50%;  
        }  
        .heart::after {  
            top: -75px;  
            border-radius: 50% 50% 0 0;  
        }  
        @keyframes heartbeat {  
            0%, 100% {  
                transform: rotate(45deg) scale(1);  
            }  
            50% {  
                transform: rotate(45deg) scale(1.1);  
            }  
        }  
        /* 文字动画 */  
        .text {  
            position: absolute;  
            z-index: 11;  
            top: 47%;  
            left: 50%;  
            transform: translate(-50%, -50%);  
            color: #fff;  
            font-family: 'KaiTi', cursive;  
            font-size: 48px;  
            font-weight: bold;  
            opacity: 0;  
            animation: textFadeIn 4s forwards;  
            text-shadow: 0 0 10px rgba(255, 255, 255, 0.8);  
        }  
        @keyframes textFadeIn {  
            0% { opacity: 0; transform: translate(-50%, -50%) scale(0.5);}  
            100% { opacity: 1; transform: translate(-50%, -50%) scale(1);}  
        }  
        /* 花瓣样式 */  
        
        .photo-display {  
            position: absolute;  
            top: 0;  
            left: 0;  
            width: 100%;  
            height: 100%;  
            display: flex;  
            z-index: 1;  
            opacity: 0;  
            animation: photoFadeIn 2s forwards;  
        }  
        .photo-display img {  
            width: 50%;  
            height: 100%;  
            object-fit: cover;  
        }  
        @keyframes photoFadeIn {  
            from { opacity: 0; }  
            to { opacity: 1; }  
        }
        .button {  
            position: fixed;  
            bottom: 10px;  
            left: 10px;  
            background-color: #FF69B4;  
            color: white;  
            border: none;  
            padding: 10px 20px;  
            text-align: center;  
            text-decoration: none;  
            display: inline-block;  
            font-size: 16px;  
            margin: 10px 8px;  
            cursor: pointer;  
            border-radius: 12px;  
            z-index: 15;  
            opacity: 0.7;  
        }  
        .button:hover {  
            opacity: 1;  
            background-color: #FF1493;  
        }  
</style>  
</head>  
<body>  
    <div class="heart"></div>  
    <div class="text">随便写</div>  
    <!--<audio id="bgm" src="简单爱.mp3" loop></audio>  -->  

    <!--  此处为二张拼接的照片链接 
    <div class="photo-display">  
        <img src="photo/1.jpg" alt="欣怡1"> 
        <img src="photo/2.jpg" alt="欣怡2">  
    </div>  
    
    这块的话是主页面的背景,大家看着调整
    -->  

    <a href="message.html" class="button">查看留言</a> 

    <script>  
        // 创建飘落花瓣  
        const petalCount = 30;  
        for (let i = 0; i < petalCount; i++) {  
            createPetal();  
        }  
        function createPetal() {  
            let petal = document.createElement('div');  
            petal.classList.add('petal');  
            petal.style.left = Math.random() * 100 + 'vw';  
            petal.style.animationDuration = 5 + Math.random() * 5 + 's';  
            petal.style.animationDelay = Math.random() * 5 + 's';  
            petal.style.transform = 'translateX(0) rotate(' + Math.random() * 360 + 'deg)';  
            document.body.appendChild(petal);  
            petal.addEventListener('animationend', () => {  
                petal.remove();  
                createPetal();  
            });  
        }  

        // 音乐和图片展示处理   
        const photoDisplay = document.querySelector('.photo-display');  
        function playAudioAndShowPhotos() {  
            photoDisplay.style.opacity = '1'; // 显示图片  
            document.querySelector('.click-to-play').style.display = 'none';  
            document.removeEventListener('click', playAudioAndShowPhotos);  
        }  

        document.addEventListener('click', playAudioAndShowPhotos);  
</script>  
</body>  
</html>

message.html

<!DOCTYPE html>  
<html lang="zh-CN">  
<head>  
    <meta charset="UTF-8">  
    <title>写你的</title>  
    <link rel="stylesheet" href="petal.css">
    <style>  
        body {  
            display: flex;  
            justify-content: center;  
            align-items: center;  
            height: 100vh;  
            margin: 0;  
            background-color: #fff0f5;  
            font-family: 'KaiTi', cursive;  
            color: #e75480;  
            padding: 20px;  
            box-sizing: border-box;  
            text-shadow: 1px 1px 2px #ffa6c9;  
        }  
        .message-container {  
            text-align: center;  
            max-width: 600px;  
        }  
        .message-container h1 {  
            font-size: 36px;  
            margin-bottom: 20px;  
        }  
        .message-container p {  
            font-size: 18px;  
            line-height: 1.5;  
            text-indent: 2em;
        }  
</style>  
</head>  
<body>  
    <div class="message-container">  
     <!--替换为你的内容-->  
    </div>

    <audio id="bgm" src="简单爱.mp3" loop></audio> 
     <!--替换为你的内容-->  

    <script>  
    const petalCount = 30;  
        for (let i = 0; i < petalCount; i++) {  
            createPetal();  
        }  
        function createPetal() {  
            let petal = document.createElement('div');  
            petal.classList.add('petal');  
            petal.style.left = Math.random() * 100 + 'vw';  
            petal.style.animationDuration = 5 + Math.random() * 5 + 's';  
            petal.style.animationDelay = Math.random() * 5 + 's';  
            petal.style.transform = 'translateX(0) rotate(' + Math.random() * 360 + 'deg)';  
            document.body.appendChild(petal);  
            petal.addEventListener('animationend', () => {  
                petal.remove();  
                createPetal();  
            });  
        }  
        
    const audio = document.getElementById('bgm');  
        const photoDisplay = document.querySelector('.photo-display');  
        function playAudioAndShowPhotos() {  
            audio.play();  
            photoDisplay.style.opacity = '1'; // 显示图片  
            document.querySelector('.click-to-play').style.display = 'none';  
            document.removeEventListener('click', playAudioAndShowPhotos);  
            localStorage.setItem('musicPlaying', 'true'); // 保存音乐状态  
        }  

        
        function startMusic() {  
            if (localStorage.getItem('musicPlaying') === 'true') {  
                audio.play();  
            }  
        }  

        document.addEventListener('click', playAudioAndShowPhotos);  
</script>  
</body>  
</html>

petal.css

.petal {  
    position: fixed;  
    top: -50px;  
    background-image: url('photo/hua.png');   
    background-size: contain;  
    background-repeat: no-repeat;  
    width: 50px;  
    height: 50px;  
    opacity: 0.8;  
    pointer-events: none;  
    animation: fall linear infinite;  
    z-index: 5;  
}  
@keyframes fall {  
    0% {  
        transform: translateX(0) rotate(0deg);  
    }  
    100% {  
        transform: translateX(200px) translateY(100vh) rotate(360deg);  
    }  
}

飘落花瓣的原图(ai生成的)

在这里插入图片描述

大家把背景图扣一下,还有html里的内容替换一下就行

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

buildroot制作自己的软件包(可以理解为应用程序)

以helloworld为例记录使用步骤 一&#xff1a;书写自己的源程序以及Makefile helloworld.c #include <stdio.h>int main(int argc, char **argv) {printf("hello world\r\n");return 0; }Makefile all: helloworldhelloworld: helloworld.o$(CC) -o hellow…

关于嵌入式学习的一些短浅经验

一、写在前面 感谢在 10.23&#xff0c;各位大佬对我进行的模拟面试&#xff0c;我也发现了我对知识的不熟练的部分&#xff0c;比如 IPC 方法和线程同步方法的知识。模拟面试第四期-已经拿到大厂 OFFER 的研究生大佬-LINUX 卷到飞起_哔哩哔哩_bilibili 然后&#xff0c;沈阳…

OpenRTP 传输增加OpenRTPServer

开源地址 最近增加了OpenRTPServer&#xff0c; 已经修改完成一版放在了目录下&#xff0c;window和linux下编译都成功了&#xff0c;不过由于修改代码CMakefile 需要修改&#xff0c;先放放 OpenRTP开源地址 vlc得纠错传输方式 我发现我代码写错以后&#xff0c;vlc 依然能…

重要:民族共同体精品课格式说明

铸牢中华民族共同体意识精品课以微课形式呈现&#xff0c;包括微课 视频、教学设计讲义、课件等。 微课视频 微课视频应采用“教师讲解多媒体大屏”的形式&#xff0c;适当呈现授课教师画面&#xff0c;增强教学的交互性和画面的可视性。单个微课视频时长&#xff1a;高校专题…

【已解决】cannot import name ‘Literal‘ from ‘typing‘

问题描述 在用vscode进行debug的时候&#xff0c;报错cannot import name Literal from typing 解决方法 方法一&#xff1a;升级Python版本到3.8以上 我的python版本是3.7&#xff0c;但由于环境都配好了&#xff0c;升级太麻烦&#xff0c;没采用该方法 方法二&#xff1…

C++和Java该如何进行选择?

曾经的自己与许多C程序员都有着一样的盲目自信&#xff1a;认为掌握了C&#xff0c;在去学习Java上手会容易很多。 到底是谁给了你这种勇气和自信&#xff1f; 很多人经常会说&#xff0c;Java这种通过虚拟机运行的语言&#xff0c;虚拟机本身就是C开发的&#xff0c;根本就没…

Java 多线程(九)—— JUC 常见组件 与 线程安全的集合类

Callable 与 FutureTask Callable 接口和 Runnable 接口是并列关系&#xff0c;都是用来给线程提供任务的&#xff0c;只不过 Callable 接口的任务可以带有返回值。 但是 Callable 接口创建的任务不能直接传入 Thread 里面&#xff0c;这也是为了 解耦合&#xff0c;我们可以使…

pdf合并,这4款好用软件分分钟解决问题!

PDF作为一种跨平台、不易被篡改的文档格式&#xff0c;广泛应用于工作、学习和日常生活中。然而&#xff0c;当面对多个PDF文件需要合并成一个时&#xff0c;繁琐的手动操作往往让人头疼不已。别担心&#xff0c;今天就给大家安利4款超实用的PDF合并软件&#xff0c;它们不仅操…

c++二级指针

如果要通过函数改变一个指针的值&#xff0c;要往函数中传入指针的指针 如果要通过函数改变一个变量的值&#xff0c;那就要往函数中传入这个变量的地址 改变a的值和b的值 #include <iostream>using namespace std;void swap(int* a, int* b) {int temp *a;*a *b;*b …

pyvideotrans 最佳AI翻译软件

文章目录 体验视频翻译配音工具主要用途和功能预打包版本(仅win10/win11可用&#xff0c;MacOS/Linux系统使用源码部署)MacOS源码部署Linux 源码部署Window10/11 源码部署源码部署问题说明使用教程和文档语音识别模型:视频教程(第三方)软件预览截图相关联项目致谢 体验 不错&a…

根据Redis漏洞通知的整改修复过程

一、收到通知&#xff1a; 二、查看本校“宝山商城&#xff08;教学&#xff09;”已安装的Redis版本号 对照影响范围的版本号&#xff0c;在其内&#xff0c;所以需要升级Redis版本。 三、升级centos中的Redis版本 在Cent0S系统中&#xff0c;如果我们需要升级Redis版本&…

C++,STL 048(24.10.25)

内容 set容器对内置数据类型、自定义数据类型指定排序规则。 运行代码 &#xff08;1&#xff09;内置数据类型 #include <iostream> #include <set>using namespace std;// set容器默认排序规则为升序&#xff08;从小到大&#xff09;&#xff0c;可以通过仿函…

若依框架篇-若依集成 X-File-Storage 框架(实现图片上传阿里云 OSS 服务器)、EasyExcel 框架(实现 Excel 数据批量导入功能)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 实现使用 Excel 文件批量导入 1.1 导入功能的前端具体实现 1.2 导入功能的后端具体实现 1.3 使用 EasyExcel 框架实现 Excel 读、写功能 1.4 将 Easy Excel 集成到…

基于SSM+微信小程序考试的管理系统(考试1)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 基于SSM微信小程序考试的管理系统实现了管理员及用户。 1、管理员功能有个人中心&#xff0c;用户管理&#xff0c;考试资料管理&#xff0c;用户交流管理&#xff0c;试卷管理&#xff…

新能源汽车充电设施在储充电站的应用

0引言 全球能源和环境问题促使新能源汽车受到关注&#xff0c;但其推广受充电设施和能源供应限制。光伏站、储能站和电动汽车充放电站作为可再生能源利用和储存方式&#xff0c;具有巨大潜力。本研究旨在探索新能源汽车充电设施与这些站点的融合模式&#xff0c;以支持新能源汽…

【ROS GitHub使用】

提示&#xff1a;环境配置为Ubuntu20.04&ROS Noetic 文章目录 前言一、创建工作空间目录二、尝试从GitHub上下载一个源码包&#xff0c;对它进行编译&#xff0c;运行这个源码包1.打开script文件夹&#xff0c;右键文件夹空白区域&#xff0c;选择在中端中打开&#xff1b;…

OceanBase 安全体系解析之身份鉴别

本文作者&#xff1a;金长龙爱可生测试工程师&#xff0c;负责 DMP 产品的测试工作。 本文以MySQL为参照&#xff0c;详细阐述了OceanBase 在MySQL模式下的安全体系中&#xff0c;身份鉴别的能力&#xff0c;涵盖了身份鉴别机制、用户名的构成规则、密码的复杂度&#xff0c;以…

ctfshow(66->70)--RCE/命令执行漏洞--禁用命令执行函数

Web66 源代码&#xff1a; if(isset($_POST[c])){$c $_POST[c];eval($c); }else{highlight_file(__FILE__); }代码审计&#xff1a; POST传参c&#xff0c;eval进行代码执行。 思路&#xff1a; 由于题目过滤了命令执行函数&#xff0c;所以使用其他方法进行RCE。 先使用c…

自定义类型1:结构体的深入学习

文章目录 前言一、结构体类型的声明1、结构体回顾1.1、结构体声明1.2、结构体变量的创建和初始化 2、结构的特殊声明3、结构体的自引用 二、结构体的内存对齐1&#xff0c;什么叫偏移量2、对齐规则3、为什么存在内存对齐4、修改默认对齐数 三、结构体传参四、结构体实现位段1、…

通过异地组网工具+RustDesk实现虚拟局域网使用远程桌面RDP

通过异地组网工具RustDesk实现虚拟局域网使用远程桌面RDP 预期效果 常见的远程桌面工具就不多说&#xff0c;麻烦而且不好用 QQ 使用普及率高 卡顿、延迟高 TeamViewer 功能强大、兼容性好 官方查询商业用途频繁 向日葵 安全性高、支持多种设备 强制登录、免费用户限速、限…