前幾天被問到要怎麼製作CSS的箭頭導覽列,第一個閃過的念頭就是用拼接的
研究一下把它做出來,一起把製作過程紀錄下來吧~
css 偽元素 ─ 認識 ::before
與 ::after
::before
、::after
大概是最常使用的偽元素,兩者都是以display:inline-block
的屬性存在,::before
是在原本的元素「之前」加入內容,::after
則是在原本的元素「之後」加入內容,同時偽元素也會「繼承」原本元素的屬性,如果原本文字是黑色,偽元素的文字也會是黑色。
很特別的是如果沒有使用 content: "";
的偽元素是不會出現在畫面上的,它可以產新的元素來使用,也能使用 attr 直接獲取內容元素的屬性值 ( attribute )
:first-child
與 :last-child
頭尾選擇器
這兩個選取器其實很好懂,就是選第一個子物件以及最後一個子物件。但在使用上要很注意,此處「第一個子物件」是父元素下的第一個。
舉例來說,下方選取的:first-child
並不會變成藍色
1 | <div class="box"> |
1 | .box .y:first-child { |
發現了嗎?重點是在於順序。
我們修改一下選取的內容,這樣<h1>
耀西的手工世界就會變成藍色的,就可以看到選取後的效果了。
1 | .box :first-child { |
利用偽元素製作箭頭導覽列
1.首先在html增加html和css程式碼,這邊主要以ul製作並加上初步的CSS
如圖:
1 | <div id="crumbs"> |
1 | #crumbs ul { |
接著會把相對定位也加進去,這樣在定義後方絕對定位連接的箭頭時,會以這個為父元素來定位
2.再來,要在a
裡面使用偽元素::after
加入border
1 | #crumbs ul li a:after { |
稍微調整一下顏色以及透明度:
1 | border-top: 40px solid transparent; |
3.接下來要把尾巴收掉,方式和::after
相似,但要使用的是::before
1 | #crumbs ul li a:before { |
調整顏色以及透明度:
1 | border-top: 40px solid transparent; |
差不多就快要完成了,此時可以試著加入幾個看看:
4.若要將頭尾的箭頭調整成方形或圓角,會使用:first-child
和:last-child
1 | #crumbs ul li:first-child a { |
使用:first-child
和:last-child
來刪除導覽列的第一個和最後一個元素的三角形
再使用border-radius
將圓角修成要的樣子以及做些微調就完成啦!