搜索

CSS 教学

基本介绍

认识 CSS 开始使用 CSS CSS 语法规则 CSS 命名原则 CSS 常用样式属性

CSS 选择器

认识 CSS 选择器 优先级 ( 权重 ) 样式继承与联集 使用巢状结构语法 元素选择器 ID 和 Class 选择器 属性选择器 文件结构选择器 虚拟类别选择器 ( 结构 ) 虚拟类别选择器 ( 类型 ) 虚拟类别选择器 ( 输入 ) 虚拟类别选择器 ( 行为 ) 虚拟类别选择器 ( 超链接 ) 虚拟类别选择器 ( 逻辑 ) 虚拟类别选择器 ( 其他 ) 虚拟元素选择器 群组与组合选择器

数值与单位

全域关键字与文字数值 长度与角度单位 位置名称与时间单位 特殊样式属性 ( all、appearance)

规则与定义

变数 ( Variables ) 媒体查询 ( @media ) 容器查询 ( @container ) 自订属性值 ( @property ) 导入样式 ( @import ) 分层优先级 ( @layer ) 选择器作用域 ( @scope ) 定义字型 ( @font-face ) 计数规则 ( @counter-style ) 打印网页 ( @page )

函数类型

数学计算 文字与清单计数 形状与线段 路径 ( path )

颜色与滤镜

颜色单位 色彩模型 相对颜色 渐层色 图像滤镜 ( filter ) 背景滤镜 ( backdrop-filter ) 混合模式 ( mix-blend-mode )

文字与段落

设定字型 ( font-family ) 使用外部字型 文字尺寸 文字样式 ( 常用 ) 文字样式 ( 其他实用 ) 文字样式 ( 特殊用途 ) 文字换行 文字空白与 Tab 大小 文字行高与缩排 文字水平与垂直对齐 文字书写方向 文字自动分栏 使用 Color Font ( 彩色字型 ) 使用 Icon Font ( 图示文字 ) 制作自己的 Icon Font 显示生成内容与引号

元素容器

容器显示类型 ( display ) 元素 display 对照表 盒子模型 ( Box Model ) 宽高尺寸 ( width、height ) 显示与比例 ( box-sizing、aspect-ratio ) 内边距 ( padding ) 外边界 ( margin ) 边框 ( border ) 边框圆角 ( border-radius ) 图像边框 ( border-image ) 轮廓 ( outline ) 内容溢出与裁切 ( overflow ) 内容范围 ( contain ) 可见性与透明度 缩放与调整 ( zoom、resize )

背景与阴影

背景 ( 背景色、背景裁切 ) 背景图 ( 定位、尺寸 ) 背景图 ( 固定、重复 ) 背景图 ( 多重背景、混合 ) 背景缩写 ( background ) 容器阴影 ( box-shadow )

清单与表格

清单样式 清单计数器 表格基本样式 表格边框重叠与间距 表格内容宽度与对齐

基本排版与定位

元素排版方式 浮动 ( float ) 浮动形状 ( shape-* ) 定位 ( position ) 逻辑属性 ( logical properties ) 重置 CSS ( Reset CSS ) 水平置中技巧 垂直置中技巧

Flex 弹性排版

Flexbox 弹性盒子 Flex 对齐方式 Flex 弹性伸缩

Grid 网格排版

Grid 网格容器与格线 Grid 网格空间与命名 Grid 网格流向与间距 Grid 排列网格项目 Grid 项目对齐与顺序

转场与动画

转场 ( transition ) 转场触发事件 动画 ( animation ) 自订动画路径 ( offset ) 动画触发事件 多重动画的权重与顺序 动画进度控制 ( timeline )

变形、裁切与遮罩

裁切路径 ( clip-path ) 图像遮罩 ( mask ) 对象填满方式与定位 转换函数 ( transform ) 平移、旋转与缩放 3D 转换与透视

视窗与用户行为

卷轴样式 ( scrollbar ) 拉霸、滑杆样式 ( slider ) 鼠标光标图示 ( cursor ) 鼠标事件 ( pointer-events ) 用户选取 ( user-select ) 卷动行为 ( scroll、overscroll ) 打印换页 ( break-* )

CSS 预处理器

认识 CSS 预处理器 Less ( 安装、开始使用 ) Less ( 巢状结构、选择器 ) Less ( 变数、import ) Less ( Extend、Mixin ) Less ( 逻辑、循环、函数 )

范例效果

CSS 多重绕圈 3D 动画 CSS 圆饼图 CSS 跑马灯 Google 加载动画 电子时钟数字 渐层色的转场与动画 渐层色制作星空背景 渐层色边框 渐层色制作图案背景 不规则形状动画 弹跳的正方形动画 3D 正多面体 超链接底线动画效果 恶心黏黏球效果 CSS 视差滚动效果 卷轴控制放射形选单 卷轴改变文字背景色 CSS 页面卷动进度条 CSS 水波效果 圆点加载动画 ( 阴影动画 ) 字母翻牌效果 探照灯动画 立体双色跑马灯 楼梯文字动态效果 渐层色文字、双色文字 流动色彩文字 空心文字、文字水波背景 左右倾斜的背景效果 Icon 图示形状变换 故障文字效果 按钮的多种 hover 效果 点击展开或收折的选单 点击爱心图案放射效果 纯 CSS 数字加载进度条 纯 CSS 码表 ( 可计时 )

表格边框重叠与间距

在网页里使用表格时,一定会设定“边框”,除了基本边框样式属性,表格元素也有自己特有的边框样式属性,这篇教学会介绍 border-collapse 控制边框的重叠和分离,以及 border-spacing 设定边框间距。

快速导览:

CSS 教学 - CSS 表格边框重叠、边框间距

教学影片

搭配教学影片一起阅读,效果会更好!欢迎大家订阅 STEAM 教育学习网的 Youtube 频道。

前往:https://www.youtube.com/@steam.oxxostudio

border-collapse 边框重叠

border-collapse 是专属显示类型为 table 或 inline-table 的样式属性,且必须设定在 table 元素才有作用,具有继承特性,这个样式属性可以控制表格里每个储存格边框的“重叠”或“分离”,属性值说明如下:

属性值 说明
separate 边框分离 ( table 元素默认值 )。
collapse 边框重叠。

下方范例会呈现不同 border-collapse 属性值的表格 ( 有额外设定表格边框样式 ),从中可以注意到,table 本身也可以设定边框,如果处于边框重叠样式状态,table 的边框也会与 td 重叠而合并成单一边框,且会忽略 padding 的设定。

线上展示:https://codepen.io/oxxo/pen/wvLOrGJ

<!-- HTML 程式碼 -->
<table class="a">
  <tr><td>apple</td><td>oxxo</td></tr>
  <tr><td>banana</td><td>papaya</td></tr>
</table>
<table class="b">
  <tr><td>apple</td><td>oxxo</td></tr>
  <tr><td>banana</td><td>papaya</td></tr>
</table>

<!-- CSS 程式碼 -->
<style>
  table {
    border: 1px solid #000;
    margin: 10px;
    padding: 10px;
  }
  td {
    border: 1px solid #000;
    padding: 10px;
  }
  .a {border-collapse: collapse;}
  .b {border-collapse: separate;}
</style>

CSS 教学 - CSS 表格边框重叠、边框间距 - border-collapse 边框重叠

边框重叠的优先级

有别于表格里各个元素有“阶层”之分,边框重叠时也有顺序之分,下方列出重叠时采用边框样式的权重,权重从上到下,越上方权重越高,就会优先显示。

  • 边框样式设定为 hidden,所有重叠的边框都会被隐藏。
  • 宽度大的边框优先显示。
  • 边框样式权重顺序:double > solid > dashed > dotted > ridge > outset > groove > inset > none。
  • 如果上述都相同,边框颜色会按照表格各个元素的阶层排列,参考“表格元素排列阶层”。

下方范例使用四个 div,分别代表边框重叠时的四种权重表现。

线上展示:https://codepen.io/oxxo/pen/poXYWya

<!-- HTML 程式碼 -->
<table class="a">
  <tr><td>apple</td><td>oxxo</td></tr>
  <tr><td>banana</td><td>papaya</td></tr>
</table>
<table class="b">
  <tr><td>apple</td><td>oxxo</td></tr>
  <tr><td>banana</td><td>papaya</td></tr>
</table>
<table class="c">
  <tr><td>apple</td><td>oxxo</td></tr>
  <tr><td>banana</td><td>papaya</td></tr>
</table>
<table class="d">
  <tr><td>apple</td><td>oxxo</td></tr>
  <tr><td>banana</td><td>papaya</td></tr>
</table>

<!-- CSS 程式碼 -->
<style>
  table {
    margin: 10px;
    padding: 10px;
    border-collapse: collapse;
  }
  td {
    border: 3px dashed red;
    padding: 10px;
  }
  .a {border: hidden;}            /* 重疊部分隱藏 */
  .b {border: 5px dotted blue;}   /* 重疊部分使用 5px 粗的這組邊框樣式 */
  .c {border: 3px solid green;}   /* 重疊部分使用 solid 的這組邊框樣式 */
  .d {border: 3px dashed green;}  /* 重疊部分使用 td 的邊框樣式,因為 td 權重比 table 高 */
 </style>

CSS 教学 - CSS 表格边框重叠、边框间距 - 边框重叠的四种权重表现

如果在重叠边框的状态下,设定不同 td 的边框,也可以因为权重所产生的重叠效果,例如正中间的储存格就不会有边框,因为设定 hidden 的权重最大。

线上展示:https://codepen.io/oxxo/pen/abgMLNX

<!-- HTML 程式碼 -->
<table>
  <tr>
    <td class="a">A</td>
    <td class="b">B</td>
    <td class="c">C</td>
  </tr>
  <tr>
    <td class="i">I</td>
    <td class="j">J</td>
    <td class="k">K</td>
  </tr>
  <tr>
    <td class="x">X</td>
    <td class="y">Y</td>
    <td class="z">Z</td>
  </tr>
</table>

<!-- CSS 程式碼 -->
<style>
  table {
    margin: 10px;
    padding: 10px;
    border-collapse: collapse;
  }
  td {padding: 10px 20px;}
  .a {border: 10px dashed red;}
  .b {border: 5px solid orange;}
  .c {border: 5px dotted green;}
  .i {border: 10px solid cyan;}
  .j {border: hidden;}
  .k {border: 10px dotted pink;}
  .x {border: 5px solid black;}
  .y {border: 10px dashed gray;}
  .z {border: 10px double blue;}
 </style>

CSS 教学 - CSS 表格边框重叠、边框间距 - td 边框重叠的优先级效果

border-spacing 边框间距

border-spacing 是专属显示类型为 table 或 inline-table 的样式属性,且必须设定在 table 元素才有作用,具有继承特性,这个样式属性可以控制表格里“储存格边框与边框”之间的“间距”,间距会从边框外缘延伸出去,border-spacing 支援所有长度单位,通常使用绝对长度 px 作为单位。

注意,表格储存格元素并不支援 margin 外边界的样式属性,需要使用 border-spacing 设定间隔。

在没有设定 border-spacing 且 border-collapse:separate 的状态下,表格里每个储存格默认采用 2px 的间距,设定后就会按照设定值进行间隔,下方范例将表格设定为 border-spacing:10px。

线上展示:https://codepen.io/oxxo/pen/VwJRMjw

<!-- HTML 程式碼 -->
<table>
  <tr><td>apple</td><td>oxxo</td></tr>
  <tr><td>banana</td><td>orange</td></tr>
</table>

<!-- CSS 程式碼 -->
<style>
  table {
    border: 20px solid #000;
    padding: 20px;
    border-spacing: 20px;
  }
  td {
    border: 20px solid #000;
    width: 120px;
    height: 100px;
    background: orange;
  }
 </style>

CSS 教学 - CSS 表格边框重叠、边框间距 - border-spacing 边框间距

border-spacing 支援“两个数值”的属性值,使用一个数值表示上下左右都是同样间距,使用两个数值表示“左右、上下”间距,下方范例将刚刚的程序码改成两个数值,就能清楚看到上下的间距变成 5px,左右仍然维持 20px。

table {
  border: 20px solid #000;
  padding: 20px;
  border-spacing: 20px 5px;  /* 左右 20px,上下 5px */
}

td {
  border: 20px solid #000;
  width: 120px;
  height: 100px;
  background: orange;
}

CSS 教学 - CSS 表格边框重叠、边框间距 - border-spacing 设定两个数值

小结

表格的边框虽然与一般网页元素的边框大同小异,但又具有自己专属的设定样式,特别是重叠与分开的特性,有时会让初学者不容易掌握,透过这边教学的介绍,应该就能对表格边框有更深一层的认识。

意见反馈

微信二维码 微信扫码关注 抖音二维码 抖音扫码关注