搜尋

邊框 border ( 樣式、粗細、顏色 )

邊框是網頁元素內邊距與外邊距之間的線段,這篇教學主要會介紹網頁元素的 border、border-style、border-width 和 border-color,透過這些樣式屬性,控制邊框的樣式、粗細和顏色,以及同時設定四個方向邊框的語法,設定單一方向邊框或單一樣式屬性的方法。

快速導覽:

CSS 教學 - 邊框 border

border 撰寫語法

border 是元素容器盒子模型裡的「邊框」,也就是元素由內而外,在內邊距和外邊界中間的的線段,網頁中大部分元素 border 預設都是 none因此大部分元素都不會有邊框,如果讓元素出現邊框,最簡單的方式可以使用「縮寫形式」一次處理「邊框粗細、邊框樣式、邊框顏色」,邊框樣式沒有繼承特性,撰寫語法如下:

div {
  border: 邊框粗細 邊框樣式 邊框顏色;
}

雖然縮寫形式很方便,但仍有一些相關規則:

  • 屬性值使用「空白」分隔。
  • 屬性值「沒有先後順序規則」。
  • 縮寫形式的寫法會讓元素「上下左右四個方向的邊框,呈現相同的粗細、樣式和顏色」。
  • 縮寫形式如果沒有邊框樣式,邊框樣式會套用 none,不會呈現邊框。

下方的範例會讓三個 div 呈現不同的邊框,可以注意三個屬性值沒有先後順序關係。

線上展示:https://codepen.io/oxxo/pen/gOJVLaR

<!-- HTML 程式碼 -->
<div class="a">oxxo</div>
<div class="b">apple</div>
<div class="c">banana</div>

<!-- CSS 程式碼 -->
<style>
  div {
    width: 100px;
    height: 30px;
    margin: 10px;
  }
  .a {border: 1px solid #000;}
  .b {border: red 5px dotted;}
  .c {border: dashed green 10px;}
</style>

CSS 教學 - 邊框 border - border 撰寫語法

border-* 單一邊框

除了一次設定四個方向的 border 數值,也可以透過單一邊框的樣式屬性,單獨設定上下左右的邊框,撰寫的語法e規則和 border 完全相同。

單一邊框樣式 說明
border-top 上方邊框
border-right 右側邊框
border-bottom 下方邊框
border-left 左側邊框

單一邊框的權重與 border 相同,有時會運用「撰寫順序」來覆寫特定方向的邊框,下方的範例先將 div 的 border 統一設定為 1px solid #000,再運用單一邊框樣式調整特定方向的邊框。

線上展示:https://codepen.io/oxxo/pen/MWdNbaZ

<!-- HTML 程式碼 -->
<div></div>

<!-- CSS 程式碼 -->
<style>
  div {
    width: 200px;
    height: 100px;
    margin: 10px;
    border: 1px solid #000;
    border-top: 5px solid #000;
    border-right: 10px dashed red;
    border-bottom: 15px double orange;
    border-left: 5px dotted green;
  }
</style>

CSS 教學 - 邊框 border - border-* 單一邊框

border-style 邊框樣式

設定邊框時,需要使用特定的「樣式名稱」,就能產生對應的「邊框樣式」,下方列出 CSS 支援的邊框樣式名稱:

邊框樣式名稱 說明
none 沒有邊框,邊框寬度為 0,與「有邊框的單元格元素」邊框重疊處「會顯示」邊框。
hidden 隱藏邊框,邊框寬度為 0,與「有邊框的單元格元素」邊框重疊處「不會顯示」邊框。
solid 實線。
double 雙實線,雙實線的總寬度為邊框的寬度。
dotted 圓點虛線,圓點直徑等於寬度,圓點間隔根據瀏覽器自行定義。
dashed 方形虛線,長度與間隔根據瀏覽器自行定義。
groove 凹槽雕刻效果邊框。
ridge 浮雕效果邊框。
inset 陷入效果邊框。
outset 突起效果邊框。

CSS 教學 - 邊框 border - 邊框樣式

邊框樣式名稱的 nonehidden 效果在大部分的狀況下都相同,差別僅在於表格的「單元格」邊框重疊時的套用權重,如果使用 none,邊框重疊時如果其中一個元素有設定邊框,則會顯示設定的邊框,使用 hidden 則相反,邊框重疊時會一起隱藏邊框,下方範例可以看出明顯差異 ( 範例有加上陰影識別元素最外緣 )。

線上展示:https://codepen.io/oxxo/pen/LYowbGp

<!-- HTML 程式碼 -->
<table class="a">
  <tr><td></td><td></td><td></td></tr>
  <tr><td></td><td></td><td></td></tr>
</table>
<table class="b">
  <tr><td></td><td></td><td></td></tr>
  <tr><td></td><td></td><td></td></tr>
</table>
<table class="c">
  <tr><td></td><td></td><td></td></tr>
  <tr><td></td><td></td><td></td></tr>
</table>
<table>
  <tr><td></td><td></td><td></td></tr>
  <tr><td></td><td></td><td></td></tr>
</table>

<!-- CSS 程式碼 -->
<style>
  table {
    border-collapse: collapse;  /* 合併邊框 */
    margin: 20px;
    box-shadow: #000 0 0 10px;  /* 加上陰影識別最外緣 */
  }
  table td {
    border: 20px solid #0007;   /* 邊框用半透明,輔助識別 */
    width: 50px;
    height: 50px;
    background: linear-gradient(to left bottom, red, yellow); /* 使用漸層色輔助識別 */
  }
  .a tr td {
    border-style: none;
  }
  .b tr td{
    border-style: none;
  }
  .b tr:first-child td:first-child{
    border-style: solid;      /* 只有左上第一格有邊框 */
  }
  .c tr td{
    border-style: hidden;
  }
  .c tr:first-child td:first-child{
    border-style: solid;      /* 只有左上第一格有邊框 */
  }
</style>

CSS 教學 - 邊框 border - 邊框樣式 none 和 hidden

除了使用 border 的縮寫形式設定邊框樣式,CSS 還提供了「單獨設定」邊框樣式的樣式屬性,屬性值只有樣式名稱,一次設定四個方向邊框的寫法如下:

邊框樣式 說明
border-style: 上 右 下 左; 空白分隔「四個」數值,分別設定四個方向的邊框樣式。
border-style: 上 (左右) 下; 空白分隔「三個」數值,分別設定上、下和左右邊框樣式,左右樣式相同。
border-style: (上下) (左右); 空白分隔「兩個」數值,分別設定上下和左右邊框樣式,上下的樣式相同,左右的樣式相同。
border-style: (上下左右); 一個數值,上下左右邊框樣式相同。

單一方向的邊框寫法:

單一邊框樣式 說明
border-top-style 上方邊框樣式。
border-right-style 右側邊框樣式。
border-bottom-style 下方邊框樣式。
border-left-style 左側邊框樣式。

下方範例使會使用五個 div,分別呈現不同邊框樣式的設定方式。

線上展示:https://codepen.io/oxxo/pen/gOJVLPR

<!-- HTML 程式碼 -->
<div class="a">border-style: solid dotted dashed double;</div>
<div class="b">border-style: solid dashed double;</div>
<div class="c">border-style: solid double;</div>
<div class="d">border-style: double;</div>
<div class="e">單一邊框設定</div>

<!-- CSS 程式碼 -->
<style>
  div {
    width: 320px;
    height: 60px;
    border-width: 10px;
    border-color: #000;
    margin: 10px;
    padding: 5px;
  }
  .a {border-style: solid dotted dashed double;}
  .b {border-style: solid dashed double;}
  .c {border-style: solid double;}
  .d {border-style: double;}
  .e {
    border-top-style: solid;
    border-right-style: double;
    border-bottom-style: groove;
    border-left-style: dashed
  }
</style>

CSS 教學 - 邊框 border - border-style 邊框樣式

border-width 邊框粗細

設定邊框的粗細時,需要使用「具有長度單位」的數值,下方列出 CSS 支援的邊框粗細長度單位:

延伸閱讀:長度與角度單位

長度單位 性質 說明
px 絕對長度 像素。
em 相對長度 元素本身字體大小的幾倍。
rem 相對長度 根元素字體大小的幾倍。
thin 細 ( 關鍵字 ) 通常是 1px~2px,由瀏覽器決定。
medium 中等 ( 關鍵字 ) 通常是 2px~4px,由瀏覽器決定。
thick 粗 ( 關鍵字 ) 通常是 3px~5px,由瀏覽器決定。
pt、cm、mm、in 絕對長度 印刷單位。

除了使用 border 的縮寫形式設定邊框粗細,CSS 還提供了「單獨設定」邊框粗細的樣式屬性,屬性值只有具有長度單位的數值,一次設定四個方向邊框的寫法如下:

邊框粗細 說明
border-width: 上 右 下 左; 空白分隔「四個」數值,分別設定四個方向的邊框粗細。
border-width: 上 (左右) 下; 空白分隔「三個」數值,分別設定上、下和左右邊框粗細,左右粗細相同。
border-width: (上下) (左右); 空白分隔「兩個」數值,分別設定上下和左右邊框粗細,上下的粗細相同,左右的粗細相同。
border-width: (上下左右); 一個數值,上下左右邊框粗細相同。

單一方向的邊框寫法:

單一邊框粗細 說明
border-top-width 上方邊框粗細。
border-right-width 右側邊框粗細。
border-bottom-width 下方邊框粗細。
border-left-width 左側邊框粗細。

下方範例使會使用五個 div,分別呈現不同邊框粗細的設定方式,長度單位可以混合使用,只要最後可以正確計算出數值就可以

線上展示:https://codepen.io/oxxo/pen/zYQgorg

<!-- HTML 程式碼 -->
<div class="a">border-width: 5px 0.5em thin thick;</div>
<div class="b">border-width: 5px 15px 1px;</div>
<div class="c">border-width: 5px 15px;</div>
<div class="d">border-width: 5px;</div>
<div class="e">單一邊框粗細</div>

<!-- CSS 程式碼 -->
<style>
  div {
    width: 320px;
    height: 60px;
    border-style: solid;
    border-color: #000;
    margin: 10px;
    padding: 5px;
    font-size:14px;
  }
  .a {border-width: 5px 0.5em thin thick;}
  .b {border-width: 5px 15px 1px;}
  .c {border-width: 5px 15px;}
  .d {border-width: 5px;}
  .e {
    border-top-width: 5px;
    border-right-width: 0.5em;
    border-bottom-width: thick;
    border-left-width: thin;
  }
</style>

CSS 教學 - 邊框 border - border-width 邊框粗細

border-color 邊框顏色

設定邊框的顏色時,需要使用「具有顏色單位」的數值,只支援「單色」,每種顏色單位都可以添加不同程度的透明度,「全透明」的邊框有時可以當作「額外的內邊距」,下方列出 CSS 支援的邊框顏色單位

延伸閱讀:顏色單位CSS 函式 ( 色彩模型 )

顏色單位 性質 範例
顏色名稱 使用 CSS 支援色顏色名稱 redblue
transparent ( 關鍵字 ) 透明。 transparent
十六進位色碼 紅綠藍十六進位色碼。 #ffc900#ffc90055
十六進位色碼 ( 簡寫 ) 簡寫紅綠藍十六進位色碼。 f00f005
rgb() RGB 色彩模型 ( sRGB 色彩空間 )。 rgb(255, 0, 0, 0.5)
hsl() HSL 色彩模型 ( sRGB 色彩空間 )。 hsl(120, 50%, 30%, 0.5)
lab() Lab 色彩模型 ( CIELab 色彩空間 )。 lab(100% -125 125 / 0.2)
lch() LCH 色彩模型 ( CIELab 色彩空間 )。 lch(50% 50 180 / 0.3)
oklab() OkLab 色彩模型 ( OkLab 色彩空間 )。 oklab(0.3 -0.4 0.4 / 0.8)
oklch() OkLCH 色彩模型 ( OkLab 色彩空間 )。 oklch(0.3 0.2 0 / 0.5)
color() 指定色彩空間顏色。 color(display-p3 0.5 1 0)
color-mix() 顏色混合。 color-mix(in srgb, blue 60%, white)
light-dark() 深色與淺色模式。 light-dark(#fa0, #06f)

除了使用 border 的縮寫形式設定邊框顏色,CSS 還提供了「單獨設定」邊框顏色的樣式屬性,屬性值只有具有顏色單位的數值,一次設定四個方向邊框的寫法如下:

邊框顏色 說明
border-color: 上 右 下 左; 空白分隔「四個」數值,分別設定四個方向的邊框顏色。
border-color: 上 (左右) 下; 空白分隔「三個」數值,分別設定上、下和左右邊框顏色,左右顏色相同。
border-color: (上下) (左右); 空白分隔「兩個」數值,分別設定上下和左右邊框顏色,上下的顏色相同,左右的顏色相同。
border-color: (上下左右); 一個數值,上下左右邊框顏色相同。

單一方向的邊框顏色寫法:

單一邊框顏色 說明
border-top-color 上方邊框顏色。
border-right-color 右側邊框顏色。
border-bottom-color 下方邊框顏色。
border-left-color 左側邊框顏色。

下方範例使會使用五個 div,分別呈現不同邊框顏色的設定方式,顏色單位可以混合使用,只要最後可以正確計算出顏色數值就可以

線上展示:https://codepen.io/oxxo/pen/PovMbNJ

<!-- HTML 程式碼 -->
<div class="a">border-color: red #00f rgb(0,200,100) hsl(50, 50%, 50%, 0.5);</div>
<div class="b">border-color: red #00f rgb(0,200,100);</div>
<div class="c">border-color: red #00f;</div>
<div class="d">border-color: red;</div>
<div class="e">單一邊框顏色</div>

<!-- CSS 程式碼 -->
<style>
  div {
    width: 320px;
    height: 60px;
    border-style: solid;
    border-width: 10px;
    margin: 10px;
    padding: 5px;
    font-size:14px;
  }
  .a {border-color: red #00f rgb(0,200,100) hsl(50, 50%, 50%, 0.5);}
  .b {border-color: red #00f rgb(0,200,100);}
  .c {border-color: red #00f;}
  .d {order-color: red;}
  .e {
    border-top-color: red;
    border-right-color: #00f;
    border-bottom-color: rgb(0,200,100);
    border-left-color: hsl(50, 50%, 50%, 0.5);
  }
</style>

CSS 教學 - 邊框 border - border-color 邊框顏色

內容寬高為 0 的邊框效果 ( 製作三角形 )

box-sizing 預設值為 padding-box 的狀態下,內容寬高不會包含邊框的寬度,因此就能運用邊框實現一些特殊的效果,下方的範例使用「solid」實線邊框樣式,搭配透明色關鍵字 transparent 與邊框寬度,就能做出各種不同方向的「三角形」,下方範例如果將透明色改為 #ccc 淺灰色,就能看出利用邊框做出三角形的原理。

線上展示:https://codepen.io/oxxo/pen/NWVQbMO

<!-- HTML 程式碼 -->
<div class="a"></div>
<div class="b"></div>
<div class="c"></div>
<div class="d"></div>

<!-- CSS 程式碼 -->
<style>
  div {
    width: 0;
    height: 0;
    border-style: solid;
    margin: 10px;
  }
  .a {
    border-width:50px;
    border-color: red transparent transparent;  /* 只有上方有顏色 */
  }
  .b {
    border-width:50px 100px 0 0;   /* 下、左邊框寬度為 0 */
    border-color: transparent green transparent transparent;  /* 只有右方有顏色 */
  }
  .c {
    border-width:30px 0 30px 100px;   /* 右側邊框寬度為 0 */
    border-color: transparent transparent transparent orange;  /* 只有左方有顏色 */
  }
  .d {
    border-width:0 20px 100px;     /* 上方邊框寬度為 0 */
    border-color: transparent transparent blue;   /* 只有下方有顏色 */
  }
</style>

CSS 教學 - 邊框 border - 內容寬高為 0 的邊框效果 ( 製作三角形 )

不可置換行內容器的 border

雖然不可置換行內容器無法調整寬高 ( 文字樣式的顯示類型大多都是 inline ),但卻可以透過 border 增加邊框,進而改變寬度,不過由於行內容器的高度由字型大小和行高所管控,就算設定了 border 數值,最多也只是覆蓋到其他行內元素,並不會影響整體高度,在行內容器換行時,也會發生邊框跟著換行的現象。

不可置換行內容器表示不會透過 src 等屬性改變元素內容。

下方的範例設定了 strong 和 em 這兩個行內容器元素的 border 數值,因為寬度改變而影響了左右的間距,但上下的 border 雖然有發生作用,但卻不影響容器的行高表現,也不會影響整體的高度。

線上展示:https://codepen.io/oxxo/pen/QWReGNB

<!-- HTML 程式碼 -->
<div>
  <span><strong>STEAM 教育學習網</strong>透過免費且高品質的<em>教學與範例</em>讓所有人都能輕鬆跨入 STEAM 的學習領域。</span>
</div>
<span>hello world!!!!</span>

<!-- CSS 程式碼 -->
<style>
  div {
    border: 1px solid #000;
    padding: 10px;
    margin: 20px;
  }
  strong {border: 20px solid #f005;}
  em {border: 10px solid #00f5;}
</style>

CSS 教學 - 邊框 border - 不可置換行內容器 border

可置換行內容器的 border

網頁中的圖片元素 img 或 svg 都屬於「可置換」行內容器 ( 顯示類型大多都是 inline-block ),這些元素原本就能設定寬高,而不是根據字型或行高決定容器大小,因此如果設定了 border 數值,就會影響整體容器的或每一行文字的間距

下方的範例在文字中插入一張圖片,當設定了圖片的 padding 數值,整體高度就會變多,且文字間的行距也會變高。

線上展示:https://codepen.io/oxxo/pen/ExzqNyY

<!-- HTML 程式碼 -->
<div>
  <span>STEAM 教育學習網透過免費且高品質的教學與範例
    <img src="https://steam.oxxostudio.tw/download/css/function-filter-demo.jpg">讓所有人都能輕鬆跨入 STEAM 的學習領域。</span>
</div>
<span>hello world!!!!</span>

<!-- CSS 程式碼 -->
<style>
  div {
    border: 1px solid #000;
    padding: 10px;
    margin: 30px 30px 0 0;
  }
  img {
    width: 100px;
    border: 20px solid #f005;
  }
</style>

CSS 教學 - 邊框 border - 可置換行內容器 border

小結

在網頁設計裡,不論是凸顯效果,或展示頁面裡的不同區域,都很常利用邊框來進行排版,這篇教學介紹了邊框最基本的三個樣式屬性:樣式、寬度和顏色,只要熟練運用,就能讓網頁版面區分得更加清楚。

延伸閱讀:邊框圓角

意見回饋

如果有任何建議或問題,可傳送「意見表單」給我,謝謝~

CSS 教學

基本介紹

認識 CSS 開始使用 CSS CSS 語法規則 CSS 命名原則

CSS 選擇器

認識 CSS 選擇器 優先順序 ( 權重 ) 樣式繼承與聯集 元素選擇器 ID 和 Class 選擇器 屬性選擇器 文件結構選擇器 虛擬類別選擇器 ( 結構 ) 虛擬類別選擇器 ( 類型 ) 虛擬類別選擇器 ( 輸入 ) 虛擬類別選擇器 ( 行為 ) 虛擬類別選擇器 ( 超連結 ) 虛擬類別選擇器 ( 邏輯 ) 虛擬類別選擇器 ( 其他 ) 虛擬元素選擇器 群組與組合選擇器

數值與單位

關鍵字與文字數值 長度與角度單位 顏色單位 位置名稱與時間單位

變數與內容函式

變數 數學計算 文字與清單計數 生成內容與引號

顏色與濾鏡

色彩模型 漸層色 影像濾鏡

文字樣式

使用通用字型 使用外部字型 @font-face 定義字型 文字尺寸 常用文字樣式 文字換行 文字空白與 Tab 大小 文字行高與縮排 文字水平與垂直對齊 文字書寫方向 特殊文字樣式

元素容器

容器顯示類型 ( display ) 元素 display 對照表 盒子模型 ( Box Model ) 寬度與高度 內邊距 ( padding ) 外邊界 ( margin ) 邊框 ( border ) 邊框圓角 影像邊框 輪廓 ( outline ) 可見性與透明度 內容溢出與裁切

背景與陰影

背景顏色 背景圖 ( 定位、尺寸 ) 背景圖 ( 固定、重複 ) 背景圖 ( 多重背景、混合 ) 背景縮寫 ( background ) 容器陰影 ( box-shadow )

清單與表格

清單樣式 清單計數器 定義計數規則 表格基本樣式 表格邊框樣式 表格內容寬度與對齊

基本排版與定位

元素排版方式 浮動 ( float ) 浮動形狀 定位 ( position )

Flexbox 彈性排版

Flexbox 彈性盒子 Flexbox 對齊方式 Flexbox 彈性伸縮

Grid 網格排版

Grid 網格容器與格線 Grid 網格空間與命名 Grid 網格流向與間距 Grid 排列網格項目 Grid 項目對齊與順序

轉場與動畫

轉場 ( transition ) 轉場觸發事件 動畫 ( animation ) 動畫觸發事件 多重動畫的權重與順序

變形、裁切與遮罩

裁切路徑 ( clip-path ) 影像遮罩 ( mask )