CSS 學習筆記 3
阿新 • • 發佈:2020-12-12
CSS組合選擇符
- 後代選擇器(以空格分隔)
- 子元素選擇器(以大於>號分隔)
- 相鄰兄弟選擇器(以加號+分隔)
- 普通兄弟選擇器(以波浪號~分隔)
CSS偽類是用來新增一些選擇器的特殊效果。selector.class:pseudo-class {property:value;}
偽類可以看作以選中元素為基準點,此元素的一些狀態或屬性。
anchor偽類
a:link {color:#FF0000;} /* 未訪問的連結 */ a:visited {color:#00FF00;} /* 已訪問的連結 */ a:hover {color:#FF00FF;} /* 滑鼠劃過連結 */ a:active {color:#0000FF;} /* 已選中的連結 */
CSS :first-child 偽類 父元素的第一個子元素
所有CSS偽類/元素
:checked | input:checked | 選擇所有選中的表單元素 |
:disabled | input:disabled | 選擇所有禁用的表單元素 |
:empty | p:empty | 選擇所有沒有子元素的p元素 |
:enabled | input:enabled | 選擇所有啟用的表單元素 |
:first-of-type | p:first-of-type | 選擇的每個 p 元素是其父元素的第一個 p 元素 |
:in-range | input:in-range | 選擇元素指定範圍內的值 |
:invalid | input:invalid | 選擇所有無效的元素 |
:last-child | p:last-child | 選擇所有p元素的最後一個子元素 |
:last-of-type | p:last-of-type | 選擇每個p元素是其母元素的最後一個p元素 |
:not(selector) | :not(p) | 選擇所有p以外的元素 |
:nth-child(n) | p:nth-child(2) | 選擇所有 p 元素的父元素的第二個子元素 |
:nth-last-child(n) | p:nth-last-child(2) | 選擇所有p元素倒數的第二個子元素 |
:nth-last-of-type(n) | p:nth-last-of-type(2) | 選擇所有p元素倒數的第二個為p的子元素 |
:nth-of-type(n) | p:nth-of-type(2) | 選擇所有p元素第二個為p的子元素 |
:only-of-type | p:only-of-type | 選擇所有僅有一個子元素為p的元素 |
:only-child | p:only-child | 選擇所有僅有一個子元素的p元素 |
:optional | input:optional | 選擇沒有"required"的元素屬性 |
:out-of-range | input:out-of-range | 選擇指定範圍以外的值的元素屬性 |
:read-only | input:read-only | 選擇只讀屬性的元素屬性 |
:read-write | input:read-write | 選擇沒有隻讀屬性的元素屬性 |
:required | input:required | 選擇有"required"屬性指定的元素屬性 |
:root | root | 選擇文件的根元素 |
:target | #news:target | 選擇當前活動#news元素(點選URL包含錨的名字) |
:valid | input:valid | 選擇所有有效值的屬性 |
:link | a:link | 選擇所有未訪問連結 |
:visited | a:visited | 選擇所有訪問過的連結 |
:active | a:active | 選擇正在活動連結 |
:hover | a:hover | 把滑鼠放在連結上的狀態 |
:focus | input:focus | 選擇元素輸入後具有焦點 |
:first-letter | p:first-letter | 選擇每個<p> 元素的第一個字母 |
:first-line | p:first-line | 選擇每個<p> 元素的第一行 |
:first-child | p:first-child | 選擇器匹配屬於任意元素的第一個子元素的 <p> 元素 |
:before | p:before | 在每個<p>元素之前插入內容 |
:after | p:after | 在每個<p>元素之後插入內容 |
:lang(language) | p:lang(it) | 為<p>元素的lang屬性選擇一個開始值 |
CSS 導航欄
垂直導航條例項
- list-style-type:none - 移除列表前小標誌。一個導航欄並不需要列表標記
- 移除瀏覽器的預設設定將邊距和填充設定為0
- display:block - 顯示塊元素的連結,讓整體變為可點選連結區域(不只是文字),它允許我們指定寬度
- float:left - 使用浮動塊元素的幻燈片彼此相鄰
ul { list-style-type: none; margin: 0; padding: 0; width: 200px; background-color: #f1f1f1; } li a { display: block; color: #000; padding: 8px 16px; text-decoration: none; } /* 滑鼠移動到選項上修改背景顏色 */ li a:hover { background-color: #555; color: white; } .active { background-color: #4CAF50; color: white; }
水平導航條例項
ul { list-style-type: none; margin: 0; padding: 0; overflow: hidden; background-color: #333; } li { float: left; } li a { display: block; color: white; text-align: center; padding: 14px 16px; text-decoration: none; } /*滑鼠移動到選項上修改背景顏色 */ li a:hover { background-color: #111; }
CSS 下拉選單
HTML 部分:
我們可以使用任何的 HTML 元素來開啟下拉選單,如:<span>, 或 a <button> 元素。
使用容器元素 (如: <div>) 來建立下拉選單的內容,並放在任何你想放的位置上。
使用 <div> 元素來包裹這些元素,並使用 CSS 來設定下拉內容的樣式。
CSS 部分:
.dropdown
類使用position:relative
, 這將設定下拉選單的內容放置在下拉按鈕 (使用position:absolute
) 的右下角位置。
.dropdown-content
類中是實際的下拉選單。預設是隱藏的,在滑鼠移動到指定元素後會顯示。 注意min-width
的值設定為 160px。你可以隨意修改它。
注意:如果你想設定下拉內容與下拉按鈕的寬度一致,可設定width
為 100% (overflow:auto
設定可以在小尺寸螢幕上滾動)。
我們使用box-shadow
屬性讓下拉選單看起來像一個"卡片"。
:hover
選擇器用於在使用者將滑鼠移動到下拉按鈕上時顯示下拉選單。
<style> /* 下拉按鈕樣式 */ .dropbtn { background-color: #4CAF50; color: white; padding: 16px; font-size: 16px; border: none; cursor: pointer; } /* 容器 <div> - 需要定位下拉內容 */ .dropdown { position: relative; display: inline-block; } /* 下拉內容 (預設隱藏) */ .dropdown-content { display: none; position: absolute; background-color: #f9f9f9; min-width: 160px; box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); } /* 下拉選單的連結 */ .dropdown-content a { color: black; padding: 12px 16px; text-decoration: none; display: block; } /* 滑鼠移上去後修改下拉菜單鏈接顏色 */ .dropdown-content a:hover {background-color: #f1f1f1} /* 在滑鼠移上去後顯示下拉選單 */ .dropdown:hover .dropdown-content { display: block; } /* 當下拉內容顯示後修改下拉按鈕的背景顏色 */ .dropdown:hover .dropbtn { background-color: #3e8e41; } </style> <div class="dropdown"> <button class="dropbtn">下拉選單</button> <div class="dropdown-content"> <a href="#">菜鳥教程 1</a> <a href="#">菜鳥教程 2</a> <a href="#">菜鳥教程 3</a> </div> </div>