iT邦幫忙

2022 iThome 鐵人賽

DAY 28
0

剛學網頁的開發者:

隨著 Node.js & 2010年的 npm 出現,各種工具遍地開花!

今天來盤點一下 CSS 相關名詞

  • CSS
  • Sass
    • Sass 是縮排
    • 像是 python 的寫法
  • Less(LESS)
    • 巢狀
  • SCSS
    • 受 Less 啟發
    • SCSS 是巢狀元語言
  • PostCSS
    • JS 有 Babel 轉換器
    • CSS 有 PostCSS 轉換器,可以安裝一堆套件
  • Tailwind CSS

我們都知道前端有三劍客: HTML CSS JavaScript
HTML -> 骨架
CSS -> 皮膚
JavaScript -> 肌肉

CSS(Cascading Style Sheets)

中文叫做: 階層式樣式表
根據維基百科記載,初始版本時間: 17 December, 1996
(一查才發現年紀比我大!)

習慣上會放在 <head> 標籤,其實放在任何地方都可以(包括 html 外面)

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        body {
            background: #fff;
            color: #777;
        }

        h1 {
            font-weight: bold;
            font-style: italic;
            font-family: sans-serif;
            color: green;
        }
    </style>
</head>

<body>
    <h1>123</h1>
</body>

</html>

當網頁越寫越多行時,會抽出去共用

<link rel="stylesheet" href="./css/xxx.css" />

Sass vs Less vs SCSS

當網頁越長越大,原生 CSS 語法維護起來越來越困難
因此開發者們開始做出新的工具
功能大致有: 支援變數、巢狀、Mixin、選擇器繼承

Sass (Syntactically awesome style sheets)

中文翻譯叫做: 語法上很讚的樣式表(?
根據維基百科記載,初始版本時間: November 28, 2006
特色是縮排寫法

table.hl 
  margin: 2em 0
  td.ln 
    text-align: right
  
li 
  font: 
    family: serif
    weight: bold
    size: 1.3em
    
/**會變成*/

table.hl {
  margin: 2em 0;
}
table.hl td.ln {
  text-align: right;
}

li {
  font-family: serif;
  font-weight: bold;
  font-size: 1.3em;
}

Less (Leaner Style Sheets)

中文翻譯叫做: 更精簡的樣式表(?
根據維基百科記載,初始版本時間: 2009

#header {
  h1 {
    font-size: 26px;
    font-weight: bold;
  }
  p { font-size: 12px;
    a { text-decoration: none;
      &:hover { border-width: 1px }
    }
  }
}

/**會變成*/

#header h1 {
  font-size: 26px;
  font-weight: bold;
}
#header p {
  font-size: 12px;
}
#header p a {
  text-decoration: none;
}
#header p a:hover {
  border-width: 1px;
}

Scss (Sassy CSS)

中文翻譯叫做: 野蠻的樣式表(?
是Sass的分身,也就是支援2種不同的寫法
沒有查到明確的時間,只有查出是至少10年前

table.hl {
  margin: 2em 0;
  td.ln {
    text-align: right;
  }
}

li {
  font: {
    family: serif;
    weight: bold;
    size: 1.3em;
  }
}

/**會變成*/

table.hl {
  margin: 2em 0;
}
table.hl td.ln {
  text-align: right;
}

li {
  font-family: serif;
  font-weight: bold;
  font-size: 1.3em;
}

上面這些被稱為 CSS 預處理器,因為瀏覽器看不懂,寫好後需要程式做轉換成 CSS


PostCSS

100秒 介紹影片:
Yes

是一個用工具,專門轉換 CSS (用 JavaScript 寫的)
可以把它當成一個工具箱,工具箱可以裝各種不同工具,十字起子,鐵鎚,鋸子
根據不同需求去使用不同模組(套件)

最常聽到的是 Autoprefixer,可以加入各種瀏覽器的前綴

:fullscreen {
}
/**會變成*/
:-webkit-full-screen {
}
:-ms-fullscreen {
}
:fullscreen {
}

Tailwind

100秒 介紹影片:
Yes

不知道大家在手刻 CSS 的時候是依照功能呢? 還是遵守單一職責原則,依照 CSS 功能寫好後在 class 引用
說這麼多其實就是 className很短 對決 className很長

Tailwind 是屬於 className很短 這一派的,不像Boostrap幫忙刻好元件,一切都依照使用者自己去組合而成(堆積木)。筆者覺得很適合用在共用 components 的時候,管好自己就好,不會影響到其他人

Huli前輩有整理一篇 淺談 Atomic CSS 的發展背景與 Tailwind CSS
相信看完會很有收穫的


小結

相信每個工具都有存在的意義,不同的人事時地物都會造就不同的結果,身為開發者只能與時俱地盡量去了解常見的名詞&工具的用法,未來在面對不同專案需求與合作夥伴時才有更多選擇和討論的空間

覆蓋一張瀏覽器圖,結束這一天

來源


參考文章

css预处理器和后处理器
https://juejin.cn/post/7104419003329675277

Day 09-[番外]繽紛世界(CSS / Autoprefixer / SCSS with Parcel)
https://ithelp.ithome.com.tw/articles/10201770

【五分鐘學前端】Webpack、PostCSS、Babel、Sass到底是什麼?
https://yixuntseng-bruce.medium.com/%E4%BA%94%E5%88%86%E9%90%98%E5%AD%B8%E5%89%8D%E7%AB%AF-webpack-postcss-babel-sass%E5%88%B0%E5%BA%95%E6%98%AF%E4%BB%80%E9%BA%BC-21820404fdd3

在 VUE SFC (vue-cli) 規劃 Tailwind CSS 架構
https://muki.tw/tech/javascript/tailwind-css-in-vue/

一篇前端討論區抱怨文讓大家 Tailwind 功力更上一層(附上 Bootstrap 比較)
https://blog.user.today/new-way-to-learn-tailwind-css/


上一篇
第二十七天 pure-admin-thin 前端寫假資料 | vite-plugin-mock
下一篇
第二十九天 替 pure-admin-thin 加入圓餅圖 | echarts
系列文
教練我想做一個後台管理系統,阿我忘記我只有一個人沒有教練,那用試著以vue-pure-admin為基底做做看31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

我要留言

立即登入留言