Bar 頁面橫條
頂端或底端的滿寬頁面橫條,可隨捲動黏在邊緣,或固定在視窗邊。
用法
<div sl-bar="top">
<strong sl-bar--start>Logo</strong>
<div sl-bar--end sl-wrap>
<a href="#">連結</a>
<a href="#">連結</a>
</div>
</div>原始碼
<div sl-bar="top">
<div sl-bar--start>Logo</div>
<div sl-bar--end sl-wrap>
<span>連結</span>
<span>連結</span>
</div>
</div>未標示值時為一般橫條,不帶邊緣行為,可作為區塊分隔:
原始碼
<div sl-bar>
<div sl-bar--start>Logo</div>
<div sl-bar--end>
<span>連結</span>
</div>
</div>邊緣跟定位
sl-bar="top" 黏於頂端、sl-bar="bottom" 黏於底端,預設皆為 sticky。內容捲至邊緣即停住,不額外佔用版面。
top 與 bottom 依區塊軸判斷。直排書寫(writing-mode: vertical-*)時黏的是區塊邊,並非視覺上的上下。
sl-bar="bottom" 另有作用。外層與視窗同高時,頁面內容再短也會黏在視窗底部(sticky footer)。
固定在視窗邊時,加上 sl-bar-fixed,並須搭配邊緣值:
<div sl-bar="top" sl-bar-fixed>固定在視窗頂</div>
<div sl-bar="bottom" sl-bar-fixed>固定在視窗底,手機底部 tab bar</div>原始碼
<div sl-bar="top">
<div>sticky(預設)</div>
</div>
<div sl-bar="top" sl-bar-fixed>
<div>sl-bar-fixed</div>
</div>未帶邊緣值時,sl-bar-fixed 不具作用。
fixed 的 bar 不佔用版面,body 會在對應邊自動補上等高的內距,下方內容不會被遮住。
放在任何容器內皆有效,不須為 body 的直接子層。
補償值讀取 --sl-bar-h,因此 bar 的實際高度須與之一致。
調整 sl-pad、換行成兩列或加入 safe-area inset 後,皆須在 :root 同步修改。
列印時,fixed bar 自動回到一般排版。
sticky 的外層不可設定 overflow,否則改為黏在外層。
也不可設定 transform、filter 或 perspective。
否則 fixed 的參考框會變成該外層,bar 便黏在容器內而非視窗。
內容排列
內部劃分為起點、中央、終點三區,由子層的標記決定落點:
sl-bar--start:起點區sl-bar--center:中央區sl-bar--end:終點區
start 為開始側、end 為結束側,中文書寫即左、右。未標示的子層依序填入空欄。
中央區寬度依內容而定,因此 --center 恆在整條橫條的正中央,與兩側內容無關。可只使用需要的區,空區不影響其他區:
<div sl-bar="top">
<div sl-bar--start>Logo</div>
<div sl-bar--center>標題</div>
<div sl-bar--end sl-wrap>
<a href="#">連結</a>
<a href="#">連結</a>
</div>
</div>原始碼
<div sl-bar="top">
<div sl-bar--start>Logo</div>
<div sl-bar--center>中央</div>
<div sl-bar--end>終點</div>
</div>同一區要放多個元素時,以一個 sl-wrap 包成單一子層;同一區標兩個子層會換到下一行。要直排多段內容,於子層內包一個 sl-stack。
尺寸與外觀
- 高度為
--sl-bar-h,預設 3.5rem(56px),內容較高時隨之增加 - 上下內距讀取
--sl-bar-pad-block;未設定時依sl-pad標示,皆未設定則為sm(12px) - 頁尾等較厚的區塊可寫
sl-bar="bottom" sl-pad="lg" - 左右內距讀取
--sl-bar-pad-inline,預設lg(16px),與上下內距分開調整 - 底色為
--sl-bg;邊緣側另有細線(top於下緣、bottom於上緣);z-index 讀取--sl-bar-z(預設 50) - 底部 bar 自動讓出手機 home indicator 的空間(safe-area inset)
原始碼
<div sl-bar="bottom" sl-pad="lg">
<div>頁尾內容</div>
</div>間距
內部間距由 sl-gap 給定,預設 md,寫在 bar 自身或外層皆可。
僅調整單一 bar 時,改寫 --sl-bar-gap。
各間距的效果:
原始碼
<div sl-bar="top">
<div sl-bar--start>Logo</div>
<div sl-bar--center>中央</div>
<div sl-bar--end>終點</div>
</div>
<div sl-bar="top" sl-gap="sm">
<div sl-bar--start>Logo</div>
<div sl-bar--center>中央</div>
<div sl-bar--end>終點</div>
</div>
<div sl-bar="top" sl-gap="md">
<div sl-bar--start>Logo</div>
<div sl-bar--center>中央</div>
<div sl-bar--end>終點</div>
</div>
<div sl-bar="top" sl-gap="lg">
<div sl-bar--start>Logo</div>
<div sl-bar--center>中央</div>
<div sl-bar--end>終點</div>
</div>