给对象写的,顺便源码给大家分享一下
就是简单的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里的内容替换一下就行