CSS 例項之滾動的圖片欄

Assist發表於2018-09-23

在一些網站上可以經常看到有一些圖片進行持續不斷的滾動,這個效果可以通過css的動畫效果來實現。具體效果如下

主要原理是通過動畫向左移動。

首先給出兩組一樣的圖片(同一行上),讓整體圖片向左移動一組圖片的長度,

這樣在動畫結束時會迅速還原到原來位置,而此時正好與第二組圖片交替,看起來就像是一組圖片在不斷迴圈向左滾動。

具體步驟如下:

1、設定主體程式碼各處兩組一樣的圖片 

 <nav>
        <ul>
            <li><img src="Images/1 (2).jpg" alt=""></li>
            <li><img src="Images/2 (2).jpg" alt=""></li>
            <li><img src="Images/3 (2).jpg" alt=""></li>
            <li><img src="Images/1 (2).jpg" alt=""></li>
            <li><img src="Images/2 (2).jpg" alt=""></li>
            <li><img src="Images/3 (2).jpg" alt=""></li>
        </ul>
    </nav>

2、設定nav的大小,寬度為一組圖片相加的寬度,高度為圖片的高度。

 
        nav {
            width: 750px;
            height: 170px;
            border: 1px solid red;
            margin: 100px auto;
}

3、設定ul大小,寬度為nav的兩倍,高度與nav相同,並指定動畫相關屬性

ul {
            width: 200%;
            height: 100%;
            animation: picmove 5s linear infinite forwards;
        }

4、定義動畫,主要是向左移動一組圖片的長度

 @keyframes picmove {
            from {
                transform: translate(0);
            }
            to {
                transform: translate(-750px);
            }
        }

5、增加滑鼠懸停,動畫暫停的效果

ul:hover {
            animation-play-state: paused;
        }

6、最後給nav 增加 overflow:hidden 使得超出的部分隱藏,這樣整體一組滾動的圖片欄就做好了

整體程式碼如下

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        
        ul {
            list-style: none;
        }
        
        nav {
            width: 750px;
            height: 170px;
            border: 1px solid red;
            margin: 100px auto;
            overflow: hidden;
        }
        
        ul {
            width: 200%;
            height: 100%;
            animation: picmove 5s linear infinite forwards;
        }
        
        @keyframes picmove {
            from {
                transform: translate(0);
            }
            to {
                transform: translate(-750px);
            }
        }
        
        img {
            width: 250px;
            height: 170px;
            float: left;
        }
        
        ul:hover {
            animation-play-state: paused;
        }
    </style>
</head>

<body>
    <nav>
        <ul>
            <li><img src="Images/1 (2).jpg" alt=""></li>
            <li><img src="Images/2 (2).jpg" alt=""></li>
            <li><img src="Images/3 (2).jpg" alt=""></li>
            <li><img src="Images/1 (2).jpg" alt=""></li>
            <li><img src="Images/2 (2).jpg" alt=""></li>
            <li><img src="Images/3 (2).jpg" alt=""></li>
        </ul>
    </nav>
</body>

</html>
View Code

 

相關文章