首頁  >  文章  >  web前端  >  如何使用純CSS實現懸停時右移的按鈕效果(附源碼)

如何使用純CSS實現懸停時右移的按鈕效果(附源碼)

不言
不言原創
2018-09-14 14:25:062369瀏覽

這篇文章帶給大家的內容是關於如何使用純CSS實現懸停時右移的按鈕效果(附源碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

效果預覽

如何使用純CSS實現懸停時右移的按鈕效果(附源碼)

原始碼下載

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

程式碼解讀

定義dom,導覽包含一個無序列表,清單項目內嵌一個span,文字寫在在 span 中:

<nav>
    <ul>
        <li><span>home</span></li>
    </ul>
</nav>

居中顯示:

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

隱藏清單項目前端的引導符號:

nav ul {
    padding: 0;
    list-style-type: none;
}

設定按鈕的尺寸和顏色:

nav li {
    width: 8em;
    height: 2em;
    font-size: 25px;
    color: orange;
}

設定文字樣式,注意高度是120%span 比它父級的li 要高一些:

nav li span {
    position: relative;
    box-sizing: border-box;
    width: inherit;
    height: 120%;
    top: -10%;
    background-color: #333;
    border: 2px solid;
    font-family: sans-serif;
    text-transform: capitalize;
    display: flex;
    align-items: center;
    justify-content: center;
}

span 元素稍微向右移:

nav li span {
    transform: translateX(4px);
}

用清單項目li 的左邊框畫出1 條垂直線:

nav li {
    box-sizing: border-box;
    border-left: 2px solid;
}

用列表項的偽元素再畫出2 條垂直線,它們的高度依序降低,至此,按鈕左側一共有3 條豎線:

nav li {
    position: relative;
}

nav li::before,
nav li::after
 {
    content: '';
    position: absolute;
    width: inherit;
    border-left: 2px solid;
    z-index: -1;
}

nav li::before {
    height: 80%;
    top: 10%;
    left: -8px;
}

nav li::after {
    height: 60%;
    top: 20%;
    left: -14px;
}

將偽元素的2 條豎線的顏色逐漸變暗,增加一點層次感:

nav li::before {
    filter: brightness(0.8);
}

nav li::after {
    filter: brightness(0.6);
}

增加滑鼠懸停效果,預設狀態是按鈕遮住3 條垂直線,當滑鼠懸停時,按鈕右移,露出3 個垂直線:

nav li:hover span {
    transform: translateX(4px);
}

nav li span {
    /* transform: translateX(4px); */
    transform: translateX(-16px);
    transition: 0.3s;
}

因為按鈕預設狀態的位置是偏左的,為了抵銷這個偏移量,讓清單項目稍微往右移:

nav ul {
    transform: translateX(16px);
}

在dom 中再增加幾個按鈕:

<nav>
    <ul>
        <li><span>home</span></li>
        <li><span>products</span></li>
        <li><span>services</span></li>
        <li><span>contact</span></li>
    </ul>
</nav>

設定一下按鈕的間距:

nav li {
    margin-top: 0.8em;
}

大功告成!

相關推薦:

如何用純css畫一個跳動心?(程式碼實例)

如何使用CSS和GSAP實作有多個關鍵幀的連續動畫(附源碼)

以上是如何使用純CSS實現懸停時右移的按鈕效果(附源碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn