!DOCTYPE html
html lang=zh-CN
head
meta charset=UTF-8
meta name=viewport content=width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no
title诚挚邀请 · 李雷 & 韩梅梅title
meta property=ogtitle content=李雷❤韩梅梅的婚礼邀请
meta property=ogdescription content=点击查看我们的婚礼邀请函
meta property=ogimage content=httpshanshi.love-invite.cnshare-shouzhang.jpg
link rel=stylesheet href=JSswiper-bundle.min.css
style
============ 引入手写字体(如果你有本地字体,可以替换掉这个) ============
@import url('httpsfonts.googleapis.comcss2family=Caveatwght@400;700&family=Zhi+Mang+Xing&display=swap');
{ margin0; padding0; box-sizingborder-box; -webkit-tap-highlight-colortransparent; }
html, body {
height100%; overflowhidden;
字体优先使用手写体
font-familyZhi Mang Xing, Caveat, PingFang SC, Microsoft YaHei, cursive, serif;
color#333; background#fcfaf5;
}
============ 通用 ============
.swiper-container { width100%; height100%; }
.swiper-slide {
width100%; height100%;
displayflex; flex-directioncolumn; justify-contentcenter; align-itemscenter;
text-aligncenter;
纸张纹理背景
background url('imagespaper.jpg') centercover no-repeat, #fcfaf5;
positionrelative; overflowhidden;
}
============ 第1页:封面 ============
.page-cover { padding 40px 20px; }
.cover-img-box {
position relative;
width 70%; max-width 280px;
background #fff;
padding 12px 12px 40px 12px; 拍立得留白
box-shadow 3px 5px 15px rgba(0,0,0,0.1);
transform rotate(-3deg); 稍微倾斜,手账感
margin-bottom 30px;
border 1px solid #eee;
}
.cover-img-box img { width 100%; display block; }
.cover-title {
font-size 2.2rem; color #d9534f; 手绘红
transform rotate(-2deg);
letter-spacing 2px;
}
.cover-sub {
font-size 1.2rem; color #4a7c9d; 手绘蓝
margin-top 15px;
}
.date-circle {
display inline-block;
margin-top 20px;
padding 10px 20px;
border 2px solid #d9534f;
border-radius 50% 40% 60% 30% 40% 50% 40% 60%; 不规则圆圈
transform rotate(5deg);
font-size 1rem; color #d9534f;
}
============ 第2页:照片日记 ============
.page-diary { padding 40px 20px; justify-content flex-start; }
.diary-title {
font-size 1.5rem; color #4a7c9d;
margin-bottom 20px;
border-bottom 2px dashed #4a7c9d;
padding-bottom 5px;
transform rotate(-2deg);
}
.photo-stack {
position relative;
width 100%;
max-width 300px;
margin-bottom 30px;
}
.polaroid {
background #fff;
padding 10px 10px 30px 10px;
box-shadow 2px 4px 12px rgba(0,0,0,0.15);
position absolute;
width 75%;
border 1px solid #eee;
}
.polaroid img { width 100%; display block; }
.polaroid.p1 { top 0; left 0; transform rotate(-5deg); z-index 2; }
.polaroid.p2 { top 40px; right 0; transform rotate(4deg); z-index 1; }
.diary-text {
font-size 1.1rem; color #333; line-height 1.8;
margin-top 180px; 避开照片
padding 0 10px;
text-align left;
}
============ 第3页:涂鸦日历 ============
.page-calendar { padding 40px 20px; }
.tape {
position absolute; top 10%; left 10%;
width 80px; height 25px;
background rgba(200, 200, 200, 0.4);
transform rotate(-10deg);
z-index 10;
}
.calendar-box {
background #fff;
border 2px solid #d9534f;
border-radius 10px;
padding 20px;
transform rotate(2deg);
box-shadow 4px 4px 0 rgba(217, 83, 79, 0.2);
width 90%; max-width 320px;
}
.calendar-box h2 { font-size 2.5rem; color #d9534f; margin-bottom 10px; }
.calendar-box p { font-size 1rem; color #4a7c9d; }
============ 第4页:照片展示 ============
.page-photo { padding 30px 20px; }
.photo-frame {
width 85%; max-width 320px;
background #fff; padding 10px;
border 3px solid #4a7c9d;
transform rotate(-3deg);
box-shadow 5px 5px 0 #4a7c9d;
margin-bottom 20px;
}
.photo-frame img { width 100%; display block; }
.quote {
font-size 1.2rem; color #d9534f;
writing-mode vertical-rl; 文字竖排
text-orientation upright;
height 150px; margin-top 10px;
}
============ 底部按钮弹幕表单占位 ============
.form-btn {
background #d9534f; color #fff;
padding 10px 30px; border-radius 30px;
font-size 1.2rem; border none;
margin-top 20px;
box-shadow 2px 2px 0 #a94442;
font-family inherit;
}
style
head
body
!-- 背景音乐 --
audio id=bgm loop preload=auto
source src=musicbgm.mp3 type=audiompeg
audio
div class=swiper-container
div class=swiper-wrapper
!-- 第1页:封面(手账拍立得) --
div class=swiper-slide page-cover
div class=cover-img-box ani swiper-animate-effect=fadeInDown swiper-animate-duration=1.5s
!-- 手绘相机涂鸦可以贴在这里 --
img src=imagescover.jpg alt=封面
!-- 假装是拍立得底部的写字区 --
div style=font-family 'Caveat', cursive; font-size 1.5rem; color #555; margin-top 15px;Our Wedding Partydiv
div
h1 class=cover-title ani swiper-animate-effect=zoomIn swiper-animate-duration=1.2s swiper-animate-delay=0.5s
林鑫意 & 易慈
h1
p class=cover-sub ani swiper-animate-effect=fadeIn swiper-animate-duration=1s swiper-animate-delay=1s
诚邀你的光临
p
div class=date-circle ani swiper-animate-effect=bounceIn swiper-animate-duration=1.2s swiper-animate-delay=1.5s
2026.10.03
div
div
!-- 第2页:照片日记(拍立得叠加) --
div class=swiper-slide page-diary
h2 class=diary-title ani swiper-animate-effect=fadeInLeft swiper-animate-duration=1s关于我们 about ush2
div class=photo-stack
div class=polaroid p1 ani swiper-animate-effect=rotateInDownLeft swiper-animate-duration=1.2s
img src=imagesphoto1.jpg alt=照片1
div
div class=polaroid p2 ani swiper-animate-effect=rotateInUpRight swiper-animate-duration=1.2s swiper-animate-delay=0.3s
img src=imagesphoto2.jpg alt=照片2
div
div
p class=diary-text ani swiper-animate-effect=fadeInUp swiper-animate-duration=1s swiper-animate-delay=0.6s
你看,这么多人,这么大的世界br
我遇到了你,你也遇到了我br
真好。
p
div
!-- 第3页:涂鸦日历(时间地点) --
div class=swiper-slide page-calendar
div class=tapediv
div class=calendar-box ani swiper-animate-effect=zoomIn swiper-animate-duration=1s
h210 03h2
p style=margin-bottom 15px;2026年10月3日 星期六p
p style=font-size 1.2rem; color #d9534f; margin-top 20px;
span style=font-size 1.5rem;📍span 涵碧楼酒店
p
div style=margin-top 15px;
span style=border 1px solid #4a7c9d; padding 5px 15px; color #4a7c9d; border-radius 20px; font-size 0.9rem;
Save The Date
span
div
div
button class=form-btn ani swiper-animate-effect=fadeInUp swiper-animate-duration=1s swiper-animate-delay=0.5s
👉 点击导航
button
div
!-- 第4页:照片展示 + 竖排文字 --
div class=swiper-slide page-photo
div class=photo-frame ani swiper-animate-effect=fadeInDown swiper-animate-duration=1s
img src=imagesphoto3.jpg alt=照片3
div
div class=quote ani swiper-animate-effect=fadeInRight swiper-animate-duration=1.5s swiper-animate-delay=0.5s
你是我平凡日子里最壮丽的风景
div
div
div
div class=swiper-paginationdiv
div
script src=JSswiper-bundle.min.jsscript
script
(function(){
function swiperAnimateCache(swiper){
var slides = swiper.slides;
for(var i=0;islides.length;i++){
var items = slides[i].querySelectorAll('.ani');
for(var j=0;jitems.length;j++){
var el = items[j];
var effect = el.getAttribute('swiper-animate-effect');
var duration = el.getAttribute('swiper-animate-duration') '1s';
var delay = el.getAttribute('swiper-animate-delay') '0s';
if(effect){
el.style.opacity = '';
el.setAttribute('data-ani-effect', effect);
el.setAttribute('data-ani-duration', duration);
el.setAttribute('data-ani-delay', delay);
}
}
}
}
function swiperAnimate(swiper){
var slide = swiper.slides[swiper.activeIndex];
if(!slide) return;
var items = slide.querySelectorAll('.ani');
for(var i=0;iitems.length;i++){
var el = items[i];
var effect = el.getAttribute('data-ani-effect');
var duration = el.getAttribute('data-ani-duration') '1s';
var delay = el.getAttribute('data-ani-delay') '0s';
if(effect){
el.style.animation = 'none';
el.offsetHeight;
el.style.animation = effect + ' ' + duration + ' ' + delay + ' both';
}
}
}
window.swiperAnimateCache = swiperAnimateCache;
window.swiperAnimate = swiperAnimate;
})();
script
script
var mySwiper = new Swiper('.swiper-container', {
direction 'vertical',
loop false,
speed 800,
mousewheel true,
pagination { el '.swiper-pagination', clickable true },
autoplay { delay 5000, disableOnInteraction false },
on {
init function () { swiperAnimateCache(this); swiperAnimate(this); },
slideChangeTransitionEnd function () { swiperAnimate(this); }
}
});
自动播放音乐(带微信防拦截逻辑)
document.addEventListener('touchstart', function playMusic() {
var bgm = document.getElementById('bgm');
if(bgm) bgm.play();
document.removeEventListener('touchstart', playMusic);
}, { once true });
script
body
html