天天看點

【原子樣式實踐】第3篇 原子樣式檔案構成

原子樣式的分類多,數量多,适配多種浏覽器,統一值轉換,手工維護工作量較大,需要細化後進行管理。

1 樣式組成

1.1 樣式檔案劃分

​global.css​

​ 全局樣式檔案

​font.css​

​ 字型樣式檔案。由于字型檔案較大,單獨放在一個檔案中

​icon.css​

​ 圖示檔案。由于代碼較多,單獨放在一個檔案中。

​ext.[feature].css​

​ 擴充樣式檔案。對于不同項目可能使用不同的特效樣式,可以将特效樣式定義在單獨的檔案中。

​[page].css​

​ 局部樣式。儲存具體頁面新增的樣式,可以每頁面一個檔案。

1.2 樣式組成劃分

樣式檔案中

​reset.common.css​

​ 通用重置樣式,适用于全部浏覽器

​reset.[browser].css​

​ 特定浏覽器的重置樣式。可以沒有。

​combine.component.css​

​ 常用元件樣式,降級為原子樣式。

​combine.stage.css​

​ 常用場景樣式,與特定裝置或者環境有關。

​atom.css​

​ 原子樣式

​resource.css​

​​ 資源檔案樣式,包括圖檔、字型(​

​@font-face​

​指令)等

​import.css​

​​ 通過 ​

​@import​

​ 指令引入外部樣式

1.3 檔案與組成對照

每個樣式檔案根據需要隻包含指定的樣式部分。

組成/檔案 global.css font.css icon.css ext.[feature].css [page].css
reset.common.css Y
reset.[browser].css Y
combine.component.css Y Y Y
combine.stage.css Y Y Y
atom.css Y Y
resource.css Y Y
import.css Y Y

2 原子樣式命名規則

2.1 樣式變量

樣式變量定義複用的值,分為色彩、數字。

(1)色彩變量格式為:​

​--[colorName]-[order]​

分組 顔色 顔色名稱 說明 色階
基本色彩 white
black
gray 5
red 錯誤 5
yellow 警告 5
green 成功 5
blue 提示 5
主題色彩 主題 primary
紫色 purple 5
品紅 magenta 5
橙色 orange 5
金色 gold 5

(2)數字變量格式為:​

​--number-[N]​

分組 數字
邊框 1,2
元素間距 4,8,10,20,32
子元素間距 4,10,20
圓角 4,10,36
字型 20,24,28,36,48,72
圖示 36,48,72,96,144
高度 10,20,96,150,200
最小高度 200
寬度 100

2.2 布局

樣式分類 樣式說明 文法 實作
浮動布局 絕對位置 pos-abs positon: absolute;
相對位置 pos-rel position: relative;
固定位置 pos-fix position: fixed;
圖層位置 z-[1|2|3|4|5|6] z-index: [1|2|3|4|5|6];
右上角位置 tr-n18

top: var(--number-n18);

right: var(--number-n18);

彈性布局 row

display: flex;

flex-direction: row;

col

display: flex;

flex-direction: column;

換行 wrap

display: flex;

flex-direction: wrap;

反序行 row-r

display: flex;

flex-direction: column-reverse;

反序列 col-r

display: flex;

flex-wrap: col-reverse;

分列 c[1|2|3|4|5]

-webkit-box-flex: [1|2|3|4|5];

-webkit-flex: [1|2|3|4|5];

flex: [1|2|3|4|5];

主軸對齊 ai-start

-webkit-box-align: start;

-webkit-align-items: flex-start;

align-items: flex-start;

ai-center

-webkit-box-align: center;

-webkit-align-items: center;

align-items: center;

ai-end

-webkit-box-align: end;

-webkit-align-items: flex-end;

align-items: flex-end;

 此軸對齊 jc-start

-webkit-justify-content: flex-start;

justify-content: flex-start;

jc-center

-webkit-justify-content: center;

justify-content: center;

jc-end

-webkit-justify-content: flex-end;

justify-content: flex-end;

頂邊分散 jc-between

-webkit-justify-content: space-between;

justify-content: space-between;

分散 jc-around

-webkit-justify-content: space-around;

justify-content: space-around;

網格布局 2列均分 grid-2c

display: grid;

grid-template-columns: 1fr 1fr;

3列均分 grid-3c

display: grid;

grid-template-columns: 1fr 1fr 1fr;

4列均分 grid-4c

display: grid;

grid-template-columns: 1fr 1fr 1fr 1fr;

5列均分 grid-5c

display: grid;

grid-template-columns: 1fr 1fr 1fr 1fr 1fr;

2列12分 grid-2c-12

display: grid;

grid-template-columns: 1fr 2fr;

間隔 間隔32 gap-32 grid-gap: var(--number-32);
間隔20 gap-20 grid-gap: var(--number-20);
間隔10 gap-10 grid-gap: var(--number-10);
間隔4 gap-4 grid-gap: var(--number-4);

2.3 間距

樣式分類 樣式說明 文法 實作
外部間距 上下左右 m-[32|20|10]

margin-left: var(--number-[32|20|10]);

margin-right: var(--number-[32|20|10]);

margin-top: var(--number-[32|20|10]);

margin-bottom: var(--number-[32|20|10]);

X軸左右 mx-[32|20|10]

margin-left: var(--number-[32|20|10]);

margin-right: var(--number-[32|20|10]);

Y軸上下 my-[32|20|10]

margin-top: var(--number-[32|20|10]);

margin-bottom: var(--number-[32|20|10]);

X軸左右自動 mx-auto

margin-left: auto;

margin-right: auto;

内部間距 上下左右 p-[32|20|10]

padding-left: var(--number-[32|20|10]);

padding-right: var(--number-[32|20|10]);

padding-top: var(--number-[32|20|10]);

padding-bottom: var(--number-[32|20|10]);

X軸左右 px-[32|20|10]

padding-left: var(--number-[32|20|10]);

padding-right: var(--number-[32|20|10]);

Y軸上下 py-[32|20|10]

padding-top: var(--number-[32|20|10]);

padding-bottom: var(--number-[32|20|10]);

2.4 排版

樣式分類 樣式說明 文法 實作
字型 字型大小 text-[72|48|36|28|24|20] font-size: var(--number-[72|48|36|28|24|20]);
字型顔色 text-[colorName]-[order] color: var(--color-[colorName]-[order]);
字型對齊方式 text-[left|center|right] text-align: [left|center|right];
粗體 text-bold font-weight: bold;
換行 text-break

word-wrap: break-word;

word-break: break-all;

删除線 text-line text-decoration: line-through;
1.5倍行距 text-height-p150 line-height: 150%;
0.5間隔字元 text-space-5 letter-spacing: 0.5vmin;
背景 背景顔色 bg-[colorName]-[order] background-color: var(--color-[colorName]-[order]);

2.5 修飾

樣式分類 樣式說明 文法 實作
邊框 全邊框 border

border-width: var(--number-1);

border-style: solid;

border-color: var(--color-gray-4);

左邊框 border-left

border-left-width: var(--number-1);

border-style: solid;

border-color: var(--color-gray-4);

右邊框 border-right

border-right-width: var(--number-1);

border-style: solid;

border-color: var(--color-gray-4);

上邊框 border-top

border-top-width: var(--number-1);

border-style: solid;

border-color: var(--color-gray-4);

下邊框 border-bottom

border-bottom-width: var(--number-1);

border-style: solid;

border-color: var(--color-gray-4);

邊框顔色 bd-[colorName]-[order] border-color: var(--color-[colorName]-[order]);
邊框樣式 border-transparent border-color: transparent;
邊框寬度 border-[2|4|6] border-width: var(--number-[1|2|4]);
邊框樣式 border-dash border-style: dash;
圓角 圓形 round

border-radius: 50%;

display: flex;

overflow: hidden;

全圓角 round-[4|10|20|36]

-webkit-border-radius: var(--number-[4|10|20|36]);

border-radius: var(--number-[4|10|20|36]);

上左圓角 round-tl-10

-webkit-top-left-radius: var(--number-10);

border-top-left-radius: var(--number-10);

上右圓角 round-tr-10

-webkit-top-right-radius: var(--number-10);

border-top-right-radius: var(--number-10);

下左圓角 round-bl-10

-webkit-bottom-left-radius: var(--number-10);

border-bottom-left-radius: var(--number-10);

下右圓角 round-br-10

-webkit-bottom-right-radius: var(--number-10);

border-bottom-right-radius: var(--number-10);

陰影 陰影 shadow box-shadow: 0 0.533vmin 1.6vmin #d8d8d8;
半透明度 半透明度 opacity-5 opacity: 0.5;
旋轉 旋轉90度 rotate-90

transform: rotate(90deg);

-webkit-transform: rotate(90deg);

旋轉180度 rotate-180

transform: rotate(180deg);

-webkit-transform: rotate(180deg);