「當你迷惘的時候,就回到原點想一想」-中華一番 蘭飛鴻
網頁前端新手村系列文章,宗旨並不在技術本身的教導,重點放在技術與技術之間的脈胳關係。讓零碎的網頁前端技術的關鍵字,成為比較有系統性的視野。
讓一開始接觸網頁前端的新手們,有一個比較友善的系統來架構你的學習,至於技術本身的深入探討,就留給其它的高手們吧。
@import
開心的結構化 CSS在 w3.org 的文件[1]中, @import
和 CSS Cascade 是寫在一起的。@import
可以利用 CSS Cascade 的持性做一些讓程式碼變好的安排。所以在此特別提出來介紹一下。
第一次知道這個語法,還是一個看到一個高中生的 source code,他把雲端字型用 @import "URI"
插入到 CSS 檔中,而不是常見的,使用 <link href="URI">
,不然之前都只是在 SASS 的環境中使用。(初學看不懂這一段沒關係~XD)
指定路徑檔名 和 URI同名字串 都是常見的做法。
@import "cssFileName.css";
@import url(cssFileName.css);
@import url("cssFileName.css");
和 Media Query 一起使用,預設 all
@import url(color.css) screen and (color);
@import url(example.css) screen and (color), projection and (color);
@import url("fineprint.css") print;
@import url("bluish.css") projection, tv;
@import url("narrow.css") handheld and (max-width: 400px);
@import
的行為@import
幫你把另一個 CSS 檔的內容抄過來這個檔。必須先宣告於該檔的其它 ruleset 之前,否則失效。
w3.org 有定義一份 CSSOM
不過,我們不詳細介紹,有興趣的朋友可以去看看。
只是,在學習一些前置處理器時,往往會強調一些「 CSS 原生功能」當 SASS 的功能。
反而不是提醒我們原本寫 CSS 時就可以這麼做。
在此,我們就參考幾篇 SASS 的文章,看看他們怎麼「結構化」
stylesheets/
|
|-- modules/ # Common modules
| |-- _all.scss # Include to get all modules
| |-- _utility.scss # Module name
| |-- _colors.scss # Etc...
| ...
|
|-- partials/ # Partials
| |-- _base.sass # imports for all mixins + global project variables
| |-- _buttons.scss # buttons
| |-- _figures.scss # figures
| |-- _grids.scss # grids
| |-- _typography.scss # typography
| |-- _reset.scss # reset
| ...
|
|-- vendor/ # CSS or Sass from other projects
| |-- _colorpicker.scss
| |-- _jquery.ui.core.scss
| ...
|
`-- main.scss # primary Sass file
我個人不參考這篇文章作者的使用方式 (將 mixin, functions, variables 放一起),我傾向於「不管是 variables、function ... 將宣告與使用,放得愈近愈好」
以下是我個人的使用風格
@import
和想要複寫其它 SASS 檔案裡的特殊 SASS 。@import
和放置畫面上的零件 SASS,提供同風格的多個頁面使用。另外,vendor目錄,放置使用的套件 SASS 檔案。
離題了!!回來寫 CSS
CSS 有可能在 SASS 的建議架構之下應用嗎?
css/
|-- partials/ # Partials
| |-- reset.css # reset setting
| |-- colors.scss # colors
| |-- buttons.css # buttons
| |-- figures.css # figures
| |-- grids.css # grids
| |-- typography.css # typography
| ...
|
|-- vendor/ # CSS from other projects
| |-- animate.css
| ...
|
|-- index.css # primary CSS file
|-- function.css # primary CSS file
`-- payment.css # primary CSS file
換成 CSS 就是這樣用
@import
和想要複寫其它 CSS 檔案裡的特殊 CSS 。@import
和放置畫面上的零件 CSS,提供同風格的多個頁面使用。也許最後只是將 <link href="">
換成 @import
不過,可以透過 CSS 檔擺放順序,改變 CSS Cascade 在某些後端 render 的網站,就可以獨立於後端,做前端的事。
不過,再進階的用法,可以在初學時,初步的嘗到一點點類似 OOCSS 的滋味。
[1]: 2. Importing Style Sheets: the @import rule - w3.org
[2]: How to structure a Sass project