搜索

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 命名原则

因为 CSS 太容易上手,用户在 ID 和 Class ( 类别 ) 的命名上,时常发生名称不一致或随便取名的状况,这种没有系统性的命名,往往造成后续不容易理解或嵌套顺序错乱,这篇教学会介绍一些常用又好理解的命名原则,透过这些命名原则,就能让 CSS 写得更加整齐漂亮又好维护。

快速导览:

CSS 教学 - ID 与 Class 命名原则

教学影片

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

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

区分大小写

由于 HTML 的 ID、Class 和属性名称只支援英文,因此就会产生区分英文字母大小的状况,下表列出 CSS 选择器区分大小写的规范:

选择器 区分大小写 范例
id 区分 #oxxo 和 #OXXO 不同。
class 类别 区分 .oxxo 和 .OXXO 不同。
attribute 属性 ( 名称 ) 不区分 p[oxxo] 和 p[OXXO] 相同。
attribute 属性 ( 数值 ) 区分 p[name="oxxo"] 和 p[name="OXXO"] 不同。
元素标签 不区分 div 和 DIV 相同。

以下方的 CSS 为例,因为属性数值区分大小写,最后呈现的文字颜色就会是红色。

/* <div name="oxxo">Hello World!!</div> 會呈現紅色 */
div[name="oxxo"] {color: red;}
div[name="OXXO"] {color: blue;}

多个单字的名称组合方式

ID、Class 和属性对于“多个单字”的命名原则并不相同,下表列出一些差异:

属性 组合方式 范例
id 小驼峰式 myNameIsOxxo
class 连接线 my-name-is-oxxo
attribute 连接线 data-my-name-is-oxxo

由于网页使用的 JavaScript 语言可以直接读取 ID 作为变数使用,所以 ID 的命名通常会按照“小驼峰式命名法 ( lower camel case )”命名,这种命名法的第一个字母为小写,后续每个单字的字首大写。

<h1 id="myNameIsOxxo">OXXO</h1>
<h2 id="helloWorldEveryone">Hello World!!</h2>

Class 的命名通常使用“-”连接多个单字,全部单字都是小写,如果使用 JavaScript 读取后会再利用小驼峰式命名法建立对应的变数。

<h1 class="my-name-is-oxxo">OXXO</h1>
<h2 class="hello-world-everyone">Hello World!!</h2>

如果是 Attribute 属性,通常会使用“data-”或“attr-”开头,后续属性使用“-”连接多个单字,或按照 Class 的命名原则进行命名 ( 属性的数值因为是字串,就并没有撰写格式的限制 ),下方只是提供一个参考范例,通常属性都会是一个或两个单字,不会写得这么复杂。

<h1 attr-my-name-is-oxxo="oxxo">OXXO</h1>
<h2 hello-world-everyone="hello">Hello World!!</h2>

语意清楚

ID、Class 和属性在命名时,尽可能让名称的“语意清楚”,也就是看到名称就可以猜出这个 ID 或 Class 的意义,下方列出好与不好的命名,其中不好的命名,通常是看不出来这个名称是在做什么,或容易被其他的名称互相嵌套。

  • 如果是有意义或特有的名称,且已经确认不会被其他 CSS 选择器影响,则可以按照个人喜好使用。
  • 避免使用单一字母或毫无意义的字母数字。
好 不好 很不好
dialog-title title t
purchase-btn btn b
message-box box b
header-area area a

以下方的 HTML 使用了“很不好”的 Class 命名方式,不只名称使用毫无意义的单一字母,不同的元素里又有各自的 t 类别,这种做法在 CSS 选择器的操作上,会变得复杂且容易出错。

<h1 class="t">OXXO.STUDIO</h1>
<div>
  <h2 class="t">STEAM 教育學習網<h2>
</div>

简单扼要 ( 短命名 )

在“语意清楚”的命名之余,也尽量采用“短命名”的方式,也就是使用常见的“英文缩写”进行命名,这种做法不仅可以减少 CSS 程序码的大小,在阅读上也更简单清楚,下方列出一些常见的短命名:

长命名 短命名
apple-information apple-info
apple-introduction apple-intro
apple-button apple-btn
apple-picture apple-pic

使用字首代码

如果开发的网页专案较为庞大,通常会建立“字首代码”区分“不同的”CSS,字首代码常代表“某些特定功能或行为”的样式,以知名的 Bootstrap 为例,如果是网格布局的 class,往往会看见 col 为字首的命名。

<div class="container">
  <div class="row">
    <div class="col-md-4">oxxo1</div>
    <div class="col-md-4">oxxo2</div>
    <div class="col-md-4">oxxo3</div>
  </div>
</div>

字首代码除了区分功能,往往也作为“区分不同的软件包”使用,例如 Pure CSS 这套 CSS 框架,就会使用 pure- 开头表现自己的 CSS 样式。

<div class="pure-g">
    <div class="pure-u-1-3"><p>oxxo1</p></div>
    <div class="pure-u-1-3"><p>oxxo2</p></div>
    <div class="pure-u-1-3"><p>oxxo3</p></div>
</div>

合法的命名字元

标准的合法命名字元规则如下:

  • 只能使用英文字母大小写、数字、连接线“-”和底线“_”。
  • 只有数字不能当作字首,英文字母、连接线和底线都能当作字首代码。
  • 支援两个连接线“--”或两个底线“__”的写法。
  • 支援中文字、中文标点符号、其他 ASCII 字元或 emoji,但都不建议使用。

下方的命名范例都是合法且常用的:

常用的命名字元 范例
英文大小写 oxxo、OXXO
英文 + 数字 oxxo123、Oxxo123
连接线 oxxo-123、-oxxo-
底线 oxxo_123、_oxxo_

虽然名称可以使用中文字、中文标点符号或 emoji,但为了避免在不同语系浏览器出现编码问题,仍然不建议使用,至于其他没有列出的 ASCII 字元 ( 例如:,、.、%...等 ),因为常与功能冲突,通常都是不合法的,虽然可以使用跳脱字元“\”的方式处理,但在阅读和管理上都不容易理解且容易出错,因此都不建议使用。

小结

俗话说“好的命名原则带你上天堂”( 我说的 ),好的命名不只容易理解,对于复杂的 CSS 样式表更为重要,如果能够一目了然的阅读和管理,开发上也就更省时间也不容易出错啰。

意见反馈

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