搜索

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

可见性与透明度

visibility 和 opacity 样式属性就如同字面的意思,表示元素的可见性和透明度,这篇教学所介绍的样式可以将元素“显示”或“隐藏”,这篇教学会介绍元素可见性 visibility、内容可见性 content-visibility 以及 opacity 透明度的用法。

快速导览:

CSS 教学 - CSS visibility 可见性、content-visibility、opacity 透明度

教学影片

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

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

visibility 元素可见性

visibility 是一个很简单的样式属性,可以将元素“隐藏”或“显示”,因为具有继承特性,所以如果父元素设定了隐藏,则子元素也会一并隐藏,这个样式有下列属性值:

属性值 说明
visible 显示 ( 默认值 )
hidden 隐藏,仍然保留容器空间。
collapse 对于 tr、tbody、col 和 colgroup 元素等于 display:none,其他元素则等同 visibility:hidden。

属性值 visible 和 hidden

visibility 的属性值 visible 和 hidden 分别表示元素“显示”或“隐藏”,但隐藏不等于 display:none 的完全消失,仍然会保留原本所占的容器空间 ( 类似 opacity:0 ),隐藏元素所包含的子元素也会一并隐藏,也会失去透过键盘 tab 切换焦点的功能 ( 例如切换选单 )。

下方的范例将 strong 元素和 h3 元素设定为 visibility:hidden,这两个元素就会从画面中消失,但其空间仍然保留。

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

<!-- HTML 程式碼 -->
<div>
  STEAM 教育學習網秉持著 STEAM/STEM 的精神<strong>OXXO.STUDIO</strong>,透過一系列免費且高品質的教學與範例,讓所有人都能輕鬆跨入 STEAM 的學習領域。
</div>
<div>
  <h2>apple</h2>
  <h3>banana</h3>
  <h4>orange</h4>
</div>

<!-- CSS 程式碼 -->
<style>
  div {
    border: 1px solid #000;
    margin: 10px;
  }

  strong, h3 {
    border: 1px solid red;
    visibility: hidden; 
  }
</style>

CSS 教学 - 元素可见性 visibility、透明度 opacity - visibility 的 visible 和 hidden

属性值 collapse

collapse 是针对“表格”元素的属性值,只要是 tr、tbody、col 和 colgroup 相关元素,设定后效果等于 display:none,元素会消失且不占空间,如果是其他元素,则表现如同 visibility:hidden。

下方范例呈现三个表格,第一个是正常表格,第二个表格使用 visibility:hidden 的 tr 会保留空间,第三个表格使用 visibility:collapse 的 tr 就会完全消失。

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

<!-- HTML 程式碼 -->
<table class="a">
  <tr><td>apple</td><td>banana</td><td>oxxo</td></tr>
  <tr><td>100</td><td>200</td><td>300</td></tr>
  <tr><td>9999</td><td>8888</td><td>7777</td></tr>
</table>
<table class="b">
  <tr><td>apple</td><td>banana</td><td>oxxo</td></tr>
  <tr><td>100</td><td>200</td><td>300</td></tr>
  <tr><td>9999</td><td>8888</td><td>7777</td></tr>
</table>
<table class="c">
  <tr><td>apple</td><td>banana</td><td>oxxo</td></tr>
  <tr><td>100</td><td>200</td><td>300</td></tr>
  <tr><td>9999</td><td>8888</td><td>7777</td></tr>
</table>

<!-- CSS 程式碼 -->
<style>
  table {
    margin: 10px;
    border: 3px solid #000;
  }
  td {
    border: 1px solid #000;
  }
  .b tr:first-child {
    visibility: hidden;
  }
  .c tr:first-child {
    visibility: collapse;
  }
</style>

CSS 教学 - 元素可见性 visibility、透明度 opacity - visibility 属性值 collapse

如果是作用在其他元素,表现就会如同 visibility:hidden,下方范例的两个 h3 分别套用了 visibility:hidden 和 visibility:collapse,呈现的结果完全相同。

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

<!-- HTML 程式碼 -->
<div class="a">
  <h2>apple</h2>
  <h3>banana</h3>
  <h4>oxxo</h4>
</div>
<div class="b">
  <h2>apple</h2>
  <h3>banana</h3>
  <h4>oxxo</h4>
</div>

<!-- CSS 程式碼 -->
<style>
  div {
    border: 1px solid #000;
    margin: 10px;
    width: 200px;
  }

  .a h3 {
    visibility: hidden;
  }

  .b h3 {
    visibility: collapse;
  }
</style>

CSS 教学 - 元素可见性 visibility、透明度 opacity - visibility 的 hidden 和 collapse 大同小异

content-visibility 内容可见性

content-visibility 是一个可以将“元素的内容”隐藏或显示的样式属性,没有继承特性,有下列属性值:

属性值 说明
visible 显示 ( 默认值 )
hidden 隐藏,不保留容器空间,类似 display:none。
auto 元素内容与用户相关时才显示,不相关时隐藏。

下方范例会展示属性值 visible 和 hidden 的差异,可以看出 content-visibility: hidden 并不会保留容器空间,表现行为和 display:none 类似 ( 注意,如果使用 visibility: hidden 会保留容器空间 )。

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

<!-- HTML 程式碼 -->
<div class="a">
  <h3>apple</h3><h3>banana</h3><h3>oxxo</h3>
</div>
<div>
  <h3>apple</h3><h3>banana</h3><h3>oxxo</h3>
</div>

<!-- CSS 程式碼 -->
<style>
  div {
    border: 1px solid #000;
    padding: 5px;
    margin: 10px;
    background: #fc0;
  }
  .a {content-visibility: hidden;}
</style>

CSS 教学 - 元素可见性 visibility、透明度 opacity - content-visibility 内容可见性

如果设定 auto 属性值表示,当元素内容“与用户相关时”才会显示,不然就会隐藏,这种做法主要针对“过长”的页面,透过自动隐藏和显示的做法,可以替页面提高执行效率,下方列出与用户相关的情形:

  • 元素出现在画面中。
  • 元素进入浏览器定义的页面范围 ( 通常是浏览视窗尺寸的 50%,提供浏览器有足够的时间渲染元素 )。
  • 元素或其内容获得焦点 ( 例如被选取或被程序点击 )。
  • 元素或其内容放置在最上层。

通常使用 auto 属性值会搭配 contain-intrinsic-size 才会突显视觉效果,下方的范例会产生一个“过长”的页面,接着透过 contain-intrinsic-size: auto 1000px 设定尚未渲染时元素内容默认高度为 1000px,透过 content-visibility: auto 隐藏画面外的内容,当用户开始卷动卷轴时,才会开始渲染进入页面范围的内容,“卷轴的长度”也就会发生变化,直到页面全部渲染完成,卷轴长度就会固定。 ( 这个做法只是在证明尚未出现在画面中的元素还没有被渲染 )

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

<!-- HTML 程式碼 -->
<div><h3>區塊 1</h3></div>
<div><h3>區塊 2</h3></div>
<div><h3>區塊 3</h3></div>
<div><h3>區塊 4</h3></div>
<div><h3>區塊 5</h3></div>
<div><h3>區塊 6</h3></div>
<div><h3>區塊 7</h3></div>
<div><h3>區塊 8</h3></div>
<div><h3>區塊 9</h3></div>
<div><h3>區塊 10</h3></div>
<div><h3>區塊 11</h3></div>
<div><h3>區塊 12</h3></div>

<!-- CSS 程式碼 -->
<style>
  div {
    border: 1px solid #000;
    padding: 5px;
    margin: 10px;
    background: #fc0;
    content-visibility: auto;
    contain-intrinsic-size: auto 1000px; /* 假設內容高度為 1000px */
  }
  h3 {height: 100px;}  /* 內容渲染後實際高度 */
</style>

CSS 教学 - 元素可见性 visibility、透明度 opacity - content-visibility 使用 auto 属性值

opacity 透明度

opacity 样式属性可以设定元素的“透明度”,属性值为 0~1 的浮点数,数值越大越不透明,0 表示全透明,没有继承的特性,但父元素变透明时,内容的子元素也会跟着一起变透明,这个样式属性和 CSS 的透明度函数“filter:opacity()”用法大同小异,差别只在于函数的透明度是“参数”,而样式的透明度是“属性值”。

下方范例使用 opacity 和 filter:opacity() 两种方法修改元素的透明度,呈现的效果完全相同。

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

<!-- HTML 程式碼 -->
<div class="a">
  <span>使用樣式 opacity:0.5</span>
  <div>
    <div>apple</div>
    <div>oxxo.studio</div>
  </div>
</div>
<div class="b">
  <span>使用濾鏡 filter:opacity(0.5)</span>
  <div>
    <div>apple</div>
    <div>oxxo.studio</div>
  </div>
</div>

<!-- CSS 程式碼 -->
<style>
  div {
    border: 1px solid #000;
    padding: 5px;
    margin: 10px;
    background: orange;
  }
  .a {opacity: 0.5;}
  .b {filter: opacity(0.5);}
</style>

CSS 教学 - 元素可见性 visibility、透明度 opacity - opacity 透明度

小结

visibility 样式属性使用时只需注意 collapse 有其对应元素,以及 hidden 隐藏的元素仍然会占据空间,至于 opacity 就更简单,只需要利用 0~1 的浮点数控制透明度,两个都是非常容易上手的样式属性。

意见反馈

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