首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

CSS 選擇器中「>」符號含義詳解:子代組合器而非 JavaScript

     編輯:程式設計綜合問答

代碼片段

.nav > li > a:hover, 
.nav > li > a:focus, 
.navbar-nav > li > a:hover, 
.navbar-nav > li > a:focus {
    border-bottom: 2px solid #ffffff;
    border-bottom-left-radius: 2px;
    border-bottom-right-radius: 2px;
}

核心結論

這是 CSS 選擇器,不是 JavaScript 語法。 其中的 > 是 子代組合器 (Child Combinator),表示直接子元素關係。

詳細解讀

選擇器片段含義
.nav > li選擇 class 為 nav 的元素的直接子元素中標簽為 li 的元素
li > a選擇 li 的直接子元素中標簽為 a 的元素
a:hover滑鼠懸停狀態下的 a 元素
a:focus獲得焦點狀態下的 a 元素 (鍵盤導航時)

「>」與「空格」的關鍵區別

/* 子代組合器:只選直接孩子 */
.nav > li { color: red; }

/* 後代組合器:選所有嵌套的後代 */
.nav li { color: blue; }

選擇器圖示

  • .nav > li:若 HTML 為 ``,則不會匹配,因為 li 的父級是 ul,不是 .nav。
  • .nav li:會匹配,因為 li 是 .nav 的後代。

實際應用場景

導航欄樣式隔離:確保只給頂層 `

  • ` 的直接 `` 加底邊框,避免影響下拉菜單中的鏈接:

    <ul class="nav">
      <li><a href="#">一級菜單</a></li>          <-- 匹配 .nav > li > a
      <li>
        <a href="#">有子菜單</a>
        <ul><li><a href="#">二級菜單</a></li></ul>  <-- 不匹配 (非直接子代)
      </li>
    </ul>
    

    相關選擇器速查表

    符號名稱匹配關係示例
    >子代組合器直接子元素div > p
    (空格)後代組合器任意層級後代div p
    +相鄰兄弟組合器緊接的下一個兄弟h1 + p
    ~通用兄弟組合器後續所有兄弟h1 ~ p

    參考資源

    1. 上一篇文章:
    2. 下一篇文章:
    Copyright © 程式碼之家 All Rights Reserved