首頁 > web前端 > css教學 > 為什麼我的水平選單在懸停時會發生變化,如何使用偽元素修復它?

為什麼我的水平選單在懸停時會發生變化,如何使用偽元素修復它?

Mary-Kate Olsen
發布: 2024-12-23 18:06:11
原創
496 人瀏覽過

Why Does My Horizontal Menu Shift on Hover, and How Can I Fix It Using Pseudo-elements?

由於粗體樣式,懸停時元素對齊發生變化

使用HTML 清單和CSS 實現水平選單時,經常會遇到偏移應用懸停狀態時選單項目的對齊方式。發生這種轉變的原因是懸停狀態下的粗體字體大小與標準字體大小不同。

此問題與 SitePoint 貼文中討論的問題類似,但沒有明確的解決方案。如果文字寬度不同,設定 li 項的寬度可能不可行。

解決對齊偏移

解決方案在於使用不可見的偽元素預先設定元素的寬度。此偽元素鏡像懸停狀態的內容和樣式,在觸發懸停狀態之前有效地定義元素的寬度。

li {
    display: inline-block;
    font-size: 0;
}

li a {
    display:inline-block;
    text-align:center;
    font: normal 16px Arial;
    text-transform: uppercase;
}

a:hover {
    font-weight:bold;
}

/* SOLUTION */
/* The pseudo element has the same content and hover style, so it pre-sets the width of the element and visibility: hidden hides the pseudo element from actual view. */
a::before {
    display: block;
    content: attr(title);
    font-weight: bold;
    height: 0;
    overflow: hidden;
    visibility: hidden;
}
登入後複製

在此解決方案中:

  • 偽元素-element (::before) 定義了區塊顯示,允許它預先設定元素的寬度。
  • 它繼承了內容並懸停狀態下的 font-weight (使用 attr(title) 設定內容)。
  • 偽元素的高度和溢位分別設定為 0 和隱藏,以隱藏在視圖中。

透過預設寬度,選單項目在懸停時保持對齊,無論文字長度或寬度變化如何。

以上是為什麼我的水平選單在懸停時會發生變化,如何使用偽元素修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板