照片牆(transform/transition/z-index)

407指導員發表於2020-11-28

照片牆

<!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中,懸停在哪,哪裡修改。

相關文章