紀錄第一次使用SCSS預處理器來實作切版,處理Form大魔王。
此文章圖片大部分均來自Alpha Camp課程內容
完成作品
變數 (variable) 與運算子 (operator)
使用$號來宣告變數,使用:來賦值。 也可以使用 + - * /來做值的運算
繼承與覆寫
使用%來宣告共同屬性,在選擇的元素中使用 @extend來繼承共同屬性
mixin
在 Sass 裡,我們使用 @mixin 進行宣告,並使用 @include 使用 mixin。
在以下例子中,我們創建了一個名為 font-setting 的 mixin。可以發現,透過 mixin,大幅提高了程式碼的重用性 (reusability) 以及可讀性 (readability) 。
使用@each 及變數生成 basic setting
1 | $sizes: ( |
$prop, $abbrev , $num, $val, $sizes 都是變數,分別代表:
- $prop: width, height
- $abbrev: w,h
- $sizes: 上方定義的變數sizes
- $num: 25, 50, 75, 100
- $val: 25%, 50%, 75%, 100%
意思會生成以下
可以使用 Sass to CSS 的工具Sass.js來觀察
使用cursor改變滑鼠樣式
可以使用cursor來改變滑鼠樣式,可以參考 MDN
使用 ::-webkit-scrollbar 生成捲動軸
::-webkit-scrollbar 只支援WebKit的瀏覽器 (Chrome, Safari) 可以使用。
可以在要加上卷軸的BLOCK上使用以下偽元素
::-webkit-scrollbar — 整個滾動條。
::-webkit-scrollbar-button — 滾動條上的按鈕(向上和向下箭頭)。
::-webkit-scrollbar-thumb — 滾動條上的滾動滑塊。
::-webkit-scrollbar-track — 滾動條軌道。
::-webkit-scrollbar-track-piece — 滾動條沒有滑塊的軌道部分。
::-webkit-scrollbar-corner — 同時有垂直滾動條和水平滾動條的部分。
::-webkit-resizer — 部分元素角部樣式的一部分(例如:textarea 的可拖動按鈕)。
如果是 Mozilla Firefox,我們可以使用 CSS Scrollbar
nth-child 偽元素
我們可以用 nth-child 這個選擇器去選取每個步驟的元件,然後再透過偽元素 ::after 加上數字:
1 | .step { |
但這樣做,有很多重複的內容,也可以使用 @mixin 的功能。
是先叫出 @mixin,再為它取個適合的名字,並將變數名稱傳進去。最後,把要重複使用的 CSS 放在 { } 裡面。像這樣:
1 | @mixin <mixin_的名字> (<變數名稱>) { |
這個 @mixin 是用來取得 stepper 裡的數字,所以我們叫它 getStepNums。而要傳進去的變數就是 num。同時,我們使用 Sass 提供的 @for 迴圈來產生 1、2、3 這三個數字:
1 | @mixin getStepNums($num) { |
建立好這個 mixin 之後,要如何「呼叫」它呢?我們會回到需要這段 CSS 的地方,使用 @include 來呼叫它,並傳入我們的的參數,也就是我們總共需要的步驟數目 3。
所以在 .step 我們的 CSS 會是這樣:
1 | .step { |
屬性選擇器
可以透過 &[type=”checkbox”] 來一口氣選擇所有在 HTML 中 type 等於 checkbox 的元素:
1 | &[type="checkbox"] { |
[<屬性> = 字串] 是一個 CSS 選擇器,意義是透過 HTML 屬性來選擇 HTML 元素。
我們也使用了 ~ sibling 選擇器來選擇跟 checkbox 同一層的 label ,確保它跟 checkbox 本身會排在同一行。最後,再調整一下 margin ,這樣 checkbox label 的樣式就已經調好了。
取消checkbox在瀏覽器中的預設樣式
checkbox的樣式在每個瀏覽器中都會被設定好,而且無法改動,若要修改,要先取消瀏覽器的預設。
1 | &[type="checkbox"] { |
這時會發現checkbox樣式已經被取消了,接著才可以透過指令修改。
接著透過不同的狀態,去設定樣式
使用box-shadow: inset 製作radio button 圓點
複習box-shadow參數
分別是:x-偏移量 (x-offset)、y-偏移量 (y-offset)、陰影模糊半徑 (blur radius)、陰影擴散半徑 (spread radius)、與陰影顏色 (color)。
在 x-偏移量與 y-偏移量的部分,是指陰影是相對於元素輪廓本身的偏移。目前要製作的是內圓,陰影其實在 x-軸與 y-軸都沒有偏移。所以都設為0。
陰影模糊半徑指的是希望模糊散開,還是邊緣銳利的。實心是銳利的圓形,陰影模糊半徑也設 0。
陰影擴散半徑指在陰影最邊緣還要往外擴散多少距離。在打造一般常見的陰影時,可以利用陰影模糊半徑跟陰影擴散半徑的配搭,讓陰影擴散得很遠。但在這邊,我們就只會利用這個擴散半徑來做出內圓,設定 5px。
1 | &[type="radio"] { |
修改select 標籤樣式
要修改select 樣式,必須要先取消瀏覽器預設,之後把select用一個div包起來,之後在div設上after偽元素來新增下拉符號。
之後再設定外圍的select-wrapper寬度跟select標籤的寬度一樣就可以了
1 | .select-wrapper { |
下拉箭頭border製作法
1 | .select-wrapper { |
優化按鈕
現在select的下拉箭頭蓋住了select,所以下拉箭頭點了會沒反應,設定z-index 將下拉箭頭放置到select後方即可