照片墙
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>照片墙</title>
<style>
* {
margin: 0;
padding: 0;
}
ul {
height: 400px;
background-color: skyblue;
border: 1px solid #000;
margin-top: 100px;
/* ul内容水平居中*/
text-align: center;
}
ul li {
list-style: none;
width: 150px;
height: 200px;
/*使用浮动不好控制,直接行内块级在一排*/
display: inline-block;
background-color: red;
margin-top: 100px;
transition: all 1s;
/*开启相对定位,相对于原来标准流位置,没有变化,并修改层级结构*/
position: relative;
}
ul li:nth-child(1) {
transform: rotate(30deg);
}
ul li:nth-child(2) {
transform: rotate(-40deg);
}
ul li:nth-child(3) {
transform: rotate(10deg);
}
ul li:nth-child(4) {
transform: rotate(45deg);
}
ul li img {
width: 150px;
height: 200px;
border: 5px solid #ffffff;
box-sizing: border-box;
}
ul li:hover {
/* 放大倍数 */
/*为何没有设置旋转角度,后边的transform会覆盖前边的,
上边设置旋转角度被覆盖,所以最后的样式才是最终样式,*/
transform: scale(1.5);
/*放在哪个身上哪个堆叠顺序变大,盖住其他图片*/
z-index: 998;
}
</style>
</head>
<body>
<ul>
<li><img src="images/MBG.jpg" alt=""></li>
<li><img src="images/2.jpg" alt=""></li>
<li><img src="images/3.jpg" alt=""></li>
<li><img src="images/4.jpg" alt=""></li>
</ul>
</body>
</html>
注意点
1、css的层叠性,后边属性会覆盖前边的同名属性,所以旋转恢复原位直接重写transform属性就好。
2.动画三要素还是要注意谁的属性发生变化,在里边写动画属性,这个案例不要写到img里边去。
3.我们悬停的图片肯定优先级高,不想被其他图片盖住,使用z-index属性,开启定位流,绝对定位相当于body,放大会改变位置,相对定位只会相对于标准流位置。并且将z-index属性放到hover中,悬停在哪,哪里修改。