SlideShare a Scribd company logo
1 of 19
Download to read offline
CSS Preprocessor 介紹
與 SASS 入門分享
Wan-Ting Jheng
2015/2/10
後端工程師,主要是php/MySQL
這年頭只要和網路設計師有關聯
就算應徵的是後端工程師
也會有前端的工作掉到頭上
因此我也稍微會一點點 CSS
自介
CSS (Cascading Style Sheets)
用來控制網頁外觀
例如 元素位置、外型、顏色、特效 等等
不算是一種可程式化語言,只是許多屬性設定的集合
HTML CSS
如果寫CSS,也能像一般的
程式語言一樣,具有變數、數
學運算、條件式、迴圈、函式
庫等等,該有多好?
CSS 缺點: 結構很難有組織、不易維護
於是 CSS Preprocessor 應運而生
定義一種新的程式語言
透過這個語言進行網頁樣式設計
然後再轉換生成CSS檔
為撰寫樣式的過程,加上程式語言特性
讓程式變簡潔
可讀性更好
更易維護
目前常見的三款 CSS preprocessor
http://sass-lang.com/
http://lesscss.org/
http://lesscss.org/
SASS LESS Stylus
出現時間 2007年誕生
發展最早
2009年 2010年
相對年輕
執行環境 Ruby ● client 端執行
引入一隻.js
● server 端執行
安裝Node.js
Node.js
語法 較成熟 CSS的擴展
程式特性較差
沒有高級功能
如 loop (可透過條件式與
遞迴組合達到)
較自由、不嚴謹
有程式底子的工程師
需要較複雜CSS效果
已經是 Ruby,或不排斥安裝 Ruby 的使用者
沒有程式經驗的設計師
只是想稍微玩一下的輕量級使用者
有程式底子的工程師
需要較複雜CSS效果
已經是 Node.js,或不排斥安裝 Node.js 的使用者
選
適合
選
在說明 SASS 基本語法之前
先來看個範例 - 我的 SASS 作業
github page http://wantingj.github.io/sass_calender/
github repo. https://github.com/wantingj/sass_calender
變數 Variables
以 $ 開頭後面跟著變數名稱
用 : 分隔變數名 與變數值
數學運算
加減乘除樣樣 OK
方便計算寬度,間距等
巢狀 Nesting
html 的巢狀結構,透過 SASS 的巢狀語法
可省下過去寫 CSS 時,必須重覆寫父節點名稱的動作
並且讓程式更有結構性
SASS CSS
& - 參考父選擇符
% - 佔位選擇符
合併樣式 Extend
多個選擇器要使用同樣樣式
可透過 extend 合併
SASS CSS
Mixin
概念有點像函式、巨集
當有一段 CSS 設定經常重複使用
可以將該段程式獨立成一個 mixin 方便取用
例如 瀏覽器兼容性設定
可以傳入參數,並預設參數值
可以傳入 @content
content 可為整段 CSS (選擇器,屬性,設定值)
比較 Extend 與 Mixin
Extend
單純合併樣式
好處是產生的 CSS 內容較短
運用時機:
許多選擇器具有相同樣式時
Mixin
由於可以傳參數、content
可以做到許多複雜功能
運用時機:
自製好用小工具集
透過 mixin 收集為一隻檔案
Import
將程式碼分割成多個檔案
避免過去 css 動不動就上千行導致維護困難
對於程式結構組織化很有幫助
修改程式時,有助於聚焦在特定功能上
檔案名以下底線 _ 為前綴的 sass 檔不會產生 css 檔
ref. http://ithelp.ithome.com.tw/question/10132821
顏色函數
SASS 提供許多顏色相關功能
如: 調整 明暗 / 飽合度 / 色相 / 透明度 等
可滿足多數需求
ref. http://sassme.arc90.com/
compass
http://compass-style.org/
SASS的擴充
提供豐富的函式庫
特效,如圓角、漸層、image sprite等
輕鬆處理瀏覽器相容性問題
還有...
變數類型: list, key-value pair
if/else, loop (for,each,while)
結論
工欲善其事,必先利其器
透過 CSS preprocessor 的幫助
可以大大簡化撰寫 CSS 的過程,並且讓程式碼更好維護
有優點當然也會有缺點
需要安裝執行環境,對不熟悉下指令的人來說會有門檻
有此困難的人建議可以從 LESS 入門
從已存在的 CSS 專案導入
願意嘗試就是好的開始~
Reference
SASS/LESS/Stylus 表格式詳細比較
http://csspre.com/compare
SASS/LESS/Stylus 安裝環境、語法比較
http://www.cn-sass.com/%E6%95%99%E7%A8%8B/css-preprocessor-sass-vs-less-
stylus.html
Sass教學手冊導讀
http://ithelp.ithome.com.tw/question/10161764
Sass 語法https://github.com/hlb/sass-doc-
zh/blob/master/SASS_REFERENCE_ZH_TW.md

More Related Content

What's hot

Wakamonog6 “ISPのネットワーク”って どんなネットワーク?
Wakamonog6 “ISPのネットワーク”って どんなネットワーク?Wakamonog6 “ISPのネットワーク”って どんなネットワーク?
Wakamonog6 “ISPのネットワーク”って どんなネットワーク?Satoshi Matsumoto
 
はじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタはじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタSatoyuki Tsukano
 
show コマンド結果をパースする方法あれこれ #npstudy
show コマンド結果をパースする方法あれこれ #npstudyshow コマンド結果をパースする方法あれこれ #npstudy
show コマンド結果をパースする方法あれこれ #npstudyakira6592
 
Statement on the Purpose of a Corporation. Business Roundtable
Statement on the Purpose of a Corporation. Business RoundtableStatement on the Purpose of a Corporation. Business Roundtable
Statement on the Purpose of a Corporation. Business Roundtableeraser Juan José Calderón
 
バックボーン運用から見るインターネットの実情
バックボーン運用から見るインターネットの実情バックボーン運用から見るインターネットの実情
バックボーン運用から見るインターネットの実情IIJ
 
BitVisor Summit 11「2. BitVisor on Aarch64」
BitVisor Summit 11「2. BitVisor on Aarch64」BitVisor Summit 11「2. BitVisor on Aarch64」
BitVisor Summit 11「2. BitVisor on Aarch64」BitVisor
 
閉域網接続の技術入門
閉域網接続の技術入門閉域網接続の技術入門
閉域網接続の技術入門Masayuki Kobayashi
 
マイクロアドのアドテクを支える技術
マイクロアドのアドテクを支える技術マイクロアドのアドテクを支える技術
マイクロアドのアドテクを支える技術MicroAd, Inc.(Engineer)
 
ネットワークエンジニアはどこでウデマエをみがくのか?
ネットワークエンジニアはどこでウデマエをみがくのか?ネットワークエンジニアはどこでウデマエをみがくのか?
ネットワークエンジニアはどこでウデマエをみがくのか?Yuya Rin
 
Nervesが開拓する「ElixirでIoT」の新世界
Nervesが開拓する「ElixirでIoT」の新世界Nervesが開拓する「ElixirでIoT」の新世界
Nervesが開拓する「ElixirでIoT」の新世界Hideki Takase
 
ISPネットワーク運用で覗いてるもの
ISPネットワーク運用で覗いてるものISPネットワーク運用で覗いてるもの
ISPネットワーク運用で覗いてるものTaiji Tsuchiya
 
はじめてのdocker
はじめてのdockerはじめてのdocker
はじめてのdockerat grandpa
 
Kubernetes雑にまとめてみた 2020年8月版
Kubernetes雑にまとめてみた 2020年8月版Kubernetes雑にまとめてみた 2020年8月版
Kubernetes雑にまとめてみた 2020年8月版VirtualTech Japan Inc.
 
Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説貴仁 大和屋
 
The Indian Inks Industry
The Indian Inks IndustryThe Indian Inks Industry
The Indian Inks Industrykelkar.mayuresh
 
量子コンピュータ時代の製造業におけるDXセミナー~生産工程効率化に向けた新たなご提案~
量子コンピュータ時代の製造業におけるDXセミナー~生産工程効率化に向けた新たなご提案~量子コンピュータ時代の製造業におけるDXセミナー~生産工程効率化に向けた新たなご提案~
量子コンピュータ時代の製造業におけるDXセミナー~生産工程効率化に向けた新たなご提案~Fixstars Corporation
 

What's hot (20)

Wakamonog6 “ISPのネットワーク”って どんなネットワーク?
Wakamonog6 “ISPのネットワーク”って どんなネットワーク?Wakamonog6 “ISPのネットワーク”って どんなネットワーク?
Wakamonog6 “ISPのネットワーク”って どんなネットワーク?
 
はじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタはじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタ
 
show コマンド結果をパースする方法あれこれ #npstudy
show コマンド結果をパースする方法あれこれ #npstudyshow コマンド結果をパースする方法あれこれ #npstudy
show コマンド結果をパースする方法あれこれ #npstudy
 
Statement on the Purpose of a Corporation. Business Roundtable
Statement on the Purpose of a Corporation. Business RoundtableStatement on the Purpose of a Corporation. Business Roundtable
Statement on the Purpose of a Corporation. Business Roundtable
 
バックボーン運用から見るインターネットの実情
バックボーン運用から見るインターネットの実情バックボーン運用から見るインターネットの実情
バックボーン運用から見るインターネットの実情
 
BitVisor Summit 11「2. BitVisor on Aarch64」
BitVisor Summit 11「2. BitVisor on Aarch64」BitVisor Summit 11「2. BitVisor on Aarch64」
BitVisor Summit 11「2. BitVisor on Aarch64」
 
閉域網接続の技術入門
閉域網接続の技術入門閉域網接続の技術入門
閉域網接続の技術入門
 
マイクロアドのアドテクを支える技術
マイクロアドのアドテクを支える技術マイクロアドのアドテクを支える技術
マイクロアドのアドテクを支える技術
 
ネットワークエンジニアはどこでウデマエをみがくのか?
ネットワークエンジニアはどこでウデマエをみがくのか?ネットワークエンジニアはどこでウデマエをみがくのか?
ネットワークエンジニアはどこでウデマエをみがくのか?
 
Nervesが開拓する「ElixirでIoT」の新世界
Nervesが開拓する「ElixirでIoT」の新世界Nervesが開拓する「ElixirでIoT」の新世界
Nervesが開拓する「ElixirでIoT」の新世界
 
ISPネットワーク運用で覗いてるもの
ISPネットワーク運用で覗いてるものISPネットワーク運用で覗いてるもの
ISPネットワーク運用で覗いてるもの
 
IOS/IOS-XE 運用管理機能アップデート
IOS/IOS-XE 運用管理機能アップデートIOS/IOS-XE 運用管理機能アップデート
IOS/IOS-XE 運用管理機能アップデート
 
はじめてのdocker
はじめてのdockerはじめてのdocker
はじめてのdocker
 
Kubernetes雑にまとめてみた 2020年8月版
Kubernetes雑にまとめてみた 2020年8月版Kubernetes雑にまとめてみた 2020年8月版
Kubernetes雑にまとめてみた 2020年8月版
 
Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説
 
Mechanism of adhesion.pptx
Mechanism of adhesion.pptxMechanism of adhesion.pptx
Mechanism of adhesion.pptx
 
The Indian Inks Industry
The Indian Inks IndustryThe Indian Inks Industry
The Indian Inks Industry
 
OCRは古い技術
OCRは古い技術OCRは古い技術
OCRは古い技術
 
YJTC18 A-1 データセンタネットワークの取り組み
YJTC18 A-1 データセンタネットワークの取り組みYJTC18 A-1 データセンタネットワークの取り組み
YJTC18 A-1 データセンタネットワークの取り組み
 
量子コンピュータ時代の製造業におけるDXセミナー~生産工程効率化に向けた新たなご提案~
量子コンピュータ時代の製造業におけるDXセミナー~生産工程効率化に向けた新たなご提案~量子コンピュータ時代の製造業におけるDXセミナー~生産工程効率化に向けた新たなご提案~
量子コンピュータ時代の製造業におけるDXセミナー~生産工程効率化に向けた新たなご提案~
 

Viewers also liked

Parse, cloud code 介紹
Parse, cloud code 介紹Parse, cloud code 介紹
Parse, cloud code 介紹wantingj
 
Sass 基礎教學 - 高雄前端社群(CSS 讀書會)
Sass 基礎教學 - 高雄前端社群(CSS 讀書會)Sass 基礎教學 - 高雄前端社群(CSS 讀書會)
Sass 基礎教學 - 高雄前端社群(CSS 讀書會)Chih-cheng Wang
 
從CSS到SASS的開發旅程
從CSS到SASS的開發旅程從CSS到SASS的開發旅程
從CSS到SASS的開發旅程Anna Su
 
Javascript template & react js 初探
Javascript template & react js 初探Javascript template & react js 初探
Javascript template & react js 初探wantingj
 
Grid - 新時代的排版利器
Grid - 新時代的排版利器Grid - 新時代的排版利器
Grid - 新時代的排版利器Jocelyn Hsu
 
Npm 套件管理 & 常用開發工具介紹
Npm 套件管理 & 常用開發工具介紹Npm 套件管理 & 常用開發工具介紹
Npm 套件管理 & 常用開發工具介紹wantingj
 
專業前端 都如何管理 CSS
專業前端 都如何管理 CSS專業前端 都如何管理 CSS
專業前端 都如何管理 CSSChih-cheng Wang
 
如何運用Bootstrap 切版?
如何運用Bootstrap 切版?如何運用Bootstrap 切版?
如何運用Bootstrap 切版?shiang huang
 
認試軟體測試的世界 & TDD/BDD 入門
認試軟體測試的世界 & TDD/BDD 入門認試軟體測試的世界 & TDD/BDD 入門
認試軟體測試的世界 & TDD/BDD 入門wantingj
 
Bootstrap4 與他的好搭檔
Bootstrap4 與他的好搭檔Bootstrap4 與他的好搭檔
Bootstrap4 與他的好搭檔Chih-cheng Wang
 
Angular js 入門介紹
Angular js 入門介紹Angular js 入門介紹
Angular js 入門介紹wantingj
 
寫給大家的 Git 教學
寫給大家的 Git 教學寫給大家的 Git 教學
寫給大家的 Git 教學littlebtc
 
PWA 與 Service Worker
PWA 與 Service WorkerPWA 與 Service Worker
PWA 與 Service WorkerAnna Su
 
第一次用 Vue.js 就愛上 [改]
第一次用 Vue.js 就愛上 [改]第一次用 Vue.js 就愛上 [改]
第一次用 Vue.js 就愛上 [改]Kuro Hsu
 
26 Disruptive & Technology Trends 2016 - 2018
26 Disruptive & Technology Trends 2016 - 201826 Disruptive & Technology Trends 2016 - 2018
26 Disruptive & Technology Trends 2016 - 2018Brian Solis
 

Viewers also liked (15)

Parse, cloud code 介紹
Parse, cloud code 介紹Parse, cloud code 介紹
Parse, cloud code 介紹
 
Sass 基礎教學 - 高雄前端社群(CSS 讀書會)
Sass 基礎教學 - 高雄前端社群(CSS 讀書會)Sass 基礎教學 - 高雄前端社群(CSS 讀書會)
Sass 基礎教學 - 高雄前端社群(CSS 讀書會)
 
從CSS到SASS的開發旅程
從CSS到SASS的開發旅程從CSS到SASS的開發旅程
從CSS到SASS的開發旅程
 
Javascript template & react js 初探
Javascript template & react js 初探Javascript template & react js 初探
Javascript template & react js 初探
 
Grid - 新時代的排版利器
Grid - 新時代的排版利器Grid - 新時代的排版利器
Grid - 新時代的排版利器
 
Npm 套件管理 & 常用開發工具介紹
Npm 套件管理 & 常用開發工具介紹Npm 套件管理 & 常用開發工具介紹
Npm 套件管理 & 常用開發工具介紹
 
專業前端 都如何管理 CSS
專業前端 都如何管理 CSS專業前端 都如何管理 CSS
專業前端 都如何管理 CSS
 
如何運用Bootstrap 切版?
如何運用Bootstrap 切版?如何運用Bootstrap 切版?
如何運用Bootstrap 切版?
 
認試軟體測試的世界 & TDD/BDD 入門
認試軟體測試的世界 & TDD/BDD 入門認試軟體測試的世界 & TDD/BDD 入門
認試軟體測試的世界 & TDD/BDD 入門
 
Bootstrap4 與他的好搭檔
Bootstrap4 與他的好搭檔Bootstrap4 與他的好搭檔
Bootstrap4 與他的好搭檔
 
Angular js 入門介紹
Angular js 入門介紹Angular js 入門介紹
Angular js 入門介紹
 
寫給大家的 Git 教學
寫給大家的 Git 教學寫給大家的 Git 教學
寫給大家的 Git 教學
 
PWA 與 Service Worker
PWA 與 Service WorkerPWA 與 Service Worker
PWA 與 Service Worker
 
第一次用 Vue.js 就愛上 [改]
第一次用 Vue.js 就愛上 [改]第一次用 Vue.js 就愛上 [改]
第一次用 Vue.js 就愛上 [改]
 
26 Disruptive & Technology Trends 2016 - 2018
26 Disruptive & Technology Trends 2016 - 201826 Disruptive & Technology Trends 2016 - 2018
26 Disruptive & Technology Trends 2016 - 2018
 

Similar to CSS preprocessor 介紹,與 SASS 入門分享

SASS 入門
SASS 入門SASS 入門
SASS 入門Kero Yu
 
2010 01-07周五分享 前端的那些事儿-小米猪
2010 01-07周五分享 前端的那些事儿-小米猪2010 01-07周五分享 前端的那些事儿-小米猪
2010 01-07周五分享 前端的那些事儿-小米猪小 米猪
 
Modern Web with CSS and CSS Grid (image with links inside)
Modern Web with CSS and CSS Grid (image with links inside)Modern Web with CSS and CSS Grid (image with links inside)
Modern Web with CSS and CSS Grid (image with links inside)百範 陳
 
SASS 让你更爽的 编写CSS
SASS 让你更爽的 编写CSS SASS 让你更爽的 编写CSS
SASS 让你更爽的 编写CSS Zhu Qi
 
教網部落格模版設計
教網部落格模版設計教網部落格模版設計
教網部落格模版設計rainlan
 
Introduction to CSS Framwork
Introduction to CSS FramworkIntroduction to CSS Framwork
Introduction to CSS FramworkTechParty@UIC
 
如何逐步提升CSS的可利用性、模組化
如何逐步提升CSS的可利用性、模組化如何逐步提升CSS的可利用性、模組化
如何逐步提升CSS的可利用性、模組化洧杰 廖
 
符合语意的网页结构
符合语意的网页结构符合语意的网页结构
符合语意的网页结构thinkinlamp
 
高雄前端社群 #3 SASS workshop
高雄前端社群 #3 SASS workshop高雄前端社群 #3 SASS workshop
高雄前端社群 #3 SASS workshop洧杰 廖
 
css框架研究
css框架研究css框架研究
css框架研究chandleryu
 
Sass compass
Sass compassSass compass
Sass compassfangdeng
 
第11章
第11章第11章
第11章paoapao
 
老成的Sass&Compass
老成的Sass&Compass老成的Sass&Compass
老成的Sass&Compass智遠 成
 
2314 365737
2314 3657372314 365737
2314 365737open
 
Jass in coserv
Jass in coservJass in coserv
Jass in coservYyuchenY
 
Vertical rhythm
Vertical rhythmVertical rhythm
Vertical rhythm洧杰 廖
 

Similar to CSS preprocessor 介紹,與 SASS 入門分享 (20)

SASS 入門
SASS 入門SASS 入門
SASS 入門
 
2010 01-07周五分享 前端的那些事儿-小米猪
2010 01-07周五分享 前端的那些事儿-小米猪2010 01-07周五分享 前端的那些事儿-小米猪
2010 01-07周五分享 前端的那些事儿-小米猪
 
Modern Web with CSS and CSS Grid (image with links inside)
Modern Web with CSS and CSS Grid (image with links inside)Modern Web with CSS and CSS Grid (image with links inside)
Modern Web with CSS and CSS Grid (image with links inside)
 
SASS 让你更爽的 编写CSS
SASS 让你更爽的 编写CSS SASS 让你更爽的 编写CSS
SASS 让你更爽的 编写CSS
 
Css布局
Css布局Css布局
Css布局
 
教網部落格模版設計
教網部落格模版設計教網部落格模版設計
教網部落格模版設計
 
Introduction to CSS Framwork
Introduction to CSS FramworkIntroduction to CSS Framwork
Introduction to CSS Framwork
 
如何逐步提升CSS的可利用性、模組化
如何逐步提升CSS的可利用性、模組化如何逐步提升CSS的可利用性、模組化
如何逐步提升CSS的可利用性、模組化
 
符合语意的网页结构
符合语意的网页结构符合语意的网页结构
符合语意的网页结构
 
高雄前端社群 #3 SASS workshop
高雄前端社群 #3 SASS workshop高雄前端社群 #3 SASS workshop
高雄前端社群 #3 SASS workshop
 
css框架研究
css框架研究css框架研究
css框架研究
 
Sass compass
Sass compassSass compass
Sass compass
 
SASS入門實作
SASS入門實作SASS入門實作
SASS入門實作
 
第11章
第11章第11章
第11章
 
老成的Sass&Compass
老成的Sass&Compass老成的Sass&Compass
老成的Sass&Compass
 
CSS 分享 (2) CSS 基本概念與語法
CSS 分享 (2) CSS 基本概念與語法CSS 分享 (2) CSS 基本概念與語法
CSS 分享 (2) CSS 基本概念與語法
 
2314 365737
2314 3657372314 365737
2314 365737
 
Jass in coserv
Jass in coservJass in coserv
Jass in coserv
 
Vertical rhythm
Vertical rhythmVertical rhythm
Vertical rhythm
 
CSS 菜鳥救星
CSS 菜鳥救星CSS 菜鳥救星
CSS 菜鳥救星
 

CSS preprocessor 介紹,與 SASS 入門分享