<style> body{font-family:"微軟正黑體";}</style> ###### tags: `css` `sass` # SASS應用 > [time=Sat, Nov 16, 2019 10:54 AM] --- ## sass的好處 * 不需使用 {...} * 可宣告變數 * 可模組化 * 可使用mixin重工 * 可使用迴圈 * 讓css具有運算能力 * 具有函式庫可以運用 ## 基礎應用 ``` sass= // 不需使用{} html,body width: 100% height: 100% //使用宣告變數 $width: 100% html,body width: $width //使用變數運算 $width: 100% html,body width: $width*2 //使用darken和lighten $red: #ff5151 background-color: darken($red,10) ``` ## 使用import * 需要注意先後順序:[參考連結](https://ithelp.ithome.com.tw/articles/10161305) * 在all.scss 填寫「 @import +’sass檔名’」指令,如下所示: ```sass= //新增一個檔案 _test.sass,務必檔名前方加下底線“_”,此檔才不會編譯css,僅做合併用 //主要檔案 all.sass @import 'text' // 兩個以上的檔案可以用逗號隔開 @import foundation/code, foundation/lists // 如果你希望import整個資料夾的話,就在要合併的Sass檔案裡面寫: @import "library/mixins/*" // 希望library底下所有的scss檔都@import進來的話 @import "library/**/*" ``` ## 使用mixin模組化 ``` sass= @mixin size($w:100px,$h:100px) width: $w height: $h body +size(200px) // 只設置一個引數,故w為200px,h仍為100px // 或 @include size // ------------------------------------- @mixin font-size($font-size) font-size:$font-size + px font-size:$font-size / $base-font-size + rem // 原因是他有 px 與 rem 單位,如果舊瀏覽器不支援 rem 的話,那至少還有 px 可使用,那如果 rem 生效,就會覆蓋 px 的設定,也因如此才會有兩個字型。 // 但以目前實務上來說,瀏覽器都普及支援 rem 了,所以直接使用 rem 也是 ok ``` ### mixin 搭配 RWD ```javascript= @mixin pad @media only screen and (max-width: 768px) @content @mixin mobile @media only screen and (max-width: 568px) @content body font-size: $font-m color: $font-blue & p @include body-p($font-l,$font-black) @include pad font-size: $font-l *1.2 // @media only screen and (max-width: 768px) { // body p { // font-size: 1.8em; // } // } ``` > [mixin搭配RWD延伸應用](https://ithelp.ithome.com.tw/articles/10132313) > ## if ```sass= ``` > [Part 6. 條件與迴圈](https://yungshenglu.github.io/2017/12/24/SassNotes6/) ## 使用for迴圈 ``` sass= @for $i from 1 through 50 .test#{$i} // 由i為引數,產出50個 ``` > [30天掌握Sass語法 - (29) @for+random()創造無限可能](https://ithelp.ithome.com.tw/articles/10137464) ## 使用random ``` sass= $size: random(50)+50 // 後面的+50等於是 random產生出的數字再+50 $rotateDeg: random(20)-10 // 同理,減10 ``` ## 使用陣列 ### 公式 nth($list, $n) ``` sass= $colors: ($colorRed,$colorWhite,$colorBlue,$colorYellow,$colorPurple) $bodyColor: nth($colors,random(5)) //回傳colors裡面指定的item $ribbonColor: nth($colors,random(5)) ``` # SMACSS 模組化風格 ## 使用Reset CSS * 會將所有預設的css樣式清空,再自行設置想要設置的樣式 * 建議先將自己的樣式擺第一個,reset樣式擺第二個,之後是排版 ![](https://i.imgur.com/H90XREM.png) ### [Meyerweb.CSS](https://meyerweb.com/eric/tools/css/reset/) * 清除所有的預設樣式 ### [Normalize.css](https://necolas.github.io/normalize.css/) * 留下部分預設樣式 ## base 設計模式 (全站設定) * reset 後自行客製化的預設樣式。 * 可以將網頁大部分的樣式設至在bass檔案,再用主要的sass檔修改其餘樣式 ![](https://i.imgur.com/ApCKCY4.png) ### 參考資料 > [Pure.css->yahoo設計的base.css混合reset.css樣式](https://purecss.io/start/) ## layout 佈局 * 可將固定的佈局(如navber or head or footer)拆出來獨自的sass檔來做管理 * 固定的佈局除上述說明外,若有相似的列表、圖片設定皆可 * 相同的佈局可以重覆利用。 * 減少語意化名稱,改為前綴詞+通用的功能或項目名稱(如bootstrap範例) ![](https://i.imgur.com/bcf5QcE.png) ## module(模組化) * 擴充、增加子模組 * 方便HTML語意化調整,CSS盡量不指定HTML Tag >[SMACSS-六角同學範例](https://codepen.io/mdqzrgag/pen/poJdxLV?editors=0100) # OOCSS(容器與內容分離)模組化風格 >[OOCSS-六角同學範例](https://codepen.io/ritatari/pen/GRJMmOm?editors=0100) ![](https://i.imgur.com/dFHs6RI.png) ### 參考資料 >[CSS 的模組化方法:OOCSS、SMACSS、BEM、CSS Modules、CSS in JS](https://cythilya.github.io/2018/06/05/css-methodologies/) >[SMACSS 教學](https://medium.com/@savemuse/smacss-%E6%95%99%E5%AD%B8-c94e858aa762) >[Day1 關於命名規則-OOCSS、SMACSS、BEM命名規則](https://ithelp.ithome.com.tw/articles/10213186) >[這麼多Sass/CSS設計模式,究竟該如何逐步學習?](https://github.com/gonsakon/Learn-Sass-in-90-days/blob/master/docs/CssDesignPattern/%E9%80%99%E9%BA%BC%E5%A4%9ASASS:CSS%E8%A8%AD%E8%A8%88%E6%A8%A1%E5%BC%8F%EF%BC%8C%E7%A9%B6%E7%AB%9F%E8%A9%B2%E5%A6%82%E4%BD%95%E9%80%90%E6%AD%A5%E5%AD%B8%E7%BF%92%EF%BC%9F.markdown) >[六角同學作業](https://codepen.io/PaCheng/pen/bGbJGOW?editors=1100) # 參考資料 > [Sass - 前端工程師應該要會的工程化 CSS - 計算功能與顏色、list、map 的輔助函式](https://kakadodo.github.io/2018/11/13/css-sass-5/) > [你可能不知道的 Sass 技巧](https://medium.com/d-d-mag/%E4%BD%A0%E5%8F%AF%E8%83%BD%E4%B8%8D%E7%9F%A5%E9%81%93%E7%9A%84-sass-%E6%8A%80%E5%B7%A7-c97d4d5e0fc4) > [Sass筆記](https://hackmd.io/@zui-PQ41SBeiggsaqjkMDw/rkKZYqRnV?type=view) > [前端工程日誌](http://sam0512.blogspot.com/2013/10/sass.html) > [SASS官網](https://sass-lang.com/documentation) > [sass中文](https://www.sass.hk/docs/) > [bootstrap scss github](https://github.com/twbs/bootstrap/blob/master/scss/_variables.scss) > [[筆記] SASS / SCSS](https://pjchender.github.io/2017/11/01/%E7%AD%86%E8%A8%98-sass-scss/) > [css convert sass](https://css2sass.herokuapp.com/)