搜索

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 码表 ( 可计时 )

背景 ( 背景色、背景裁切 )

运用 CSS 的 background-color 样式,可以运用任何支援的色彩单位,将元素的背景指定成特定颜色,这篇教学除了介绍 background-color 的用法,还会介绍 background-clip 裁切背景样式,明确设定背景颜色延伸的范围。

快速导览:

CSS 教学 - 背景颜色 background-color

教学影片

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

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

background-color 撰写语法

background-color 表示元素的“背景色”,可以运用任何支援的色彩单位,将元素的背景指定成特定颜色,background-color 有下列特性:

  • 默认状态下,背景色会延伸填满 padding 和 border 空间 ( 容器边框外缘 )。
  • 只支援“单色”,不支援渐层色或多种颜色 ( 渐层色使用 background-image )。
  • 默认值为“transparent”透明色。
  • 在显示阶层中,background-color 会被 background-image 所覆盖。
  • 不会继承。

下方的范例会让不同的元素呈现不同的背景色。

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

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

<!-- CSS 程式碼 -->
<style>
  div {
    margin: 5px;
    width: 100px;
    height: 100px;
    background-color: pink;
  }
  span {
    margin: 5px;
    background-color: orange;
  }
  table {
    margin: 5px;
    padding: 10px;
    background-color: red;  /* 背景色會填滿 padding 空間 */
  }
  table tr td {
    background-color: green;
  }
  table tr:first-child td {
    background-color: cyan;
  }
</style>

CSS 教学 - 背景颜色 background-color - background-color 撰写语法

如果利用 CSS 的 background 背景样式缩写语法,直接在后方填入色彩单位,效果和 background-color 完全相同。

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

<!-- HTML 程式碼 -->
<div class="a">background-color: orange;</div>
<div class="b">background: orange;</div>

<!-- CSS 程式碼 -->
<style>
  div {
    width: 240px;
    margin: 10px;
    padding: 20px;
  }
  .a {background-color: orange;}
  .b {background: orange;}
</style>

CSS 教学 - 背景颜色 background-color - background-color 使用背景样式缩写语法

background-color 色彩单位

background-color 可以使用 CSS 支援的标准色彩单位。

延伸阅读:颜色单位、CSS 函数 ( 色彩模型 )

颜色单位 性质 范例
颜色名称 使用 CSS 支援色颜色名称 red、blue
transparent ( 关键字 ) 透明。 transparent
十六进制色码 红绿蓝十六进制色码。 #ffc900、#ffc90055
十六进制色码 ( 简写 ) 简写红绿蓝十六进制色码。 f00、f005
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)

下方范例使会使用五个 div,分别使用不同色彩单位来呈现背景色。

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

<!-- HTML 程式碼 -->
<div class="a">background-color: orange;</div>
<div class="b">background: #00f6;</div>
<div class="c">background: rgb(0,200,100);</div>
<div class="d">background: hsl(10, 90%, 50%, 0.7);</div>
<div class="e">background: lch(50% 50 180 / 0.3);</div>

<!-- CSS 程式碼 -->
<style>
  div {
    width: 240px;
    margin: 10px;
    padding: 20px;
    font-size: 14px;
  }
  .a {background-color: orange;}
  .b {background: #00f6;}
  .c {background: rgb(0,200,100);}
  .d {background: hsl(10, 90%, 50%, 0.7);}
  .e {background: lch(50% 50 180 / 0.3);}
</style>

CSS 教学 - 背景颜色 background-color - background-color 色彩单位

不可置换行内容器的背景色

虽然不可置换行内容器无法调整宽高,但实际的“内容区域”仍然存在 padding 和 border 的空间,因此套用背景颜色时,默认状态下背景颜色仍然会填满这些空间,此外,由于透过“行高”所产生的空间不属于内容区域,就不会填满背景色。

参考:文字行高、文字缩排

下方的范例在两个 div 里放入行内容器元素,如果行内元素具有 padding 和 border,则背景色默认会填满这些区域,如果使用行高产生的空间则不会填满背景色。

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

<!-- HTML 程式碼 -->
<div class="a">
  <span>STEAM 教育學習網透過一系列<strong>免費且高品質</strong>的教學與範例,讓所有人都能輕鬆跨入 STEAM 的學習領域。</span>
</div>
<div class="b">
  <span>STEAM 教育學習網透過一系列<strong>免費且高品質</strong>的教學與範例,讓所有人都能輕鬆跨入 STEAM 的學習領域。</span>
</div>

<!-- CSS 程式碼 -->
<style>
  div {
    width: 240px;
    margin: 30px;
    padding: 10px;
    font-size: 14px;
    border: 1px solid #000;
  }
  strong {background: orange;}
  .a strong {
    padding:20px; 
    border: 10px solid #f005;  /* 利用 padding 和 border 延伸範圍 */
  }
  .b {line-height: 50px;}      /* 利用行高產生空間 */
</style>

CSS 教学 - 背景颜色 background-color - background-color 不可置换行内容器的背景色

可置换行内容器的背景色

网页中的图片元素 img 或 svg 都属于“可置换”行内容器 ( 显示类型大多都是 inline-block ),这些元素在默认状态下 padding 和 border 会向外扩展范围,背景色也就会填满这些范围,又因为 border 在 padding 的外面,和背景色互相搭配下,甚至能做出“双色边框”的有趣效果,如果图片是透明背景,透明区域也会显示背景色。

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

<!-- HTML 程式碼 -->
<img class="a" src="https://steam.oxxostudio.tw/download/css/function-filter-demo.jpg">
<img class="b" src="https://steam.oxxostudio.tw/download/css/function-filter-demo.jpg">
<img class="c" src="https://steam.oxxostudio.tw/download/css/border-svg-2.svg">
    
<!-- CSS 程式碼 -->
<style>
  img {width: 120px;}
  .a {
    border: 10px solid #000;
    padding: 10px;
    background: red;
  }
  .b {
    border: 20px dashed #00f5;
    padding: 5px;
    background: #ff0;
  }
  .c {
    border: 5px double #000;
    padding: 5px;
    background: orange;
  }
</style>

CSS 教学 - 背景颜色 background-color - background-color 可置换行内容器的背景色

background-clip 裁切背景

在默认状态下,CSS 会让背景色或背景图填满整个容器空间,但透过 background-clip 可以设定“背景”的“填满方式”,这个样式具有下列属性值:

属性值 说明
border-box 默认值,背景延伸至 border 和 padding 空间。
padding-box 背景延伸至 padding 空间。
content-box 背景只限于内容空间。
text 使用背景填满文字 ( 文字本身颜色必须有透明度 )。

下方范例会展示四种 background-clip 的效果,需要注意如果属性值为 text,表示会填满“文字”,需要使用有透明度的文字,或将文字设为透明色 transparent 才能看见背景。

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

<!-- HTML 程式碼 -->
<br>
<div class="a">
  <span>STEAM 教育學習網透過<strong>免費且高品質</strong>的教學與範例。<br>background-clip: border-box;</span>
</div>
<div class="b">
  <span>STEAM 教育學習網透過<strong>免費且高品質</strong>的教學與範例。<br>background-clip: padding-box;</span>
</div>
<div class="c">
  <span>STEAM 教育學習網透過<strong>免費且高品質</strong>的教學與範例。<br>background-clip: content-box;</span>
</div>
<div class="d">
  <span>STEAM 教育學習網透過<strong>免費且高品質</strong>的教學與範例。<br>background-clip: text;</span>
</div>

<!-- CSS 程式碼 -->
<style>
  div {
    width: 300px;
    margin: 10px;
    padding: 10px;
    font-size: 14px;
    border: 1px solid #000;
  }
  strong {
    background: orange;
    padding:20px; 
    border: 10px solid #00f5;
  }
  .a strong {background-clip: border-box;}
  .b strong {background-clip: padding-box;}
  .c strong {background-clip: content-box;}
  .d strong {
    background-clip: text;
    color: transparent;  /* 文字設定為透明 */
  }
</style>

CSS 教学 - 背景颜色 background-color - background-clip 裁切背景

使用 background-clip 搭配其他背景样式时需要注意“顺序”,由于 background 样式属性是“缩写格式”,内容也包含了 background-clip,background-clip 要放在 background 后方,但如果搭配 background-image 则摆在前方后方都可以,下方范例会呈现顺序不同的影响。

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

<!-- HTML 程式碼 -->
background-clip 在 background 前方
<h1 class="a">OXXO.STUDIO</h1>
background-clip 在 background 後方
<h1 class="b">OXXO.STUDIO</h1>
background-clip 在 background-image 前方
<h1 class="c">OXXO.STUDIO</h1>
background-clip 在 background-image 後方
<h1 class="d">OXXO.STUDIO</h1>

<!-- CSS 程式碼 -->
<style>
  h1 {
    margin: 10px 0 30px;
    padding: 0;
    width: max-content;
    font-family: impact, arial-black;  /* 設定成比較粗的字體 */
    font-size: 80px;
    line-height: 1;
    color: #fff3;  /* 文字顏色設定為透明 */
  }
  .a {
    background-clip: text;
    background: linear-gradient(#f00 50%, #000 50%);
  }
  .b {
    background: linear-gradient(#f00 50%, #000 50%);
    background-clip: text;
  }
  .c {
    background-clip: text;
    background-image: linear-gradient(#f00 50%, #000 50%);
  }
  .d {
    background-image: linear-gradient(#f00 50%, #000 50%);
    background-clip: text;
  }
</style>

CSS 教学 - 背景颜色 background-color - background-clip 裁切背景的顺序

小结

背景色是网页设计里使用频率非常高的样式,不论是分隔区块、按钮效果、互动显示都会需要设定背景色,赶快运用这篇教学所介绍的内容,替网页元素增添多一些背景色吧!

意见反馈

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