搜索

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 里的一些针对“特殊字型”或部分浏览器特有的样式,例如 font-stretch、font-kerning、font-smooth、font-variant、font-synthesis、font-feature-settings 等,这些样式或许支援度不高,但如果字型支援或未来浏览器支援,将可以实现文字宽度微调、平滑化、变体、合成等效果。

CSS 教学 - 特殊文字样式

教学影片

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

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

特殊文字样式

下方列出特殊的文字样式属性,这些样式都具有继承特性 ( 部分浏览器并不支援且部分样式需要搭配 OpenType 字型 ):

样式属性 属性值 说明
font-stretch ultra-condensed、extra-condensed
condensed、semi-condensed
normal
semi-expanded、expanded
extra-expanded、ultra-expanded
文字宽度。
font-kerning auto、normal、none 文字间距微调。
font-smooth basic ( auto、never、always )
-webkit- (auto、none、subpixel-antialiased、antialiased)
-moz- ( auto、grayscale )
文字平滑化。
font-variant 目前支援 ( normal、none、small-caps )
font-variant-caps
font-variant-numeric
font-variant-alternates
font-variant-ligatures
font-variant-east-asian
文字替代与变体 ( OpenType 为主 )。
font-feature-settings normal、feature-tag-value 字型进阶排版设定 ( OpenType )。
font-synthesis none、weight、style、small-caps、position 文字合成。

font-stretch 文字宽度

font-stretch 样式属性可以设定“文字的宽度”,不同字型的宽度也不相同,下方列出相关属性值:

属性数值 正常宽度的百分比
ultra-condensed 50%
extra-condensed 62.5%
condensed 75%
semi-condensed 87.5%
normal 100%
semi-expanded 112.5%
expanded 125%
extra-expanded 150%
ultra-expanded 200%

CSS 教学 - 设定文字样式 - font-weight 文字粗细

几乎所有的字型都支援 normal 属性值,其他属性则看字型是否支援 ( 参考“@font-face 定义字型”),举例来说,Google Fonts 的 Anek Malayalam 字型就支援多种宽度,下方的范例使用不同的 font-stretch 属性数值改变文字宽度。

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

<!-- HTML 程式碼 -->
<h3 class="a">Hello OXXO!! (font-stretch: normal;)</h3>
<h3 class="b">Hello OXXO!! (font-stretch: ultra-condensed;)</h3>
<h3 class="c">Hello OXXO!! (font-stretch: condensed;)</h3>

<!-- CSS 程式碼 -->
<style>
  @import url('https://fonts.googleapis.com/css2?family=Anek+Malayalam:wdth,[email protected],100..800&display=swap');
  h3 {
    margin: 5px;
    font-family: "Anek Malayalam", sans-serif;
  }
  .a {font-stretch: normal;}
  .b {font-stretch: ultra-condensed;}
  .c {font-stretch: ultra-expanded;}
</style>

CSS 教学 - 设定文字样式 - font-stretch 文字宽度

font-kerning 文字间距微调

font-kerning 样式属性可以设定“文字间距微调”,下方列出相关属性值:

属性数值 说明
auto 默认值,根据操作系统决定是否微调文字间距。
normal 微调文字间距。
none 不微调文字间距。

下方的范例使用 Verdana 字型,并用不同的 font-kerning 属性数值调整文字间距,对于不支援 font-kerning 的字型则没有效果,就算有支援的字型,整体差异也不会太大 ( 下图红线可以看到差异 )。

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

<!-- HTML 程式碼 -->
<h3 class="a">WoW Let's "OXXO"!! (font-kerning:auto;)</h3>
<h3 class="b">WoW Let's "OXXO"!! (font-kerning:normal;)</h3>
<h3 class="c">WoW Let's "OXXO"!! (font-kerning:none;)</h3>

<!-- CSS 程式碼 -->
<style>
  h3 {
    margin: 5px;
    font-family: Verdana;
    font-weight: normal;
  }
  .a {font-kerning: auto;}
  .b {font-kerning: normal;}
  .c {font-kerning: none;}
</style>

CSS 教学 - 设定文字样式 - font-kerning 文字间距

font-smooth 文字平滑化

font-smooth 样式属性可以设定“文字平滑化”,让浏览器渲染文字时,去除文字边缘的锯齿化,这个样式在高分辨率的 Retina 显示器中效果特别好 ( 但文字粗细会变得比较细,文字尺寸越小效果越明显 ),不过因为目前这个样式属性还没有列为标准样式,在不同的浏览器可能需要使用不同的属性名称,例如在 Chrome 等 webkit 浏览器,需要使用 -webkit-font-smoothing,Firefox 则使用 -moz-osx-font-smoothing,下方列出相关属性值:

font-smooth -webkit- -moz- 正常宽度的百分比
auto auto auto 默认值,根据操作系统决定是否平滑化。
never none - 不平滑化。
always subpixel-antialiased grayscale 平滑化。
- antialiased - 针对 Retina 显示器平滑化。

下方的范例使用不同的 font-smooth 属性数值让文字平滑化。

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

<!-- HTML 程式碼 -->
<h3 class="a">Hello OXXO!! (預設值)</h3>
<h3 class="b">Hello OXXO!! (平滑化)</h3>
<h3 class="c">Hello OXXO!! (沒有平滑化)</h3>

<!-- CSS 程式碼 -->
<style>
  h3 {
    margin: 5px;
    font-size: 30px;
  }
  .b {
    font-smooth: always;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
  }
  .c {
    font-smooth: never;
    -webkit-font-smoothing: none;
  }
</style>

CSS 教学 - 设定文字样式 - font-smooth 文字平滑化

font-variant 文字替代与变体

font-variant 样式属性可以设定“文字变体”,是集合下列几种样式属性的简写,指定的数值时,等同指定样式属性指定了数值 ( 大多数仅支援部分 OpenType 字型,且各个浏览器支援度并不一致 ),下方列出相关属性值:

下方的范例使用不同的 font-variant 属性数值产生的文字效果 ( 支援度根据不同浏览器与字型而定 )。

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

<!-- HTML 程式碼 -->
<h3 class="a">Hello Oxxo!! 3/10 (font-variant: small-caps;)</h3>
<h3 class="b">Hello Oxxo!! 3/10 (font-variant: lining-nums slashed-zero;)</h3>

<!-- CSS 程式碼 -->
<style>
  h3 {
    margin: 5px;
    font-weight: normal;
    font-family: "Verdana";
  }
  .a {
    font-variant: small-caps;
  }
  .b {
    font-variant: lining-nums slashed-zero;
  }
</style>

CSS 教学 - 设定文字样式 - font-variant 文字替代与变体

font-feature-settings 字型进阶排版设定

font-feature-settings 样式属性主要针对 OpenType 字型进行“进阶排版设定”,可以针对特定功能的字型,设定是否打开字型内建的特性,通常会将其作为 @font-face 的描述子使用,下方列出相关属性值:

属性数值 说明
normal 默认值。
feature-tag-value OpenType 字型标签,参考“Feature Tags”。

下方的范例呈现相关用法 ( 因手边没有相关字型可以测试,仅使用程序码说明 )。

@font-face {
  font-family: 字型名稱;
  src: url("字型檔案.otf");
  font-feature-settings: "swsh" 1;
}
.swshFont {
  font-family: 字型名稱;
}

font-synthesis 文字合成

font-synthesis 样式属性主要针对部分字型进行“文字合成”,可以针对缺少粗体或斜体的字型,设定遇到该样式时要采用的字型,下方列出相关属性值:

属性数值 说明
none 不合成,默认值。
weight 合成缺少的粗体字。
style 合成缺少的斜体字。
small-caps 合成缺少的小型大写字。
position 合成缺少的下标和上标字。

下方的范例呈现相关用法 ( 不过因为常用的字型大多都支援粗体斜体,因此仅使用程序码说明 )。

.a {
  font-synthesis: style weight;
}
.b {
  font-synthesis: style small-caps position;
}

小结

这篇教学所介绍的文字样式,大多是比较冷门,或针对特定字型而设定的样式,整体来说用途不大,且浏览器支援度也不高,如果有时间的话再尝试看看即可。

意见反馈

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