Jquery+CSS实现 图片点击放大 z-index,transform,transition,append()

点击图片后,实现图片选中放大,视觉效果类似浮在所有图片上面
Jquery+CSS实现 图片点击放大 z-index,transform,transition,append()
Jquery+CSS实现 图片点击放大 z-index,transform,transition,append()
思路
所有图片的hover添加函数,用z-index让图片浮起来。
具体实现
先写好HTML
HTML

<body>
		<!-- 用ul-li装载图片 -->
		<div class="max">
			<ul>
				<li>
					<a href="#"><img src="img/11.jpg"/></a>
				</li>
				<li>
					<a href="#"><img src="img/12.jpg"/></a>
				</li>
				<li>
					<a href="#"><img src="img/13.jpg"/></a>
				</li>
				<li>
					<a href="#"><img src="img/21.jpg"/></a>
				</li>
				<li>
					<a href="#"><img src="img/22.jpg"/></a>
				</li>
				<li>
					<a href="#"><img src="img/23.jpg"/></a>
				</li>
			</ul>
		</div>
		<!-- 图片放大后的div用来装载放大的图片以及右上角关闭窗口的‘按钮’ -->
		<div class="show">
			<div class="but"></div>
		</div>
	</body>

CSS样式

<style type="text/css">
		*{
			margin: 0;
			padding: 0;
		}
		/* 设置背景为渐变色 */
		body{
			background: linear-gradient(90deg,#99CCCC,#C5B3E5);
		}
		/* 设置装载图片的整个大DIV */
		.max{
			width:70%;
			height: 700px;
			border: 1px solid yellow;
			position: relative;
			margin: 0 auto;
		}
		ul{
			position: relative;
			margin:20px 0 0 80px;			
		}
		/* 取消li圆点样式,并让图片排成两列 */
		li{
			list-style: none;
			float: left;
			margin: 30px 0 0 20px;
		}
		/* 图片放大后的div,背景颜色应该设置深一点掩盖下面没被选中的图片。z-index应该设置高一点 */
		.show{
			width: 100%;
			height:700px;
			background: rgba(220,220,220,0.5);
			/*border: 1px solid red;*/
			position: absolute;
			padding: 180px 0 0 550px;
			margin-top: -700px ;
			z-index: 999;
			display: none;
		}
		/* 关闭窗口的“按钮”,实则为图片 */
		.but{	
			width:50px ;
			height: 30px;	
			background: url(img/false.jpg) no-repeat;
			position: absolute;
			/*float: right;*/
			/*border: 1px solid red;*/
			margin:-140px 0 0 700px;
			cursor: pointer;
		}
		.but:hover{
			width:50px ;
			height: 30px;
			background: url(img/hover.jpg) no-repeat;
		}
		/* 当图片放大后,应该把position设置为固定(fixed),用transform实现放大效果,transition实现时延 */
		.big{
			position: fixed;
			transform: scale(1.8);  
  			transition: all 1s ease 0s;
		}
	</style>

JQ

<script type="text/javascript">
		$(document).ready(function(){
			$(".max li").click(function(){	
				//获取图片链接			
				var ph=$(this).html();
				//显示最上面一层div
				$(".show").css("display","block");	
				//给最外层的div加图片																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																													
				$(".show").append(ph);
				//给图片加放大效果
				setTimeout(function(){
					$(".show a").addClass("big");
				},60);
				//点击“关闭窗口”的“按钮”后,最上层div隐藏	
				$(".but").click(function(){					
					$(".show a").empty();
					$(".show").css("display","none");
				});
			});
		});
	</script>

OK,效果实现了,我们来总结一下知识点吧
z-index
z-index属性指定一个元素的堆叠顺序。
拥有更高堆叠顺序的元素总是会处于堆叠顺序较低的元素的前面
transform
变形
transform属性应用于元素的2D或3D转换。这个属性允许你将元素旋转,缩放,移动,倾斜等。
transition
过渡
transition属性是一个速记属性有四个属性:transition-property, transition-duration, transition-timing-function, and transition-delay。
transition-property 指定过渡效果的class名
transition-duration 效果需要指定多少秒或毫秒才能完成
transition-timing-function 指定过渡效果的转速曲线
transition-delay 定义过渡效果开始的时候
注意: 始终指定transition-duration属性,否则持续时间为0,transition不会有任何效果。