搜索

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

Flex 对齐方式

在“认识弹性盒子 Flexbox”教学中已经了解弹性项目的排列方式,这篇教学会延续该篇教学,继续介绍 Flex 对齐相关的样式属性,分别是 justify-content、align-items、align-self 和 align-content,透过对齐的样式属性,准确的掌握弹性项目的位置。

快速导览:

CSS 教学 - Flex 的对齐方式

justify-content 水平对齐

justify-content 样式属性会设定“弹性项目的水平对齐方式”,这个样式属性写在弹性容器上,撰写样式后,内部的弹性项目就会根据主轴 ( main axis )、主轴起始点 ( main start ) 和结束点 ( main end ) 进行对齐,可以参考“flex-direction 弹性元素方向”了解弹性容器的轴向。

CSS 教学 - 认识弹性盒子 Flexbox - Flex 轴向

justify-content 样式属性没有继承特性,具有下列几种属于 Flex 的属性值:

属性值 说明
flex-start 水平对齐主轴的起始点 ( 默认值 )。
flex-end 水平对齐主轴的结束点。
center 水平对齐主轴中心点
space-between 水平分散对齐,第一个元素对齐主轴起始点,最后一个元素对齐主轴结束点,按照“元素数量 - 1”分配间距。
space-around 水平分散对齐,按照元素的数量分配间距,元素左右间距相同。
space-evenly 水平分散对齐,按照“元素数量 + 1”分配间距。

下方范例会展示六种属性值对于弹性项目的水平对齐方式。

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

<!-- HTML 程式碼-->
<div class="f j1"><div>o</div><div>ox</div><div>oxx</div><div>oxxo</div></div>
<div class="f j2"><div>o</div><div>ox</div><div>oxx</div><div>oxxo</div></div>
<div class="f j3"><div>o</div><div>ox</div><div>oxx</div><div>oxxo</div></div>
<div class="f j4"><div>o</div><div>ox</div><div>oxx</div><div>oxxo</div></div>
<div class="f j5"><div>o</div><div>ox</div><div>oxx</div><div>oxxo</div></div>
<div class="f j6"><div>o</div><div>ox</div><div>oxx</div><div>oxxo</div></div>

<!-- CSS 程式碼 -->
<style>
  .f {
    width: 300px;
    height: 50px;
    border: 1px solid #000;
    display: flex;
    font-size: 24px;
    margin: 20px;
  }

  .j1 {justify-content: flex-start;}
  .j2 {justify-content: flex-end;}
  .j3 {justify-content: center;}
  .j4 {justify-content: space-between;}
  .j5 {justify-content: space-around;}
  .j6 {justify-content: space-evenly;}

  div div {
    padding: 5px 10px;
  }
  div div:nth-child(1) {background: #f33;}
  div div:nth-child(2) {background: #fb0;}
  div div:nth-child(3) {background: #4cf;}
  div div:nth-child(4) {background: #0b0;}
</style>

CSS 教学 - Flex 的对齐方式 - justify-content 弹性项目水平对齐

如果设定 flex-wrap:wrap 弹性项目换行,换行后的弹性项目也会根据水平对齐的设定进行对齐,下图是将 HTML 程序码增加元素造成换行后的水平对齐样貌。

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

<!-- HTML 程式碼-->
<div class="f j1"><div>o</div><div>ox</div><div>oxx</div><div>oxxo</div><div>apple</div><div>banana</div><div>orange</div><div>papaya</div></div>
<div class="f j2"><div>o</div><div>ox</div><div>oxx</div><div>oxxo</div><div>apple</div><div>banana</div><div>orange</div><div>papaya</div></div>
<div class="f j3"><div>o</div><div>ox</div><div>oxx</div><div>oxxo</div><div>apple</div><div>banana</div><div>orange</div><div>papaya</div></div>
<div class="f j4"><div>o</div><div>ox</div><div>oxx</div><div>oxxo</div><div>apple</div><div>banana</div><div>orange</div><div>papaya</div></div>
<div class="f j5"><div>o</div><div>ox</div><div>oxx</div><div>oxxo</div><div>apple</div><div>banana</div><div>orange</div><div>papaya</div></div>
<div class="f j6"><div>o</div><div>ox</div><div>oxx</div><div>oxxo</div><div>apple</div><div>banana</div><div>orange</div><div>papaya</div></div>

<!-- CSS 程式碼 -->
<style>
  .f {
    width: 300px;
    height: 80px;
    border: 1px solid #000;
    display: flex;
    font-size: 16px;
    margin: 20px;
    flex-wrap: wrap;
  }

  .j1 {justify-content: flex-start;}
  .j2 {justify-content: flex-end;}
  .j3 {justify-content: center;}
  .j4 {justify-content: space-between;}
  .j5 {justify-content: space-around;}
  .j6 {justify-content: space-evenly;}

  div div {
    padding: 5px 10px;
  }
  div div:nth-child(1) {background: #f33;}
  div div:nth-child(2) {background: #fb0;}
  div div:nth-child(3) {background: #4cf;}
  div div:nth-child(4) {background: #0b0;}
  div div:nth-child(5) {background: #f9f;}
  div div:nth-child(6) {background: #f80;}
  div div:nth-child(7) {background: #6f6;}
  div div:nth-child(8) {background: #ccc;}
</style>

CSS 教学 - Flex 的对齐方式 - justify-content 多行弹性项目水平对齐

align-items 单行垂直对齐

align-items 样式属性会设定“单行弹性的项目垂直对齐方式”,这个样式属性写在弹性容器上,撰写样式后,内部的弹性项目就会在排列时根据交叉轴 ( cross axis )、交叉轴起始点 ( cross start ) 和结束点 ( cross end ) 进行对齐,align-items 样式属性没有继承特性,共有下列几种属性值:

属性值 说明
flex-start 每个元素上缘对齐交叉轴的起始点。
flex-end 每个元素下缘对齐交叉轴的结束点。
center 每个元素中线对齐交叉轴中心。
normal 在 Flex 弹性容器中等同 stretch ( 默认值 )。
stretch 未设定高度的元素高度会撑开至弹性容器高度,有设定高度的元素上缘对齐交叉轴的起始点。
baseline、first baseline 对齐每个元素的基线,对齐后最上缘对齐交叉轴的起始点。
last baseline 等同 baseline,对齐后最下缘对齐交叉轴的结束点。

下方范例会展示不同 align-items 属性值的对齐方式,其中所有 div 字体大小都不同,而蓝色和粉红色的元素有特别设定高度,可观察属性值为 baseline 和 stretch 所呈现效果。

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

<!-- HTML 程式碼-->
<div class="f j1"><div>o</div><div>ox</div><div>oxx</div><div>oxxo</div><div>xxo</div></div>
<div class="f j2"><div>o</div><div>ox</div><div>oxx</div><div>oxxo</div><div>xxo</div></div>
<div class="f j3"><div>o</div><div>ox</div><div>oxx</div><div>oxxo</div><div>xxo</div></div>
<div class="f j4"><div>o</div><div>ox</div><div>oxx</div><div>oxxo</div><div>xxo</div></div>
<div class="f j5"><div>o</div><div>ox</div><div>oxx</div><div>oxxo</div><div>xxo</div></div>
<div class="f j6"><div>o</div><div>ox</div><div>oxx</div><div>oxxo</div><div>xxo</div></div>

<!-- CSS 程式碼 -->
<style>
  .f {
    width: 300px;
    height: 100px;
    border: 1px solid #000;
    display: flex;
    font-size: 20px;
    margin: 20px;
  }

  .j1 {align-items: flex-start;}
  .j2 {align-items: flex-end;}
  .j3 {align-items: center;}
  .j4 {align-items: stretch;}
  .j5 {align-items: baseline;}
  .j6 {align-items: last baseline;}

  div div {
    padding: 5px 10px;
  }
  div div:nth-child(1) {background: #f33; font-size: 30px;}
  div div:nth-child(2) {background: #fb0; font-size: 12px;}
  div div:nth-child(3) {background: #4cf; height: 60px;}
  div div:nth-child(4) {background: #0b0; font-size: 40px;}
  div div:nth-child(5) {background: #f9f; height: 30px;}
</style>

CSS 教学 - Flex 的对齐方式 - align-items 单行垂直对齐

属性值 baseline 等同 first baseline,所有元素会在对齐 baseline 之后,最上缘对齐交叉轴的起始点,而 last baseline 刚好相反,会在对齐 baseline 之后,最下缘对齐交叉轴的结束点。

CSS 教学 - Flex 的对齐方式 - align-items:baseline 和 last baseline 差异

align-content 多行垂直对齐

如果设定 flex-wrap:wrap 弹性项目换行,就需要使用 align-content 控制“多行弹性项目的垂直对齐方式”,没有继承特性,内部的弹性项目就会在排列时根据交叉轴 ( cross axis )、交叉轴起始点 ( cross start ) 和结束点 ( cross end ) 进行对齐,通常设定这个样式后,整行元素的高度会自动调整成最高元素的数值 ( 有设定高度的元素除外 ),这个样式属性有下列属性值:

属性值 说明
flex-start 第一行的每个元素上缘对齐交叉轴的起始点,换行的元素最上缘对齐上一行元素的底部。*
flex-end 最后一行的每个元素上缘对齐交叉轴的结束点,换行的元素最下缘对齐后一行元素的顶部。*
center 所有元素所构成的垂直中线,对齐交叉轴的中心点。*
normal 在 Flex 弹性容器中等同 stretch ( 默认值 )。
stretch 未设定高度的元素高度会自动撑开,撑开的高度根据该行元素的高度或字体自动调整。
space-between 垂直分散对齐,第一个元素对齐交叉轴起始点,最后一个元素对齐交叉轴结束点,按照“元素数量 - 1”分配间距。
space-around 垂直分散对齐,按照元素的数量分配间距,元素上下间距相同。
space-evenly 垂直分散对齐,按照“元素数量 + 1”分配间距。

下方范例会展示不同 align-content 属性值的对齐方式,其中所有 div 字体大小都不同,部分 div 还有特别设定高度。

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

<!-- HTML 程式碼-->
<div class="f j1"><div>o</div><div>ox</div><div>oxx</div><div>oxxo</div><div>xxo</div><div>apple</div><div>banana</div><div>watermelon</div></div>
<div class="f j2"><div>o</div><div>ox</div><div>oxx</div><div>oxxo</div><div>xxo</div><div>apple</div><div>banana</div><div>watermelon</div></div>
<div class="f j3"><div>o</div><div>ox</div><div>oxx</div><div>oxxo</div><div>xxo</div><div>apple</div><div>banana</div><div>watermelon</div></div>
<div class="f j4"><div>o</div><div>ox</div><div>oxx</div><div>oxxo</div><div>xxo</div><div>apple</div><div>banana</div><div>watermelon</div></div>
<div class="f j5"><div>o</div><div>ox</div><div>oxx</div><div>oxxo</div><div>xxo</div><div>apple</div><div>banana</div><div>watermelon</div></div>
<div class="f j6"><div>o</div><div>ox</div><div>oxx</div><div>oxxo</div><div>xxo</div><div>apple</div><div>banana</div><div>watermelon</div></div>
<div class="f j7"><div>o</div><div>ox</div><div>oxx</div><div>oxxo</div><div>xxo</div><div>apple</div><div>banana</div><div>watermelon</div></div>

<!-- CSS 程式碼 -->
<style>
  .f {
    width: 220px;
    height: 250px;
    border: 1px solid #000;
    display: flex;
    font-size: 20px;
    margin: 20px 10px;
    flex-wrap: wrap;
  }

  .j1 {align-content: flex-start;}
  .j2 {align-content: flex-end;}
  .j3 {align-content: center;}
  .j4 {align-content: stretch;}
  .j5 {align-content: space-between;}
  .j6 {align-content: space-around;}
  .j7 {align-content: space-evenly;}

  div div {
    padding: 5px 10px;
  }
  div div:nth-child(1) {background: #f33; font-size: 30px;}
  div div:nth-child(2) {background: #fb0; font-size: 12px;}
  div div:nth-child(3) {background: #4cf; height: 60px;}
  div div:nth-child(4) {background: #0b0; font-size: 40px;}
  div div:nth-child(5) {background: #f9f; height: 30px;}
  div div:nth-child(6) {background: #f80; font-size: 12px;}
  div div:nth-child(7) {background: #6f6; height: 30px;}
  div div:nth-child(8) {background: #ccc; font-size: 12px;}
</style>

CSS 教学 - Flex 的对齐方式 - align-content 多行垂直对齐

CSS 教学 - Flex 的对齐方式 - align-content 多行垂直对齐

align-self 覆写单一元素垂直对齐方式

align-self 样式属性可“覆写单一元素垂直对齐方式”,是撰写在“弹性项目”的样式属性,设定后的弹性项目自成一格,不会被原本的垂直样式影响,没有继承特性,属性值和 align-items 相同。

属性值 说明
flex-start 元素上缘对齐交叉轴的起始点。
flex-end 元素下缘对齐交叉轴的结束点。
center 元素中线对齐交叉轴中心。
normal 在 Flex 弹性容器中等同 stretch ( 默认值 )。
stretch 未设定高度的元素高度会撑开至弹性容器高度,有设定高度的元素上缘对齐交叉轴的起始点。
baseline、first baseline 有设定 align-self 的元素互相对齐彼此基线,对齐后最上缘对齐交叉轴的起始点。
last baseline 等同 baseline,对齐后最下缘对齐交叉轴的结束点。

下方范例会将橘黄色内容为 ox 的 div 额外添加 align-self 样式属性。

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

<!-- HTML 程式碼-->
<div class="f j1"><div>o</div><div>ox</div><div>oxx</div><div>oxxo</div><div>xxo</div></div>
<div class="f j2"><div>o</div><div>ox</div><div>oxx</div><div>oxxo</div><div>xxo</div></div>
<div class="f j3"><div>o</div><div>ox</div><div>oxx</div><div>oxxo</div><div>xxo</div></div>
<div class="f j4"><div>o</div><div>ox</div><div>oxx</div><div>oxxo</div><div>xxo</div></div>
<div class="f j5"><div>o</div><div>ox</div><div>oxx</div><div>oxxo</div><div>xxo</div></div>
<div class="f j6"><div>o</div><div>ox</div><div>oxx</div><div>oxxo</div><div>xxo</div></div>

<!-- CSS 程式碼 -->
<style>
  .f {
    width: 300px;
    height: 100px;
    border: 1px solid #000;
    display: flex;
    font-size: 20px;
    margin: 10px;
  }

  .j1 {align-items: flex-start;}
  .j2 {align-items: flex-end;}
  .j3 {align-items: center;}
  .j4 {align-items: stretch;}
  .j5 {align-items: baseline;}
  .j6 {align-items: last baseline;}

  div div {
    padding: 5px 10px;
  }
  div div:nth-child(1) {background: #f33; font-size: 30px;}
  div div:nth-child(2) {background: #fb0; font-size: 12px;}
  div div:nth-child(3) {background: #4cf; height: 60px;}
  div div:nth-child(4) {background: #0b0; font-size: 40px;}
  div div:nth-child(5) {background: #f9f; height: 30px;}

  .j1 div:nth-child(2){align-self: flex-end;}   /* 額外設定 align-self */
  .j2 div:nth-child(2){align-self: flex-start;} /* 額外設定 align-self */
  .j3 div:nth-child(2){align-self: flex-start;} /* 額外設定 align-self */
  .j4 div:nth-child(2){align-self: flex-start;} /* 額外設定 align-self */
  .j5 div:nth-child(2){align-self: flex-start;} /* 額外設定 align-self */
  .j6 div:nth-child(2){align-self: flex-start;} /* 額外設定 align-self */
</style>

CSS 教学 - Flex 的对齐方式 - align-self 覆写单一元素垂直对齐方式

如果是 align-self 设定为 baseline 或 last baseline,具有相同属性值的元素会“互相对齐彼此基线”,对齐后最上缘对齐交叉轴的起始点,可以观察下方范例的第一个与第二个 div,彼此对齐基线后,因为第一个 div 比较高,就会使用第一个 div 的上缘去对齐交叉轴起始点。

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

<!-- HTML 程式碼-->
<div class="f j1"><div>o</div><div>ox</div><div>oxx</div><div>oxxo</div><div>xxo</div></div>
<div class="f j2"><div>o</div><div>ox</div><div>oxx</div><div>oxxo</div><div>xxo</div></div>
<div class="f j3"><div>o</div><div>ox</div><div>oxx</div><div>oxxo</div><div>xxo</div></div>
<div class="f j4"><div>o</div><div>ox</div><div>oxx</div><div>oxxo</div><div>xxo</div></div>


<!-- CSS 程式碼 -->
<style>
  .f {
    width: 300px;
    height: 100px;
    border: 1px solid #000;
    display: flex;
    font-size: 20px;
    margin: 10px;
  }

  .j1 {align-items: flex-start;}
  .j2 {align-items: flex-end;}
  .j3 {align-items: center;}
  .j4 {align-items: stretch;}
  .j5 {align-items: baseline;}
  .j6 {align-items: last baseline;}

  div div {
    padding: 5px 10px;
  }
  div div:nth-child(1) {background: #f33; font-size: 30px;}
  div div:nth-child(2) {background: #fb0; font-size: 12px;}
  div div:nth-child(3) {background: #4cf; height: 60px;}
  div div:nth-child(4) {background: #0b0; font-size: 40px;}
  div div:nth-child(5) {background: #f9f; height: 30px;}

  .f div:nth-child(1), 
  .f div:nth-child(2){
    align-self: baseline;
  }
</style>

CSS 教学 - Flex 的对齐方式 - align-self: baseline 的对齐效果

如果是多行的状况,单一元素的对齐会以“所在的行空间”为对齐标的,下方会将第二、第五和第八个 div 使用 align-self: flex-start,可以看出这三个元素都会对齐自己所处在行空间的上缘。

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

<!-- HTML 程式碼-->
<div class="f j1"><div>o</div><div>ox</div><div>oxx</div><div>oxxo</div><div>xxo</div><div>apple</div><div>banana</div><div>watermelon</div></div>
<div class="f j2"><div>o</div><div>ox</div><div>oxx</div><div>oxxo</div><div>xxo</div><div>apple</div><div>banana</div><div>watermelon</div></div>
<div class="f j3"><div>o</div><div>ox</div><div>oxx</div><div>oxxo</div><div>xxo</div><div>apple</div><div>banana</div><div>watermelon</div></div>
<div class="f j4"><div>o</div><div>ox</div><div>oxx</div><div>oxxo</div><div>xxo</div><div>apple</div><div>banana</div><div>watermelon</div></div>
<div class="f j5"><div>o</div><div>ox</div><div>oxx</div><div>oxxo</div><div>xxo</div><div>apple</div><div>banana</div><div>watermelon</div></div>
<div class="f j6"><div>o</div><div>ox</div><div>oxx</div><div>oxxo</div><div>xxo</div><div>apple</div><div>banana</div><div>watermelon</div></div>
<div class="f j7"><div>o</div><div>ox</div><div>oxx</div><div>oxxo</div><div>xxo</div><div>apple</div><div>banana</div><div>watermelon</div></div>

<!-- CSS 程式碼 -->
<style>
  .f {
    width: 220px;
    height: 220px;
    border: 1px solid #000;
    display: flex;
    font-size: 20px;
    margin: 10px;
    flex-wrap: wrap;
  }

  .j1 {align-content: flex-start;}
  .j2 {align-content: flex-end;}
  .j3 {align-content: center;}
  .j4 {align-content: stretch;}
  .j5 {align-content: space-between;}
  .j6 {align-content: space-around;}
  .j7 {align-content: space-evenly;}

  div div {
    padding: 5px 10px;
  }
  div div:nth-child(1) {background: #f33; font-size: 30px;}
  div div:nth-child(2) {background: #fb0; font-size: 12px;}
  div div:nth-child(3) {background: #4cf; height: 60px;}
  div div:nth-child(4) {background: #0b0; font-size: 40px;}
  div div:nth-child(5) {background: #f9f; height: 30px;}
  div div:nth-child(6) {background: #f80; font-size: 12px;}
  div div:nth-child(7) {background: #6f6; height: 30px;}
  div div:nth-child(8) {background: #ccc; font-size: 12px;}

  .f div:nth-child(2), 
  .f div:nth-child(5), 
  .f div:nth-child(8){
    align-self: flex-start;    /* 2、5、8 個 div 設定 align-self  */
  }
</style>

CSS 教学 - Flex 的对齐方式 - align-self 在多行元素的样式行为

place-content 对齐缩写格式

place-content 是 align-content 和 justify-content 的缩写格式,属性值有两个,位于第一个的属性值是 align-content,第二个是 justify-content,如果只设定一个值,则第二个值与第一个值相同,如果其中一个属性值写错了发生无效的状况,则这个样式属性就没有作用。

下方范例中,独立撰写 align-content 和 justify-content 样式属性,与使用 place-content 样式属性所呈现的结果一模一样。

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

<!-- HTML 程式碼-->
<div class="f j1"><div>o</div><div>ox</div><div>oxx</div><div>oxxo</div><div>apple</div><div>banana</div><div>orange</div><div>papaya</div></div>
<div class="f j2"><div>o</div><div>ox</div><div>oxx</div><div>oxxo</div><div>apple</div><div>banana</div><div>orange</div><div>papaya</div></div>
<div class="f j3"><div>o</div><div>ox</div><div>oxx</div><div>oxxo</div><div>apple</div><div>banana</div><div>orange</div><div>papaya</div></div>
<div class="f j4"><div>o</div><div>ox</div><div>oxx</div><div>oxxo</div><div>apple</div><div>banana</div><div>orange</div><div>papaya</div></div>
<div class="f j5"><div>o</div><div>ox</div><div>oxx</div><div>oxxo</div><div>apple</div><div>banana</div><div>orange</div><div>papaya</div></div>
<div class="f j6"><div>o</div><div>ox</div><div>oxx</div><div>oxxo</div><div>apple</div><div>banana</div><div>orange</div><div>papaya</div></div>


<!-- CSS 程式碼 -->
<style>
  .f {
    width: 200px;
    height: 200px;
    border: 1px solid #000;
    display: flex;
    font-size: 16px;
    margin: 20px;
    flex-wrap: wrap;
    float: left;
  }
  .j1 {
    justify-content: flex-start;
    align-content: center;
  }
  .j2 {
    justify-content: flex-end;
    align-content: stretch;
  }
  .j3 {
    justify-content: space-between;
    align-content: space-between;
  }
  .j4 {place-content: center flex-start;}
  .j5 {place-content: stretch flex-end;}
  .j6 {place-content: space-between;}

  div div {padding: 5px 10px;}
  div div:nth-child(1) {background: #f33;}
  div div:nth-child(2) {background: #fb0;}
  div div:nth-child(3) {background: #4cf;}
  div div:nth-child(4) {background: #0b0;}
  div div:nth-child(5) {background: #f9f;}
  div div:nth-child(6) {background: #f80;}
  div div:nth-child(7) {background: #6f6;}
  div div:nth-child(8) {background: #ccc;}
</style>

CSS 教学 - Flex 的对齐方式 - place-content 对齐缩写格式

小结

使用 Flex 进行排版时时,大部分的情况都会进行对齐的设定,透过这篇教学介绍的水平与垂直对齐方式,就能精确掌握弹性项目的位置,也能做出更好的弹性排版。

意见反馈

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