CSS3,3D效果轮播图

---恢复内容开始---

大家还记得我昨天的3D拖拽立方体吗??我昨天还说过css还可以做轮播图,所以咱们今天就写一下,css的轮播图吧!

....这个轮播图主要是用CSS3里的transform的旋转属性来完成3D效果的,然后配合原生js的显示隐藏,达到了3D旋转轮播图的效果:

<!DOCTYPE HTML>
<html>

	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
		<title>3D图片切换1</title>
		<style>
			/*设置一个关键帧*/
			@-webkit-keyframes open {
				0% {
					-webkit-transform: rotateX(180deg);
					opacity: 0;
				}
				57% {
					-webkit-transform: rotateX(-16deg);
					opacity: 1;
				}
				66% {
					-webkit-transform: rotateX(14deg);
				}
				74% {
					-webkit-transform: rotateX(-12deg);
				}
				81% {
					-webkit-transform: rotateX(10deg);
				}
				87% {
					-webkit-transform: rotateX(-8deg);
				}
				92% {
					-webkit-transform: rotateX(6deg);
				}
				96% {
					-webkit-transform: rotateX(-4deg);
				}
				100% {
					-webkit-transform: rotateX(0deg);
				}
			}
			
			@-webkit-keyframes clos {
				0% {
					-webkit-transform: rotateX(0deg);
					opacity: 1;
				}
				100% {
					-webkit-transform: rotateX(-180deg);
					opacity: 0;
				}
			}
			
			body {
				background: #eee;
			}
			
			.box {
				width: 600px;
				height: 400px;
				position: relative;
				margin: 30px auto;
			}
			
			/*按钮*/
			
			#prev,
			#next {
				width: 50px;
				height: 50px;
				background: #efefef;
				border-radius: 25px;
				position: absolute;
				top: 100px;
				box-shadow: 2px 2px 10px #666;
				text-align: center;
				font-size: 40px;
				line-height: 50px;
				font-family: Verdana, Geneva, sans-serif;
				text-decoration: none;
				color: #fff;
				-webkit-text-stroke: 2px #ccc;
			}
			
			#prev {
				left: -100px;
			}
			
			#next {
				right: -100px;
			}
			/*图片区*/
			#imgs {
				width: 600px;
				height: 400px;
				position: relative;
				-webkit-transform-style: preserve-3d;
				-webkit-perspective: 1000px;
			}
			/*图片*/
			#imgs img {
				width: 600px;
				height: 400px;
				position: absolute;
				left: 0;
				top: 0;
				-webkit-transform-origin: bottom;
				-webkit-transform: rotateX(-180deg);
				opacity: 0;
			}
			/*设置显示和隐藏后的样式*/
			#imgs .show {
				-webkit-animation: open 1.2s ease-in;
				-webkit-transform: rotateX(0deg);
				opacity: 1;
			}
			
			#imgs .hide {
				-webkit-animation: clos 1s ease;
				-webkit-transform: rotateX(-180deg);
				opacity: 0;
			}
		</style>
		<script>
			
			window.onload = function() {
				//要用到的元素获取元素
				var oPrev = document.getElementById("prev");
				var oNext = document.getElementById("next");
				var aImg = document.getElementsByTagName("img");
				var iNow = 0;
				//上一页点击事件
				oPrev.onclick = function() {
					
					aImg[iNow].className = "hide";
					iNow--;
					if(iNow < 0) {
						//判断全局变量
						iNow = aImg.length - 1;
					}
					aImg[iNow].className = "show";
				};
				//下一页点击事件
				oNext.onclick = function() {
					aImg[iNow].className = "hide";
					iNow++;
					if(iNow == aImg.length) {
//					如果全局变量和长度相等,就变回第一张,造成视觉循环的假象
						iNow = 0;
					}
					aImg[iNow].className = "show";
				};
			}
		</script>
	</head>

	<body>
		<div class="box">
			<!--上一页-->
			<a href="#" id="prev"><</a>
			<div id="imgs">
				<img src="img/img1.jpg" alt="" class="show" />
				<img src="img/img2.jpg" alt="" />
				<img src="img/img3.jpg" alt="" />
				<img src="img/img4.jpg" alt="" />
				<img src="img/img5.jpg" alt="" />
			</div>
			<!--下一页-->
			<a href="#" id="next">></a>
		</div>
	</body>
</html>

  不知道你们学会了吗???很简单哦!

---恢复内容结束---

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的基于CSS的3D轮效果,可以实现4张片的展示: HTML代码: ``` <div class="carousel"> <figure class="slide"> <img src="image1.jpg" alt="Image 1"> </figure> <figure class="slide"> <img src="image2.jpg" alt="Image 2"> </figure> <figure class="slide"> <img src="image3.jpg" alt="Image 3"> </figure> <figure class="slide"> <img src="image4.jpg" alt="Image 4"> </figure> </div> ``` CSS代码: ``` .carousel { position: relative; width: 100%; height: 500px; perspective: 1500px; margin: 0 auto; } .slide { position: absolute; top: 0; left: 0; width: 100%; height: 100%; transform-style: preserve-3d; transition: transform 1s; } .slide:nth-child(1) { transform: translateZ(0); } .slide:nth-child(2) { transform: rotateY(90deg) translateZ(200px); } .slide:nth-child(3) { transform: rotateY(180deg) translateZ(200px); } .slide:nth-child(4) { transform: rotateY(270deg) translateZ(200px); } .carousel:hover .slide { transform: rotateY(-90deg); } .slide img { display: block; width: 100%; height: 100%; backface-visibility: hidden; object-fit: cover; } ``` 解释: - `perspective` 属性定义了观察者距离物体的距离,用于增强3D效果。 - `transform-style` 属性定义了子元素如何在3D空间中呈现,`preserve-3d` 值表示子元素保留其3D位置。 - `transform` 属性定义了元素的变换,包括平移、旋转、缩放等操作。`translateZ` 表示在z轴上平移,`rotateY` 表示绕y轴旋转。 - `transition` 属性定义了元素变换的过渡效果。 - `backface-visibility` 属性定义了元素背面是否可见,`hidden` 值表示不可见。 - `object-fit` 属性定义了片如何适应元素的大小,`cover` 值表示保持宽高比例,填充元素。 点击鼠标滚轮可以进行交互,左右移动鼠标可以旋转轮。可以根据实际需求进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值