如何用HTML+CSS制作3D动态相册? #情人节表白#

HTML代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>3D立体相册</title>
<link type="text/css" href="css/index.css" rel="stylesheet" />
</head>
</body>
<audio autoplay="autoplay" loop="loop" preload="auto" controls="controls"
	src="C:\Users\chdn\Desktop\3D Album\周杰伦 - 告白气球.mp3">
</audio>
<div class="box">
	<ul class="minbox"><!-- 内层 -->
		<li></li>
		<li></li>
		<li></li>
		<li></li>
		<li></li>
		<li></li>
	</ul>
	<ol class="maxbox"><!-- 外层 -->
		<li></li>
		<li></li>
		<li></li>
		<li></li>
		<li></li>
		<li></li>
	</ol>
</div>
</body>
</html>

CSS代码:

@charset "utf-8";
*{
	margin:0;
	padding:0;
}
body{
	max-width: 100%;
	min-width: 100%;
	height: 100%;
	background-size: cover;
	background-repeat: no-repeat;
	background-attachment: fixed;
	background-size:100% 100%;
	position: absolute;
	margin-left: auto;
	margin-right: auto;
	background: url(../img/1.png) no-repeat 0 0;
}
li{
	list-style: none;
}
.box{
	width:200px;
	height:200px;
	background-size: cover;
	background-repeat: no-repeat;
	background-attachment: fixed;
	background-size:100% 100%;
	position: absolute;
	margin-left: 42%;
	margin-top: 22%;
	-webkit-transform-style:preserve-3d;
	-webkit-transform:rotateX(13deg);
	-webkit-animation:move 10s linear infinite;/* 旋转速度,时间越短速度越快 */
}
.minbox{
	width:100px;
	height:100px;
	position: absolute;
	left:50px;
	top:30px;
	-webkit-transform-style:preserve-3d;
}
.minbox li{
	width:100px;
	height:100px;
	position: absolute;
	left:0;
	top:0;
}
.minbox li:nth-child(1){
	background: url(../img/1.jpg) no-repeat 0 0;
		background-size:100px 100px;
	-webkit-transform:translateZ(50px);
}
.minbox li:nth-child(2){
	background: url(../img/2.jpg) no-repeat 0 0;
		background-size:100px 100px;
	-webkit-transform:rotateX(180deg) translateZ(50px);
}
.minbox li:nth-child(3){
	background: url(../img/3.jpg) no-repeat 0 0;
		background-size:100px 100px;
		-webkit-transform:rotateX(-90deg) translateZ(50px);
}
.minbox li:nth-child(4){
	background: url(../img/4.jpg) no-repeat 0 0;
	background-size:100px 100px;	
	-webkit-transform:rotateX(90deg) translateZ(50px);
}
.minbox li:nth-child(5){
	background: url(../img/5.jpg) no-repeat 0 0;
	background-size:100px 100px;	
	-webkit-transform:rotateY(-90deg) translateZ(50px);
}
.minbox li:nth-child(6){
	background: url(../img/6.jpg) no-repeat 0 0;
	background-size:100px 100px;	
	-webkit-transform:rotateY(90deg) translateZ(50px);
}
.maxbox li:nth-child(1){
	background: url(../img/1.jpg) no-repeat 0 0;
		background-size:400px 400px;	
	-webkit-transform:translateZ(50px);
}
.maxbox li:nth-child(2){
	background: url(../img/2.jpg) no-repeat 0 0;
	background-size:400px 400px;	
	-webkit-transform:rotateX(180deg) translateZ(50px);
}
.maxbox li:nth-child(3){
	background: url(../img/3.jpg) no-repeat 0 0;
		background-size:400px 400px;	
	-webkit-transform:rotateX(-90deg) translateZ(50px);
}
.maxbox li:nth-child(4){
	background: url(../img/4.jpg) no-repeat 0 0;
		background-size:400px 400px;	
	-webkit-transform:rotateX(90deg) translateZ(50px);
}
.maxbox li:nth-child(5){
	background: url(../img/5.jpg) no-repeat 0 0;
		background-size:400px 400px;	
	-webkit-transform:rotateY(-90deg) translateZ(50px);
}
.maxbox li:nth-child(6){
	background: url(../img/6.jpg) no-repeat 0 0;
		background-size:400px 400px;	
	-webkit-transform:rotateY(90deg) translateZ(50px);
}
.maxbox{
	width: 800px;
	height: 400px;
	position: absolute;
	left: 0;
	top: -20px;
	-webkit-transform-style: preserve-3d;
	
}
.maxbox li{
	width: 200px;
	height: 200px;
	background: #fff;
	border:1px solid #ccc;
	position: absolute;
	left: 0;
	top: 0;
	opacity: 0.2;
	-webkit-transition:all 1s ease;
}
.maxbox li:nth-child(1){
	-webkit-transform:translateZ(100px);
}
.maxbox li:nth-child(2){
	-webkit-transform:rotateX(180deg) translateZ(100px);
}
.maxbox li:nth-child(3){
	-webkit-transform:rotateX(-90deg) translateZ(100px);
}
.maxbox li:nth-child(4){
	-webkit-transform:rotateX(90deg) translateZ(100px);
}
.maxbox li:nth-child(5){
	-webkit-transform:rotateY(-90deg) translateZ(100px);
}
.maxbox li:nth-child(6){
	-webkit-transform:rotateY(90deg) translateZ(100px);
}
.box:hover ol li:nth-child(1){
	-webkit-transform:translateZ(300px);
	width: 400px;
	height: 400px;
	opacity: 0.9;
	left: -100px;
	top: -100px;
}
.box:hover ol li:nth-child(2){
	-webkit-transform:rotateX(180deg) translateZ(300px);
	width: 400px;
	height: 400px;
	opacity: 0.9;
	left: -100px;
	top: -100px;
}
.box:hover ol li:nth-child(3){
	-webkit-transform:rotateX(-90deg) translateZ(300px);
	width: 400px;
	height: 400px;
	opacity: 0.9;
	left: -100px;
	top: -100px;
}
.box:hover ol li:nth-child(4){
	-webkit-transform:rotateX(90deg) translateZ(300px);
	width: 400px;
	height: 400px;
	opacity: 0.9;
	left: -100px;
	top: -100px;
}
.box:hover ol li:nth-child(5){
	-webkit-transform:rotateY(-90deg) translateZ(300px);
	width: 400px;
	height: 400px;
	opacity: 0.9;
	left: -100px;
	top: -100px;
}
.box:hover ol li:nth-child(6){
	-webkit-transform:rotateY(90deg) translateZ(300px);
	width: 400px;
	height: 400px;
	opacity: 0.9;
	left: -100px;
	top: -100px;
}
@keyframes move{
	0%{
		-webkit-transform: rotateX(13deg) rotateY(0deg);
	}
	100%{
		-webkit-transform:rotateX(13deg) rotateY(360deg);
	}
}

PS:
1.
在这里插入图片描述
只需把红线处的图片名称改为你所需要的图片对应的名称即可。
2.
在这里插入图片描述
这是背景图片。
3.
在这里插入图片描述
图中选中部分为背景音乐。
附上最终的效果:
在这里插入图片描述
如果有小伙伴(小白)不会具体操作的话,可以私信或留言!

  • 13
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
好的,下面是一个简单的示例,你可以根据自己的需求进行修改和优化。 HTML代码: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>表白页面</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <div class="wrapper"> <div class="box front"> <h1>我喜欢你</h1> <p>你是我生命中最重要的人,我想把我的心交给你,与你携手走过每一天。</p> </div> <div class="box back"> <h1>愿意接受我的表白吗?</h1> <button class="yes">YES</button> <button class="no">NO</button> </div> </div> <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script> <script src="main.js"></script> </body> </html> ``` CSS代码: ```css * { margin: 0; padding: 0; box-sizing: border-box; } body { background-color: #f9f9f9; } .wrapper { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 400px; height: 400px; perspective: 1000px; } .box { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: #fff; border-radius: 10px; box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2); padding: 30px; text-align: center; transition: transform 0.5s ease; backface-visibility: hidden; } .front { transform: rotateY(0deg); } .back { transform: rotateY(180deg); } h1 { font-size: 30px; margin-bottom: 20px; color: #f44336; } p { font-size: 18px; line-height: 1.5; color: #333; } button { display: block; margin: 30px auto 0; padding: 10px 20px; background-color: #f44336; border: none; border-radius: 20px; color: #fff; font-size: 18px; cursor: pointer; transition: background-color 0.3s ease; } button:hover { background-color: #d32f2f; } ``` JavaScript代码: ```javascript $('.box').on('click', function() { $(this).toggleClass('front back'); }); $('.yes').on('click', function() { alert('太好了,谢谢你接受我的表白!我们在一起吧!'); }); $('.no').on('click', function() { alert('很遗憾,但我还是要说一句:我喜欢你!'); }); ``` 以上代码实现了一个简单的表白页面,点击页面的任意一处可以翻转卡片,点击YES和NO按钮可以弹出对应的提示框。你可以根据需要进行修改和优化。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值