搜索

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

Less ( 变数、import )

虽然原生的 CSS 已经有变数和 import 等功能,但 Less 在这些功能上表现得又更为强大,这篇教学会介绍如何在 Less 中使用变数和 import。

快速导览:

CSS 教学 - Less 教学:变数、import

Less 变数

原生 CSS 使用“--”开头作为变数或自订属性的识别符号,而 Less 则是使用“@”开头作为变数的识别符号,变数名称按照基命名规则,*使用英文字母大小写开头,可搭配数字或底线,使用变数虽然很简单,但 Less 变数和原生 CSS 变数有“本质差异”:

CSS 变数:直接在 CSS 中使用,在纯 CSS 中“会”看到变数名称,参考“CSS 变数”。 Less 变数:转换成 CSS 之后会变成对应的数值,在纯 CSS 中“不会”看到变数名称。

Less 变数替换属性值

Less 变数的数值可放入 CSS 各种属性值,转换后会将这些数值放入对应的位置。

/********** Less 寫法 **********/
@color1: blue;
@color2: red;
@size30: 30px;
a {color: @color1;}
a:hover {color: @color2;}
h2 {font-size: 30px;}


/********** 轉換成 CSS **********/
a {color: blue;}
a:hover {color: red;}
h2 {font-size: 30px;}

Less 变数替换选择器名称或内容

Less 变数除了可以取代属性值,也可以使用“@{變數名稱}]”替代选择器“名称”,下方会将元素的 class 名称替换为变数的写法。

/********** Less 寫法 **********/
@name1: apple;
@name2: oxxo;
h2.@{name1} {color: red;}       /* 注意替換名稱的寫法 */
h2.@{name1}-123 {color: blue;}
h2.@{name2} {font-size: 30px;}
h2.@{name2}-123 {font-size: 20px;}


/********** 轉換成 CSS **********/
h2.apple {color: red;}
h2.apple-123 {color: blue;}
h2.oxxo {font-size: 30px;}
h2.oxxo-123 { font-size: 20px;}

使用同样的做法也可以替换属性内容,下方的范例会将图片 url() 的内容使用变数的方式呈现。

/********** Less 寫法 **********/
@website: "https://steam.oxxostudio.tw/";
.banner {
  background: url("@{website}img/oxxo.jpg");
}


/********** 轉換成 CSS **********/
.banner {
  background: url("https://steam.oxxostudio.tw/img/oxxo.jpg");
}

由于 Less 变数使用“字串”的方式替换内容,如果有比较复杂的需求 ( 例如渐层色 ),就需要采用替换变数替换变数内容的做法,才能产生正确的结果。

/********** Less 寫法 **********/
@name1: apple;
@name2: oxxo;
h2.@{name1} {color: red;}       /* 注意替換名稱的寫法 */
h2.@{name1}-123 {color: blue;}
h2.@{name2} {font-size: 30px;}
h2.@{name2}-123 {font-size: 20px;}


/********** 轉換成 CSS **********/
h2.apple {color: red;}
h2.apple-123 {color: blue;}
h2.oxxo {font-size: 30px;}
h2.oxxo-123 { font-size: 20px;}

使用同样的做法也可以替换属性内容,下方的范例会将图片 url() 的内容使用变数的方式呈现。

/********** Less 寫法 **********/
@color1: red;
@color2: blue;
@bg: linear-gradient(to right, @color1, @color2);
.main {
  background: @bg;
}


/********** 轉換成 CSS **********/
.main {
  background: linear-gradient(to right, red, blue);
}

Less 变数取值

Less 变数不一定要在使用之前宣告,使用后再宣告也不会发生错误,下方范例会在使用 @color 之后才宣告变数,仍然会产生正确的结果。

/********** Less 寫法 **********/
h1{color: @color}
@color: red;      /* 放在後方才宣告 */


/********** 轉換成 CSS **********/
h1 {color: red;}

Less 的变数取值和 CSS 相同,会取用最靠近元素的变数,例如同层级有变数就会先采用这个变数,如果同层级没有变数,就会向父层级取用变数,下方范例会展示不同层级中都有相同名称但不同内容的变数,最后取用结果就会采用最靠近元素的变数。

/********** Less 寫法 **********/
@color: red;
  
.apple {
  @color: blue;
  color: @color;
  .oxxo {
    @color: green;
    color: @color;
    .banana {
      @color: yellow;
      h2 {
        color: @color;
      }
    }
  }
}
h2 {
  color: @color;
}


/********** 轉換成 CSS **********/
.apple {color: blue;}
.apple .oxxo {color: green;}
.apple .oxxo .banana h2 {color: yellow;}
h2 {color: red;}

Less 变数可以赋值给不同的 Less 变数,也可以搭配原生的 CSS 变数共同使用,下方范例会呈现不同变数之间互相赋值的效果。

/********** Less 寫法 **********/
@color1: red;
@color2: @color1;
:root {
  --oxxo: @color2;
  @color3: var(--oxxo);
}
.apple {color: @color2;}
.oxxo {color: var(--oxxo);}


/********** 轉換成 CSS **********/
:root {--oxxo: red;}
.apple {color: red;}
.oxxo {color: var(--oxxo);}

Less 变数除了使用宣告的方式赋予数值,3.0 版本之后也可以使用“样式”作为变数,使用方式需要改用“$”开头作为识别符号,使用时同样会取用最靠近元素的变数作为属性值,下方范例会使用 color 样式作为变数。

/********** Less 寫法 **********/
.apple {
  color: red;
  background-color: $color;
  .oxxo {
    background-color: $color;
    .banana {
      color: blue;
      background-color: $color;
    }
  }
}


/********** 轉換成 CSS **********/
.apple {
  color: red;
  background-color: red;
}
.apple .oxxo {
  background-color: red;
}
.apple .oxxo .banana {
  color: blue;
  background-color: blue;
}

Less 变数搭配 @media

@media 是使用 CSS 制作 RWD 网页必备的技能,如果将 Less 变数搭配 @media,就能透过巢状结构撰写 @media,转换后就会将 @media 独立成原本 CSS 的格式。

/********** Less 寫法 **********/
@min768: (min-width: 768px);
@min1024: (min-width: 1024px);
.apple {
  @media @min768 {
    font-size: 1.2rem;
  }
}
.oxxo {
  @media @min1024 {
    font-size: 1.2rem;
  }
}


/********** 轉換成 CSS **********/
@media (min-width: 768px) {
  .apple {
    font-size: 1.2rem;
  }
}
@media (min-width: 1024px) {
  .oxxo {
    font-size: 1.2rem;
  }
}

如果巢状结构中的 @media 里还包覆着其他 @media,转换后会自动变成 and 的形式。

/********** Less 寫法 **********/
@min768: (min-width: 768px);
@max1024: (max-width: 1024px);
.apple {
  @media @min768 {
  @media @max1024 {
    font-size: 1.2rem;
  }
  }
}


/********** 轉換成 CSS **********/
@media (min-width: 768px) and (max-width: 1024px) {
  .apple {
    font-size: 1.2rem;
  }
}

使用 @import 加载其他 Less 文件

Less 和原生的 CSS 一样都有提供“@import”功能,为了区隔和原生 CSS 的 @import,Less 额外提供“加载选项”的设定,使用的语法为“@import (選項) 載入的檔案”。

选项 说明
reference 使用 Less 文件但不输出它。
inline 在输出中包含来源文件但不对其进行处理。
less 将任何文件视为 Less 文件。
css 将任何文件视为 CSS 文件。
once ( 默认值 ) 仅包含文件一次。
multiple 多次包含该文件。
optional 找不到文件时继续编译。

使用“once”选项默认值时,则后方名同的文件就会被忽略。

/********** Less 寫法 **********/
@import "apple.less";
@import "apple.less";   /* 這行會被忽略 */
@import (once) "oxxo.less";
@import (once) "oxxo.less";   /* 這行會被忽略 */

如果使用“multiple”选项默认值时,则会重复加载相关内容。

/********** oxxo.less 內容 **********/
a {color: red;}

/********** Less 寫法 **********/
@import (multiple) "oxxo.less";
@import (multiple) "oxxo.less";

/********** 轉換成 CSS **********/
a {color: red;}
a {color: red;}   /* 重複載入 */

如果要在 Less 中使用原生 CSS 的 @import,则需要特别标注“css”选项下方写法:

/********** Less 寫法 **********/
@import (css) "oxxo.css";

/********** 轉換成 CSS **********/
 @import "oxxo.css";

小结

这篇教学所介绍的 Less 变数用法,和原生 CSS 的变数有着本质上的不同,但相对来说如果程序码非常复杂,使用 Less 变数就能大幅简化这些程序码,也更容易进行管理。

意见反馈

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