當我們看到條列式的文字時,首先都會想到使用HTML裡面的<ol>
、<ul>
來製作
但<ol>
、<ul>
的預設樣式有時候無法滿足想要花枝招展的心
今天整理了一些怎麼變更清單樣式的方法~
<ul>
(unordered lists)--無序清單可以設定在<ul>
上,繼承給裡面的<li>
;也可以放在<li>
進行單獨設定
attribute
<!-- 設定在<ul>上 -->
<h2>早餐</h2>
<ul type="circle">
<li>玉米濃湯</li>
<li>鮪魚吐司</li>
<li>薯條</li>
</ul>
<!-- 設定在<li>上 -->
<h2>早餐</h2>
<ul>
<li type="disc">玉米濃湯</li>
<li type="circle">鮪魚吐司</li>
<li type="square">薯條</li>
</ul>
巢狀清單時第一層為disc
>第二層為circle
>第三層為square
<li>
<h2>早餐</h2>
<ul>
<li>玉米濃湯</li>
<li>鮪魚吐司</li>
<li>薯條
<ul>
<li>鹽味</li>
<li>胡椒鹽</li>
<li>番茄醬</li>
</ul>
</li>
</ul>
</li>
<ol>
(ordered lists)--有序清單attribute
type
可以設定在<ol>
上,繼承給裡面的<li>
;也可以放在<li>
進行單獨設定
<!-- 設定在<ol>上 -->
<h2>早餐</h2>
<ul type="A">
<li>玉米濃湯</li>
<li>鮪魚吐司</li>
<li>薯條</li>
</ul>
<!-- 設定在<li>上 -->
<h2>早餐</h2>
<ul >
<li type="a">玉米濃湯</li>
<li type="I">鮪魚吐司</li>
<li type="i">薯條</li>
</ul>
巢狀清單時則沒有變化
<li>
<h2>早餐</h2>
<ol>
<li>玉米濃湯</li>
<li>鮪魚吐司</li>
<li>薯條
<ol>
<li>鹽味</li>
<li>胡椒鹽</li>
<li>番茄醬</li>
</ol>
</li>
</ol>
</li>
哎呀可是用HTML設定好麻煩呀~萬一哪天要改動要一個一個改耶...
透過CSS的方法就可以快速又不動HTML改囉~
而且還可以改得更精緻!
以下舉例只是樣式的冰山一角:
/*最常用的取消樣式*/
list-style-type: none;
list-style-type: disc;
list-style-type: circle;
list-style-type: square;
list-style-type: "文字";
list-style-type: decimal;
可以設定在<ol>
或是<ul>
上,繼承給裡面的<li>
;也可以放在<li>
進行單獨設定
<h2>早餐</h2>
<ol >
<li>玉米濃湯</li>
<li>鮪魚吐司</li>
<li>薯條
<ol>
<li>鹽味</li>
<li>胡椒鹽</li>
<li>番茄醬</li>
</ol>
</li>
</ol>
ol{
list-style-type: "每天吃飽飽--";
}
ol li{
list-style-type: "好飽好滿足--"
}
::marker
對樣式增加設定看到上面範例感覺...離想要的感覺還是差了那麼一大截
想要改字型、改大小、改顏色讓呈現更有層次該怎麼辦?
鏘鏘~請用這個偽元素::marker
來改
(::marker
只能用在擁有display:list-item
屬性的物件上)
@import url('https://fonts.googleapis.com/css2?family=Gloria+Hallelujah&display=swap');
li li::marker{
font-family: 'Gloria Hallelujah', cursive;
font-size: 20px;
color:#0f90f2;
}
剛剛也有提到<ol>
的巢狀清單不像<ul>
會根據層數自行變換樣式
這時候就要對子層進行個別的設定,來產生不同的樣式
假如說今天要做成像word一樣
希望它根據大項目序號下去,自動產生出1-1、1-2、1-3、2-1、2-2...該怎麼做呢?
因為::marker
是偽元素
它也可以使用content!
那麼就使用計數器讓它自動產生序數吧~~
<ol>
<li>OOOOO
<ol>
<li>XXXXX</li>
<li>XXXXX</li>
</ol>
</li>
<li>OOOOO
<ol>
<li>XXXXX</li>
<li>XXXXX</li>
<li>XXXXX</li>
</ol>
</li>
<li>OOOOO
<ol>
<li>XXXXX</li>
<li>XXXXX</li>
<li>XXXXX</li>
</ol>
</li>
</ol>
li li::marker{
content: counters(list-item,"-",list-item)" ";
font-family: "Comic Sans MS", cursive, sans-serif;
font-size: 15px;
font-weight: 700;
color:#396
}
這樣它就會自己產生數字囉~~
codepen實作