首頁 >web前端 >css教學 >如何使用純CSS實現棋盤的錯覺動畫(附源碼)

如何使用純CSS實現棋盤的錯覺動畫(附源碼)

不言
不言轉載
2018-10-17 14:16:173025瀏覽

這篇文章帶給大家的內容是關於如何使用純CSS實現棋盤的錯覺動畫(附源碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

效果預覽

如何使用純CSS實現棋盤的錯覺動畫(附源碼)

原始碼下載

https://github.com/comehop​​e/front- end-daily-challenges

程式碼解讀

定義dom,容器中包含10 個子元素,每個子元素表示一行:

<div>
    <span></span>
    <span></span>
    <span></span>
    <span></span>
    <span></span>
    <span></span>
    <span></span>
    <span></span>
    <span></span>
    <span></span>
</div>

居中顯示:

body {
    margin: 0;
    height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
}

定義容器尺寸,以vmin 單位,並讓子元素垂直排列:

.container {
    width: 100vmin;
    height: 100vmin;
    display: flex;
    flex-direction: column;
}

設定子元素的背景圖案為間隔的黑白色塊,頂部有一條細線:

.container span {
    width: inherit;
    height: 10vmin;
    background: 
        linear-gradient(
            gray, gray 0.5vmin,
            transparent 0.5vmin, transparent
        ),
        repeating-linear-gradient(
            to right,
            black, black 10vmin,
            transparent 10vmin, transparent 20vmin
        )
}

在容器底部補一條細線:

.container {
    border-bottom: 0.5vmin solid gray;
}

增加動畫效果,讓奇數行的背景向右移動半個色塊的位置,移動之後看起來好像奇數行右寬左窄,偶數行左寬右窄,這是一種錯覺:

.container span:nth-child(odd) {
    animation: move 5s linear infinite;
}

@keyframes move {
    0%, 55%, 100% {
        background-position: 0 0;
    }

    5%, 50% {
        background-position: 5vmin 0;
    }
}

讓偶數行的背景也移動起來,產生相反方向的錯覺:

.container span:nth-child(even) {
    animation: move 5s linear infinite reverse;
}

大功告成!


以上是如何使用純CSS實現棋盤的錯覺動畫(附源碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:segmentfault.com。如有侵權,請聯絡admin@php.cn刪除