TailwindCSS Basic

官方文件: https://tailwindcss.com/docs/installation

Using Tailwind via NPM

1
npm install tailwindcss@latest postcss@latest autoprefixer@latest
1
npx tailwindcss init

./tailwind.config.js

1
2
3
4
5
6
7
8
9
10
11
12
// tailwind.config.js
module.exports = {
purge: {
// enabled: true,
content: [
'./src/**/*.html',
'./src/**/*.ts',
'./projects/**/*.html',
'./projects/**/*.ts'
]
},
}

其中的purge,要把檢查的html,ts都加入,讓tailwindcss在壓縮時可以檢查。開發時先把enable設為false(預設也是false),等到發佈產品前再做全面檢測及壓縮,大約可以把tailwind.css從3.7MB壓縮至10KB。

1
2
3
4
5
6
7
8
9
purge: {
// enabled: true,
content: [
'./src/**/*.html',
'./src/**/*.ts',
'./projects/**/*.html',
'./projects/**/*.ts'
]
},

將tailwind.css建立在 ./src/assets/ 下,才能夠直接被Angular引用

1
npx tailwindcss-cli@latest build -o ./src/assets/tailwind.css

./src/index.html

1
<link rel="stylesheet" href="assets/tailwind.css">

./package.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
"scripts": {
"ng": "ng",
"start": "ng serve",
"tw_start": "npm run build_tailwind_dev && ng serve",
"ats": "angular-http-server -p 9000 --path ./dist",
"ls": "cd ./dist && live-server --port=9000 --entry-file=./index.html",
"build": "ng build --prod && npm run build_tailwind_prod",
"build_ls": "npm run build && npm run ls",
"build_deploy": "ng build --prod --deploy-url /static/dist/ && npm run build_tailwind_prod",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e",
"build_tailwind_prod": "npx tailwindcss-cli@latest build ./src/tailwind_src.css -c ./tailwind_pro.config.js -o ./dist/assets/css/tailwind.css",
"build_tailwind_dev": "npx tailwindcss-cli@latest build ./src/tailwind_src.css -c ./tailwind_dev.config.js -o ./src/assets/css/tailwind.css"
},

自訂tailwind.config.js

自訂顏色:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
module.exports = {
theme: {
extend: {
colors: {
transparent: 'transparent',
current: 'currentColor',
indigo: {
light: '#211EAD',
DEFAULT: '#21156D',
dark: '#21156D',
},
green: {
light: '#2EC5CE'
}
}
},
}
}

開啟DarkMode:

1
2
3
4
5
module.exports = {
// darkMode: false, // or 'media' or 'class'
darkMode: 'class', // or 'media' or 'class'
}

1
2
npx tailwindcss-cli@latest build ./src/tailwind.css -c ./tailwind_pro.config.js -o ./dist/tailw 
ind.css

使用不同的tailwind_XXX.config.js

在tailwind.config.js之外,我們再建立2個config檔,分別取名為 tailwind_dev.config.js tailwind_pro.config.js ,作為開發版及產品版所使用的config檔。

首先最重要的差異在於要不要啟用 purge 功能,在開發時,我們會使用到新的utility-class,因此若啟用purge功能,會造成開發上的麻煩,很多utility-class都會被清掉而無作用。相對地,在產品版中,我們希望tailwind.css的檔案愈小愈好。

以目前使用到的功能(含暗黑模式),未壓縮的tailwind.css約為5.7MB,壓縮後的tailwind.css則為14KB,檔案大小相差極巨。

開發版的config: ./tailwind_dev.config.js

1
2
3
4
5
6
7
8
9
10
module.exports = {
purge: {
// enabled: true,
content: [
'./src/**/*.html',
'./src/**/*.ts',
'./projects/**/*.html',
'./projects/**/*.ts'
]
},

產品版的config: ./tailwind_pro.config.js

1
2
3
4
5
6
7
8
9
10
module.exports = {
purge: {
enabled: true,
content: [
'./src/**/*.html',
'./src/**/*.ts',
'./projects/**/*.html',
'./projects/**/*.ts'
]
},

以上兩者的主要差異在於 enabled: true 這行,若是comment的狀態,則預設是關閉的。

修改package.json腳本

在package.json中,我們新增一個腳本叫做protw,負責編譯產品版的tailwind.css:

1
2
"protw": "npx tailwindcss-cli@latest build ./src/tailwind_src.css -c ./tailwind_pro.config.js -o ./dist/account-manager/assets/tailwind.css",

這段指令是用npx建置dist的tailwind.css的指令。指令分解如下::

1
2
3
4
動作: npx tailwindcss-cli@latest build
來源檔: ./src/tailwind_src.css
使用的config: -c ./tailwind_pro.config.js
目的檔: -o ./dist/account-manager/assets/tailwind.css

回到package.json中,我們將build腳本加上 && npm run protw :

1
"build": "ng build && npm run protw",

其中的ng build是Angular建置dist版本的指令,而npm run protw是編譯產品版的tailwind.css,這樣就可以用npm run build 同時完成產品版的建置。

回到package.json中,我們新增一個腳本叫做devtw,負責編譯開發版的tailwind.css:

1
"devtw": "npx tailwindcss-cli@latest build ./src/tailwind_src.css -c ./tailwind.config.js -o ./src/assets/tailwind.css"
1
2
3
4
動作: npx tailwindcss-cli@latest build
來源檔: ./src/tailwind_src.css
使用的config: -c ./tailwind_dev.config.js
目的檔: -o ./src/assets/tailwind.css

修改後的package.json腳本如下:

1
2
3
4
5
6
7
8
9
10
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build && npm run protw",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e",
"protw": "npx tailwindcss-cli@latest build ./src/tailwind_src.css -c ./tailwind_pro.config.js -o ./dist/account-manager/assets/tailwind.css",
"devtw": "npx tailwindcss-cli@latest build ./src/tailwind_src.css -c ./tailwind.config.js -o ./src/assets/tailwind.css"
},
閱讀全文

Sass Basic

安裝node-sass

1
2
3
4
$ npm init

$ npm install node-sass --save-dev
#--save-dev =>作為dev tool

建立資料夾scss 及 main.scss

創建main.scss

1
2
3
4
$ mkdir sass
$ cd sass/
$ touch main.scss

在package.json編寫compile腳本

開啟package.json, 在”scripts”那欄依序輸入: {"腳本名稱": "node-sass 來源檔 目的檔"}, 這是我們建立的腳本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{
"name": "mahoshojo",
"version": "1.0.0",
"description": "Landing page for mahoshojo",
"main": "index.js",
"scripts": {
"compile:sass": "node-sass app/sass/main.scss app/css/style.css"
//"腳本名稱": {"指令名稱": "node-sass 來源檔 目的檔"}
},

"author": "QB9487",
"license": "ISC",
"devDependencies": {
"node-sass": "^4.11.0"
},
"dependencies": {
"jquery": "^3.3.1"
}
}

在terminal執行腳本

1
2
3
4
5
6
7
$ npm run compile:sass
# 執行腳本
> mahoshojo@1.0.0 compile:sass D:\Sites\1-Mahoshojo
> node-sass app/sass/main.scss app/css/style.css

Rendering Complete, saving .css file...
Wrote CSS to D:\Sites\1-Mahoshojo\app\css\style.css

開啟 app\css\style.css, 可以看到main.scss的內容, 被轉譯後寫入style.css

1
2
3
4
5
6
7
8
.header {
height: 95vh;
background-image: linear-gradient(to right bottom, rgba(255, 153, 221, 0.7), rgba(150, 16, 94, 0.7)), url(../img/pink.jpg);
/* Photo by Sharon McCutcheon on Unsplash */
background-size: cover;
background-position: top;
position: relative;
clip-path: polygon(0 0, 100% 0, 100% 75vh, 0 100%); }

加入自動監看指令: -w

在腳本設定後加 -w 代表watch

1
2
3
"scripts": {
"compile:sass": "node-sass app/sass/main.scss app/css/style.css -w"
},

執行腳本時, 附加指令 -w, 每當main.scss存檔時, 腳本就會自動將其轉譯寫入style.css

1
2
3
4
5
6
7
8
9
10
$ npm run compile:sass -w
# 執行腳本 -w

> mahoshojo@1.0.0 compile:sass D:\Sites\1-Mahoshojo
> node-sass app/sass/main.scss app/css/style.css -w

=> changed: D:\Sites\1-Mahoshojo\app\sass\main.scss
Rendering Complete, saving .css file...
Wrote CSS to D:\Sites\1-Mahoshojo\app\css\style.css

註: 基本上這個功能和gulp watch是類似的, 但寫起來比gulp watch方便多了。

在全域安裝 Live server

1
2
3
4
5
6
7
8
9
$ npm install live-server -g
# -g 代表Globally(本機全域)

# 在LINUX/MAC系統可能要使用sudo權限
$ sudo npm install live-server -g

$ live-server -v
live-server 1.2.1
#查看Live-server的版本, 若有顯示則代表安裝成功

執行live-server

1
2
3
4
$ live-server
Serving "D:\Sites\1-Mahoshojo" at http://127.0.0.1:8080
Ready for changes
GET /favicon.ico 404 3.359 ms - 150

同時使用live-server及node-sass

目前我們能夠使用兩個package:

  • node-sass ==> 自動轉譯SCSS檔
  • live-server ==> 自動更新頁面

在有package.json的資料夾中執行node-sass:

1
$ npm run compile:sass -w

在有index.html的資料夾中執行live-server:

1
$ live-server

這兩者記得同時在兩個terminal開啟, 並且不要關掉, 其效果是, 每當我們儲存main.scss, 網頁就會自動更新成修改後的樣貌.

閱讀全文

Sass 與 WordPress

使用SCSS修改樣式

首先是用NPM安裝node-sass,再撰寫腳本指定覆蓋原本的style.css

../package.json

1
2
3
4
"scripts": {
"scss": "node-sass wordpress/wp-content/themes/sydney/scss/main.scss wordpress/wp-content/themes/sydney/style.css -w",

},

將原本的style.css改名為 _styleWP.scss,利用main.scss匯入後,再利用css權重去加入客製化樣式,如此一來就可以在舊有樣式上進行修改。

./scss/main.scss

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@import "abstracts/mixin";
@import "abstracts/variables";
@import "abstracts/utility";

@import "base/base";
@import "base/styleWP";
@import "base/typography";

@import "components/archives";
@import "components/article";
@import "components/button";
@import "components/categories";
@import "components/navbar";
@import "components/search";
@import "components/footer";

@import "layout/home";
閱讀全文