1. 程式人生 > >用 CSS background 實現刻度線的呈現

用 CSS background 實現刻度線的呈現

  有的時候,我們需要在網頁中的進度條或某種度量計上呈現一條條的刻度線。例如這種:

簡單的實現方式,大致有兩種:一是用圖片做背景,橫向平鋪線條圖片;二是給每一塊刻度區域平鋪一個元素,然後用邊線實現。身為一個“環保主義者”,這兩種方式都不能讓我滿意。在看了 Lea Verou 的 CSS SECRETS 後,我受到了啟發——可以用漸變背景的方式去實現。

  原理很簡單。最簡單的顏色漸變是顏色 A 過渡到顏色 B,那麼,如果將顏色 A 設定成透明色,將顏色 B 設定成刻度線顏色,不就可以搞出刻度線了嗎:

div {
  background: linear-gradient(to right, transparent 99px, #fff 1px)
; background-size: 100px 100%; }

在以上例子中,我用 background-size 設定刻度區間(背景)寬度為 100px,其中透明色我給它 99px 寬,線條色(白)我給它 1px 寬,這樣從透明色到線條色的漸變就會失去過渡效果,從而實現了 100px 寬的區間裡只有最後 1px 是線條——刻度線就這樣出來了。用 repeating-linear-gradient 同樣可以實現,而且不需要設定 background-size,如下所示:

div {
  background: repeating-linear-gradient(
    90deg,
    transparent,
    transparent 99px,
    #fff,
    #fff 100px)
; }

這個樣式表示第一段漸變色從開始到 99px 都是透明色,第二段漸變色從 99px 到 100px 都是白色,之後按此設定迴圈。

  詳細的程式碼可參考 CodePen demo,關於 linear-gradient 和 repeating-linear-gradient 的用法可參考 linear-gradient - CSS:層疊樣式表 | MDNrepeating-linear-gradient - CSS:層疊樣式表 | MDN