当前位置: 首页 > news >正文

一、CSS3 新增选择器(非 “属性”,但为核心基础)

CSS3 是 CSS(层叠样式表)的第三个主要版本,在 CSS2.1 基础上新增了大量特性,涵盖布局、视觉效果、动画、响应式等多个维度,极大提升了网页样式的表现力和开发效率。由于 CSS3 属性数量庞大(且部分属性为细分或实验性),以下将按核心功能模块分类,整理常用属性、用法及示例,帮助系统理解。

一、CSS3 新增选择器(非 “属性”,但为核心基础)

CSS3 扩展了选择器能力,无需依赖 HTML 类名或 ID 即可精准定位元素,减少 HTML 冗余。

选择器类型语法示例作用说明
属性选择器[attr^="val"]匹配属性 attrval 开头的元素
[attr$="val"]匹配属性 attrval 结尾的元素
[attr*="val"]匹配属性 attr 包含 val 的元素
结构伪类选择器:nth-child(n)匹配父元素下第 n 个子元素(n 可写公式,如 2n 偶数)
:nth-of-type(n)匹配父元素下第 n同类型子元素
:first-child / :last-child匹配父元素第一个 / 最后一个子元素
:empty匹配无内容(无文本、无子元素)的元素
状态伪类选择器:hover / :active / :focus鼠标悬浮 / 点击 / 获取焦点时的元素(部分为 CSS2 但常用)
:checked匹配被选中的表单元素(如单选框、复选框)
伪元素选择器::before / ::after在元素内容前 / 后插入 “虚拟元素”(需配合 content 属性)
::first-letter匹配文本的第一个字符
::selection匹配用户选中的文本(仅支持 color/background 等少数属性)

二、盒模型模块(Box Model)

CSS3 新增 box-sizing 属性,解决了传统盒模型(content-box)中 “边框 / 内边距撑大元素” 的问题。

核心属性:box-sizing

  • 作用:定义元素的 “盒模型计算方式”,即 width/height 是否包含边框(border)和内边距(padding)。

  • 取值:

    • content-box(默认):width = 内容宽度(不含 padding/border),元素实际宽度 = 内容宽 + padding + border
    • border-box(推荐):width = 内容宽 + padding + border,元素实际宽度固定为定义的 width,避免意外撑大。
  • 示例 :

    .box {width: 200px;padding: 20px;border: 1px solid #000;box-sizing: border-box; /* 实际宽度仍为 200px,padding 和 border 从内部扣除 */
    }
    

三、背景与边框模块

CSS3 大幅增强了背景和边框的视觉效果,支持多背景、圆角、阴影等。

1. 背景相关属性

属性名作用说明取值示例
background-image设置背景图片(支持多背景,用逗号分隔)url("a.jpg"), url("b.png")
background-size控制背景图片尺寸cover(覆盖容器)、contain(适应容器)、100px 200px(固定尺寸)
background-position控制背景图片位置(支持百分比 / 关键词)center center(居中)、20% 80%
background-clip控制背景的 “裁剪范围”border-box(默认,包含边框)、padding-box(仅内边距)、content-box(仅内容)
background-origin控制背景图片的 “定位原点”background-clip 的取值
background-attachment控制背景图片是否随滚动条滚动fixed(固定)、scroll(滚动)
  • 多背景示例 :

    .bg {width: 500px;height: 300px;background-image: url("logo.png"), url("bg-pattern.jpg");background-size: 100px auto, cover; /* 第一个背景(logo)宽100px,第二个(图案)覆盖容器 */background-position: top left, center;background-repeat: no-repeat, repeat; /* 第一个不重复,第二个重复 */
    }
    

2. 边框相关属性

属性名作用说明取值示例
border-radius设置边框圆角(支持简写,实现圆形 / 椭圆)5px(统一圆角)、10px 20px 30px 40px(左上→右上→右下→左下)、50%(圆形,需元素宽高相等)
box-shadow为元素添加阴影(支持多阴影,逗号分隔)水平偏移 垂直偏移 模糊度 扩散度 颜色 内阴影(如 2px 2px 5px rgba(0,0,0,0.3),内阴影加 inset
border-image用图片替代 “传统边框”(需配合 border 使用)url("border.png") 30 round(图片地址、切片大小、重复方式)
  • 边框圆角 + 阴影示例:

    .card {width: 300px;height: 200px;border: 1px solid #eee;border-radius: 12px; /* 圆角 */box-shadow: 0 4px 12px rgba(0,0,0,0.08); /* 水平0、垂直4、模糊12、半透明阴影 */
    }
    

四、文本与字体模块

CSS3 优化了文本排版和字体引入方式,支持阴影、溢出处理、自定义字体等。

属性名作用说明取值示例
text-shadow为文本添加阴影(类似 box-shadow1px 1px 2px #ff0000(水平 1、垂直 1、模糊 2、红色)
text-overflow处理文本溢出容器的显示方式(需配合 white-space: nowrapoverflow: hiddenellipsis(省略号)、clip(裁剪)
white-space控制文本换行方式nowrap(不换行)、pre(保留空格和换行)
word-wrap / overflow-wrap允许长单词换行(避免溢出)break-word(强制换行)
word-break控制单词的断行规则break-all(任意字符处断行)、keep-all(仅在空格 / 连字符处断行)
@font-face引入自定义字体(无需依赖系统字体)见下方示例
  • 文本溢出省略示例

    .text {width: 200px;white-space: nowrap; /* 不换行 */overflow: hidden; /* 隐藏溢出内容 */text-overflow: ellipsis; /* 溢出部分显示省略号 */
    }
    
  • 自定义字体示例

    /* 定义自定义字体 */
    @font-face {font-family: "MyFont"; /* 字体名称(自定义) */src: url("MyFont-Regular.woff2") format("woff2"), /* 优先加载的字体文件 */url("MyFont-Regular.woff") format("woff"); /* 降级字体文件(兼容性) */font-weight: normal; /* 字体粗细 */font-style: normal; /* 字体样式(正常/斜体) */
    }/* 使用自定义字体 */
    .title {font-family: "MyFont", sans-serif; /*  sans-serif 为降级字体 */
    }
    

五、变形(Transform)模块

transform 允许对元素进行旋转、平移、缩放、倾斜等 2D/3D 变形,不影响其他元素布局(类似 “视觉上的改变”)。

核心属性:transform

  • 作用:定义元素的变形效果,支持多个变形函数(用空格分隔)。

  • 2D 变形函数(常用)

    • translate(x, y):平移(x 水平方向,y 垂直方向,单位 px/%),简化写法 translateX(x)/translateY(y)
    • rotate(deg):旋转(单位 deg,正为顺时针,负为逆时针)。
    • scale(x, y):缩放(x 水平缩放,y 垂直缩放,1 为原尺寸,>1 放大,<1 缩小),简化写法 scaleX(x)/scaleY(y)
    • skew(x-deg, y-deg):倾斜(x 水平倾斜,y 垂直倾斜,单位 deg),简化写法 skewX(x)/skewY(y)
    • matrix(a, b, c, d, e, f):复合变形(通过矩阵计算,较少直接使用)。
  • 3D 变形函数(常用)

    • translate3d(x, y, z):3D 平移(z 轴为 “前后” 方向,单位 px)。
    • rotate3d(x, y, z, deg):3D 旋转(x/y/z 为 0 或 1,指定旋转轴),简化写法 rotateX(deg)/rotateY(deg)/rotateZ(deg)
    • perspective(n):定义 3D 透视效果(模拟人眼距离,值越小透视越强,单位 px,需写在父元素或变形元素上)。
  • 辅助属性:transform-origin

    • 作用:定义变形的 “原点”(默认是元素中心 center center)。
    • 取值:x y(可写关键词,如 top left;或 px/%),3D 时加 z 轴值。
  • 示例(2D 旋转 + 缩放)

    .box {width: 100px;height: 100px;background: red;transition: transform 0.3s; /* 配合过渡实现平滑效果 */transform-origin: top left; /* 变形原点设为左上角 */
    }
    .box:hover {transform: rotate(45deg) scale(1.2); /*  hover 时旋转45度+放大1.2倍 */
    }
    

六、过渡(Transition)模块

transition 用于实现元素状态变化时的平滑过渡(如 hover 与默认状态的切换),无需 JS 即可实现简单动画。

核心属性:transition(可简写,也可拆分为单个属性)

拆分属性作用说明取值示例
transition-property指定需要过渡的属性(all 表示所有可过渡属性)width, background-colorall
transition-duration过渡持续时间(必须设置,否则无效果)0.3s500ms
transition-timing-function过渡的 “时间曲线”(控制速度变化)ease(默认,慢→快→慢)、linear(匀速)、ease-in(慢→快)、ease-out(快→慢)、cubic-bezier(n,n,n,n)(自定义曲线)
transition-delay过渡延迟时间(可选,默认 0)0.2s(延迟 0.2 秒后开始过渡)
  • 简写语法transition: property duration timing-function delay;(顺序固定,可省略延迟)。

  • 示例(按钮 hover 平滑变色 + 放大) :

    .btn {padding: 8px 16px;background: #007bff;color: white;border: none;border-radius: 4px;/* 简写过渡:所有属性、0.3秒、ease曲线 */transition: all 0.3s ease;
    }
    .btn:hover {background: #0056b3; /* 变色 */transform: scale(1.05); /* 轻微放大 */
    }
    

七、动画(Animation)模块

animationtransition 更强大,支持多关键帧、循环、自动播放等复杂动画,需配合 @keyframes 定义动画流程。

1. 核心属性:animation(可简写,也可拆分为单个属性)

拆分属性作用说明取值示例
animation-name指定动画名称(需与 @keyframes 名称一致)fadeInslide
animation-duration动画持续时间(必须设置)2s1500ms
animation-timing-function动画时间曲线(同 transition-timing-functionlinearease
animation-delay动画延迟时间0.5s
animation-iteration-count动画循环次数infinite(无限循环)、3(循环 3 次)
animation-direction动画循环方向normal(默认,正向)、reverse(反向)、alternate(正向→反向→正向…,需循环次数≥2)
animation-fill-mode动画结束后元素的状态forwards(保持最后一帧状态)、backwards(延迟时先应用第一帧状态)、both(同时应用 forwards 和 backwards)
animation-play-state控制动画播放状态running(默认,播放)、paused(暂停,可通过 JS 控制)
  • 简写语法animation: name duration timing-function delay iteration-count direction fill-mode play-state;(顺序灵活,可省略部分属性)。

2. 关键帧定义:@keyframes

  • 作用:定义动画的 “关键节点”(从开始到结束的状态变化),用 from(0%)和 to(100%)或百分比(如 25%、50%)表示进度。

  • 语法

    @keyframes 动画名称 {from { /* 动画开始状态(0%) */ }50% { /* 动画中间状态(50%) */ }to { /* 动画结束状态(100%) */ }
    }
    
  • 示例(无限旋转的加载动画)

    /* 定义旋转动画 */
    @keyframes spin {from { transform: rotate(0deg); } /* 开始:0度 */to { transform: rotate(360deg); } /* 结束:360度(一圈) */
    }/* 使用动画 */
    .loader {width: 40px;height: 40px;border: 4px solid #eee;border-top: 4px solid #007bff; /* 顶部边框变色,形成“扇形”效果 */border-radius: 50%; /* 圆形 *//* 简写动画:名称spin、1秒、匀速、无限循环 */animation: spin 1s linear infinite;
    }
    

八、弹性盒(Flexbox)布局模块

Flexbox(弹性盒)是 CSS3 引入的一维布局模型(适合 “行” 或 “列” 方向的布局),可轻松实现元素的对齐、分布、自适应,解决传统浮动布局的痛点。

1. 核心概念:容器(父元素)与项目(子元素)

  • 父元素设置 display: flex,父元素成为 “Flex 容器”,子元素自动成为 “Flex 项目”。
  • 容器存在两根轴:主轴(默认水平,由 flex-direction 控制)和交叉轴(垂直于主轴)。

2. 容器属性(作用于父元素)

属性名作用说明取值示例
display定义容器为 Flex 布局flex(块级容器)、inline-flex(行内容器)
flex-direction控制主轴方向(项目排列方向)row(默认,水平从左到右)、row-reverse(水平从右到左)、column(垂直从上到下)、column-reverse(垂直从下到上)
justify-content控制项目在主轴上的对齐方式flex-start(默认,靠主轴起点)、flex-end(靠主轴终点)、center(居中)、space-between(两端对齐,项目间距相等)、space-around(项目两侧间距相等)
align-items控制项目在交叉轴上的对齐方式stretch(默认,拉伸填满交叉轴)、flex-start(靠交叉轴起点)、flex-end(靠交叉轴终点)、center(居中)、baseline(按项目基线对齐)
flex-wrap控制项目是否换行(默认不换行,溢出压缩)nowrap(默认,不换行)、wrap(换行,新行在下方)、wrap-reverse(换行,新行在上方)
align-content控制多 line 项目在交叉轴上的对齐方式(仅当项目换行时生效)取值同 justify-content(如 centerspace-between

3. 项目属性(作用于子元素)

属性名作用说明取值示例
flex-grow项目的 “放大比例”(默认 0,不放大)1(剩余空间按比例分配,如两个项目都设 1,各占 50%)
flex-shrink项目的 “缩小比例”(默认 1,溢出时缩小)0(不缩小,溢出时显示)、2(比其他项目缩小更快)
flex-basis项目在主轴上的 “基准尺寸”(默认 auto,即项目自身尺寸)200px(固定基准宽)、50%(基准宽为容器的 50%)
flexflex-grow + flex-shrink + flex-basis 的简写(推荐使用)1(等价于 1 1 auto,自适应放大缩小)、0 0 200px(固定尺寸,不放大不缩小)
align-self单独控制某个项目的交叉轴对齐方式(覆盖容器的 align-itemsalign-items 的取值
order控制项目的排列顺序(默认 0,值越小越靠前)1-1(负数比正数靠前)
  • 示例(水平居中 + 垂直居中的卡片) :

    .container {width: 500px;height: 300px;border: 1px solid #eee;display: flex; /* 父元素设为 Flex 容器 */justify-content: center; /* 主轴(水平)居中 */align-items: center; /* 交叉轴(垂直)居中 */
    }
    .card {width: 200px;height: 150px;background: #f5f5f5;text-align: center;line-height: 150px;
    }
    

九、网格(Grid)布局模块

Grid(网格)是 CSS3 引入的二维布局模型(同时控制 “行” 和 “列”),适合复杂的页面布局(如仪表盘、多栏卡片),比 Flexbox 更灵活。

1. 核心概念:容器(父元素)与项目(子元素)

  • 父元素设置 display: grid,父元素成为 “Grid 容器”,子元素自动成为 “Grid 项目”。
  • 容器通过 grid-template-columns/grid-template-rows 定义 “列轨道” 和 “行轨道”,轨道之间的间距用 grid-gap(或 gap)设置。

2. 容器核心属性

属性名作用说明取值示例
display定义容器为 Grid 布局grid(块级容器)、inline-grid(行内容器)
grid-template-columns定义 “列轨道” 的数量和宽度100px 200px auto(3 列,宽分别为 100px、200px、自适应)、repeat(3, 1fr)(3 列,每列占 1 份剩余空间)、1fr 2fr(2 列,比例 1:2)
grid-template-rows定义 “行轨道” 的数量和高度grid-template-columns(如 100px auto 150px
gap / grid-gap定义轨道之间的间距(行列间距)10px(行列间距均为 10px)、10px 20px(行间距 10px,列间距 20px)
grid-template-areas给 “网格区域” 命名(方便项目定位)见下方示例(用字符串表示区域分布)
justify-items控制项目在 “单元格水平方向” 的对齐方式stretch(默认)、startcenterend
align-items控制项目在 “单元格垂直方向” 的对齐方式justify-items 的取值
place-itemsalign-items + justify-items 的简写center center(水平 + 垂直居中)

3. 项目核心属性

属性名作用说明取值示例
grid-column控制项目 “列方向” 的位置(起始列线 + 结束列线)1 / 3(从第 1 列线到第 3 列线,占 2 列)、span 2(占 2 列)
grid-row控制项目 “行方向” 的位置(起始行线 + 结束行线)2 / 4(从第 2 行线到第 4 行线,占 2 行)、span 1(占 1 行)
grid-area项目所属的 “网格区域”(配合容器 grid-template-areas 使用)headermain(对应容器定义的区域名)
justify-self单独控制项目在单元格水平方向的对齐方式(覆盖容器 justify-itemscenterend
align-self单独控制项目在单元格垂直方向的对齐方式(覆盖容器 align-itemscenterend
  • 示例(三列两行的页面布局):

    .grid-container {display: grid;grid-template-columns: repeat(3, 1fr); /* 3列,每列1份 */grid-template-rows: 100px auto 80px; /* 3行,高分别为100px、自适应、80px */gap: 10px; /* 间距10px */grid-template-areas: "header header header" /* 第一行:header 占3列 */"main main sidebar"    /* 第二行:main 占2列,sidebar 占1列 */"footer footer footer"; /* 第三行:footer 占3列 */height: 500px;
    }.header { grid-area: header; background: #007bff; }
    .main { grid-area: main; background: #f5f5f5; }
    .sidebar { grid-area: sidebar; background: #eee; }
    .footer { grid-area: footer; background: #333; color: white; }
    

十、多列布局(Columns)模块

多列布局用于将文本内容按列分割(类似报纸 / 杂志的分栏效果),适合长文本排版。

属性名作用说明取值示例
column-count定义分栏的 “列数”(优先于 column-width2(2 列)、3(3 列)
column-width定义每列的 “最小宽度”(容器足够宽时自动增加列数)200px(每列最小 200px)
column-gap定义列之间的 “间距”20px1em
column-rule定义列之间的 “分隔线”(简写,含宽度、样式、颜色)1px solid #eee(1px 灰色实线)
column-span控制元素是否 “跨列”(作用于子元素)1(默认,不跨列)、all(跨所有列)
  • 示例(新闻文本分 2 栏) :

    .news {width: 800px;column-count: 2; /* 分2栏 */column-gap: 30px; /* 列间距30px */column-rule: 1px dashed #ccc; /* 列分隔线:1px 虚线灰色 */
    }
    .news-title {column-span: all; /* 标题跨所有列 */text-align: center;font-size: 24px;
    }
    

十一、用户界面(UI)模块

CSS3 新增了部分用于优化用户界面的属性,如光标样式、元素可调整大小等。

属性名作用说明取值示例
cursor控制鼠标悬浮在元素上时的 “光标样式”pointer(手型,链接默认)、text(文本光标)、move(移动光标)、not-allowed(禁止光标)、url("cursor.png"), auto(自定义光标,需加降级)
resize控制元素是否 “允许用户调整大小”none(默认,不允许)、both(水平 + 垂直可调整)、horizontal(仅水平)、vertical(仅垂直)(需配合 overflow: autohidden 使用)
outline控制元素获取焦点时的 “外边框”(区别于 border,不占空间)none(去除默认焦点边框,需自定义焦点样式保证可访问性)、2px solid #007bff
appearance控制元素的 “默认外观”(如去除下拉框的默认样式)none(清除默认外观)、button(模拟按钮外观)(需加浏览器前缀,如 -webkit-appearance
  • 示例(自定义可调整大小的文本域):

    textarea {width: 300px;height: 150px;padding: 10px;border: 1px solid #ccc;border-radius: 4px;resize: vertical; /* 仅允许垂直调整大小 */outline: none; /* 去除默认焦点边框 */
    }
    textarea:focus {border-color: #007bff; /* 自定义焦点边框颜色 */
    }
    

十二、媒体查询(Media Queries)

媒体查询是响应式设计的核心,允许根据设备的屏幕尺寸、分辨率等条件,加载不同的 CSS 样式(如手机、平板、电脑显示不同布局)。

语法结构

/* 基础语法:当条件满足时,应用内部样式 */
@media 媒体类型 and (媒体特性) {/* 条件满足时的 CSS 样式 */
}
  • 媒体类型(可选,默认 all):

    • all:所有设备。
    • screen:屏幕设备(电脑、手机、平板等)。
    • print:打印设备。
  • 常用媒体特性

    • width / max-width / min-width:屏幕宽度(max-width: 768px 表示 “宽度≤768px”,即手机端)。
    • height / max-height / min-height:屏幕高度。
    • orientation:屏幕方向(portrait 竖屏,landscape 横屏)。
    • resolution:屏幕分辨率(如 min-resolution: 2dppx 表示高清屏)。
  • 示例(响应式布局:电脑端 3 列,手机端 1 列)

    .card-container {display: grid;grid-template-columns: repeat(3, 1fr); /* 电脑端:3列 */gap: 20px;
    }/* 当屏幕宽度 ≤ 768px(手机端)时,改为1列 */
    @media screen and (max-width: 768px) {.card-container {grid-template-columns: 1fr; /* 手机端:1列 */}
    }
    

十三、兼容性与浏览器前缀

部分 CSS3 属性在早期浏览器中需添加浏览器前缀才能生效(如 Chrome/Safari 的 -webkit-、Firefox 的 -moz-)。目前主流浏览器(Chrome 60+、Firefox 55+、Edge 16+)已支持大部分属性的标准语法,但如需兼容旧浏览器,可添加前缀。

标准属性带前缀的属性(示例)
transform-webkit-transform-moz-transform
transition-webkit-transition-moz-transition
animation-webkit-animation-moz-animation
border-radius-webkit-border-radius-moz-border-radius
box-shadow-webkit-box-shadow-moz-box-shadow
  • 示例(兼容写法) :

    .box {-webkit-border-radius: 10px; /* Safari/Chrome 旧版本 */-moz-border-radius: 10px;    /* Firefox 旧版本 */border-radius: 10px;         /* 标准语法(最后写,优先级高) */
    }
    

十四、总结与学习建议

CSS3 的核心优势在于:

  1. 布局更灵活:Flexbox 解决一维对齐,Grid 解决二维复杂布局,替代传统浮动。
  2. 视觉效果更丰富:圆角、阴影、多背景、渐变(linear-gradient/radial-gradient,未单独列出,常用作背景)等。
  3. 动画更简单:Transition 实现简单过渡,Animation 实现复杂循环动画,无需 JS。
  4. 响应式更易实现:媒体查询适配不同设备。

学习建议

  • 不必死记所有属性,重点掌握 Flexbox、Grid、动画、响应式这四大核心模块。
  • 结合实际项目练习(如搭建响应式页面、实现动画效果),通过 Can I Use 查看属性兼容性。
  • 利用工具(如 VS Code 自动补全、PostCSS 自动添加浏览器前缀)提高开发效率。
http://www.dtcms.com/a/353911.html

相关文章:

  • day082-初识ElasticStack
  • 路由基础(二):路由表和FIB表
  • Ansible文件管理与Jinja2模板
  • Linux查看SFTP登录不上的问题以及解决
  • 【Simulink专题】Simulink模型:MIL单元测试
  • 宝塔发布ktg-mes
  • vue cli 没使用的图片会被打包吗
  • 2025年08月27日Github流行趋势
  • 怎么更新 cargo.exe ?(Rust 工具链)
  • etcd-基本工作原理及部署
  • react + G2(v4) 应用
  • 【C++游记】模板升级
  • 飞腾 D2000 八核处理器板卡深度解析:全国产化硬件方案与丰富扩展能力
  • Linux中创建SFTP账号
  • Netty:现代网络应用的利器
  • 软件定义汽车(SDV)调试——如何做到 适配软件定义汽车(SDV)?(中)
  • 造作AI-你的人工智能创作助手
  • 某中医院信息化能力提升:智能组网设备助力网络架构优化
  • 【日常学习】2025-8-27 测开框架设计模式探索04
  • Element整体操作样式
  • 数据分析编程第五步:数据准备与整理
  • DDD之事件机制(9)
  • 沃丰科技出海客服系统对接沃尔玛全球电商平台,赋能中企出海
  • 升级DrRacket8.10到8.18版本@Ubuntu24.04
  • GitLab 导入/导出仓库
  • 金融 IT 运维痛点突围:用网络管理工具筑牢业务稳定防线(附 OpManager Plus 实践)
  • 【51单片机按键按下数码管秒增计时并LED亮释放停计时LED熄】2022-11-12
  • Android -第二十一次技术总结
  • 使用LLAMA_cpp_python进行qwen2.5-vl-7b-instruct进行推理
  • 【URP】Unity Shader Tags