摘要:html5+css3基础知识教程:CSS3是层叠样式表CSS的第三代,采用模块化设计,与HTML5、JavaScript并称前端三件套。本文从CSS3基础语法、选择器大全、盒模型、文本字体,到Flexbox与Grid布局、响应式设计、实战样式案例,系统讲解前端布局样式从入门到实战的完整路径,并附站长实战经验与FAQ问答。
一、html5+css3黄金组合——前端三件套
html5+css3基础知识教程要讲清楚的第一件事,是这对"黄金组合"在整个Web技术栈中的位置。一个现代网页由三部分构成:HTML5负责内容的结构,CSS3负责视觉的样式,JavaScript负责交互的逻辑,三者合称"前端三件套"。打个比方:HTML5是房子的钢筋骨架,CSS3是装修与外墙,JavaScript是水电与智能家居——骨架不立则无从装修,只装骨架则无法居住(据MDN Web DocsHTML/CSS/JS入门章节)。
CSS是Cascading Style Sheets(层叠样式表)的缩写,它的历史比很多人想象的更早:1994年,Håkon Wium Lie在CERN首次提出CSS概念;1996年12月,W3C发布CSS1推荐标准;1998年发布CSS2;直到2011年CSS2.1才成为稳定推荐标准(据W3CCSS规范历史资料)。CSS3则是CSS的第三代版本,与CSS1、CSS2的"整体发布"不同,CSS3从1999年起采用模块化设计——把规范拆分成选择器、盒模型、媒体查询、Flexbox、Grid、变换、过渡、动画等几十个独立模块,每个模块有自己的版本号与成熟度,成熟一个发布一个(据W3CCSS Snapshot规范)。
模块化设计带来的直接好处是"边发布边用":比如Flexbox模块早已稳定并全浏览器支持,而某些还在草案阶段的模块则不会被生产环境采用。这也解释了为什么CSS3的学习是"滚动的"——你永远可以先用稳定模块,再跟随新模块的演进。对站长而言,理解这一点能避免一个常见误区:不要把"CSS3"当成一个需要一次性学完的版本号,它是一套持续演进的能力集合。
没有CSS3的世界是什么样?页面只有黑字白底、无圆角无阴影、导航无法毛玻璃、手机端无法自适应。CSS3的普及让"设计语言"成为可能——本站的绿色按钮、卡片圆角、hover上浮效果,全部由CSS3实现。html5+css3基础知识教程的终极目标,就是让读者能独立写出这样的视觉系统。
二、CSS基础语法——选择器{属性:值;}
CSS的语法极其简洁,一条规则由选择器与声明块组成:选择器决定"给谁加样式",声明块用"属性:值;"的键值对决定"加什么样式",属性之间用分号分隔。下面这条规则把页面所有段落文字变成绿色:
/* 这是一条CSS注释,浏览器会忽略它 */
p {
color: #07C160; /* 属性:值; */
font-size: 16px;
}
CSS注释以/*开头、以*/结尾,可以跨行,用于给代码写说明。养成写注释的习惯很重要——三个月后回看自己的CSS,注释是唯一能让你快速想起"当时为什么这么写"的线索。CSS本身不区分大小写,但属性名与取值约定俗成用小写(据MDN Web DocsCSS语法章节)。
CSS进入页面有三种方式(据MDN Web Docs如何给页面添加CSS):第一种是内联样式,直接写在HTML标签的style属性里,如<p style="color:red">,只能作用于单个元素且优先级最高,日常开发应尽量避免;第二种是内部样式表,写在<head>里的<style>标签中,适合单页小项目;第三种是外部样式表,用<link>标签引入独立的.css文件,这是生产环境的推荐方式。
<head>
<link rel="stylesheet" href="style.css">
</head>
为什么推荐外部引入?三个理由:一是结构与表现分离,HTML只管内容、CSS只管样式,团队协作互不干扰;二是浏览器缓存,CSS文件第一次加载后被缓存,后续页面秒开;三是一处修改全局生效,改一个文件就能换掉整个网站的皮肤。本站8个专题页共用一套CSS,正是外部样式表思维在静态站上的简化体现。
还有一个初学者必懂的概念叫"层叠"(Cascading):当多条规则命中同一个元素时,按"重要性→来源→特殊性→书写顺序"依次裁决,后写的规则覆盖先写的(据MDN Web Docs层叠与继承)。"CSS"名字里的"Cascading"(层叠)就是这个机制——它不是BUG,而是CSS最核心的设计思想。
三、选择器大全——从基础到CSS3新增
选择器是CSS与HTML之间的"寻址系统",选择器学得好,样式才能"指哪打哪"。基础选择器有三种:标签选择器直接写元素名(如p、h1),作用于所有同类标签;类选择器以点开头(如.card),可复用、可叠加,是使用频率最高的选择器;ID选择器以井号开头(如#logo),一个页面中ID必须唯一(据MDN Web DocsCSS选择器参考)。
组合选择器解决"精确命中"问题:后代选择器用空格分隔,选中某元素内部的所有后代;子代选择器用>,只选直接子元素;相邻兄弟选择器用+,选中紧挨着的前一个元素后面的元素。属性选择器按属性匹配,CSS3大幅增强了它的能力:[href^="https"]匹配以https开头的链接,[type$="css"]匹配以css结尾,[class*="col-"]匹配包含"col-"的类名(据W3CSelectors Level 3规范)。
伪类描述元素的特殊状态,无需修改HTML即可响应交互::hover鼠标悬停、:focus获得焦点(键盘Tab可触发,是无障碍设计的关键)、:first-child/:last-child首尾子元素。CSS3新增的结构伪类:nth-child(n)堪称"表格斑马纹神器",:nth-child(odd)选中奇数行、:nth-child(3n)每3行一组;:not()否定伪类可排除指定元素(据GeeksforGeeksCSS选择器教程)。
伪元素用::双冒号表示(CSS2时代为单冒号:,CSS3统一为双冒号),它创建"不存在的元素":::before在元素内容前插入内容,::after在末尾插入,常用于装饰性图标、清除浮动、气泡角标等场景,配合content属性使用:
/* 给卡片标题前加一个装饰符号 */
.card h3::before {
content: "◆ ";
color: #07C160;
}
最后必须提一下特殊性(specificity),它决定多条规则冲突时谁赢:ID选择器(100) > 类选择器(10) > 标签选择器(1)(据MDN Web Docs特异性详解)。实战建议:多用类选择器、少用ID,既降低特殊性冲突,又提升复用性——这是无数CSS维护噩梦换来的经验。
选择器小结:一个实用口诀是"标签打底、类为主力、ID点睛、伪类交互、伪元素装饰"。CSS3新增的属性选择器、结构伪类与否定伪类,让"少写class、多靠结构"成为可能,HTML更干净,样式也更好维护。
四、盒模型——content/padding/border/margin
盒模型是CSS布局的地基,所有HTML元素在浏览器眼中都是一个"盒子"。这个盒子从内到外分四层:content内容区(文字、图片所在)、padding内边距(内容与边框之间)、border边框、margin外边距(盒子与外部元素之间的距离)。四层关系可记作"由内而外:内容、内距、边框、外距"(据MDN Web Docs盒模型详解)。
盒模型最经典的坑是宽度计算。默认的box-sizing: content-box下,width:300px只指内容区宽度,padding和border还会额外加宽,导致"设了300px实际占350px",布局立刻错位。解决办法是全局切换为border-box,让width包含padding与border(据MDN Web Docsbox-sizing属性):
/* 本站CSS第一行就是这个全局重置 */
* { margin: 0; padding: 0; box-sizing: border-box; }
MDN官方建议将border-box设为全局默认值,因为"以最终渲染尺寸为准"更符合人类的直觉,计算嵌套布局时不再反复加减内边距(据MDN Web Docsbox-sizing最佳实践)。火烈鸟站长知识库8个页面全部采用这条全局规则,所有卡片、表格的宽度因此"所见即所得"。
与盒模型配套的是display属性,它决定盒子的"显示类型"(据MDN Web Docsdisplay属性):block块级元素独占一行、可设宽高(如div、p、h1);inline行内元素同行排列、不可设宽高(如span、a、strong);inline-block既同行排列又可设宽高(如按钮、图片);none彻底隐藏元素且不占空间。日常布局中,把span等行内元素改成inline-block做"可设宽高的同行元素",是最高频的小技巧之一。
盒模型还有一个被忽视的机制——margin折叠:垂直方向上相邻两个元素的margin不会相加,而是取较大者。比如两个上下排列的块级元素margin分别为20px与30px,最终间距是30px而非50px(据MDN Web Docs外边距折叠)。新手常被这个现象困扰,记住"垂直折叠、水平不折叠"即可,Flexbox与Grid布局中则完全不会发生折叠。
五、文本与字体样式
文本样式是CSS最常用的战场。基础属性全家桶:color文字颜色(支持十六进制#07C160、rgb、hsl等写法);font-size字号(px固定像素、em相对父级、rem相对根元素,浏览器默认字号16px,据MDN Web Docsfont-size);font-weight字重(100-900或normal/bold);line-height行高;text-align对齐(left/center/right/justify);text-decoration装饰线(underline下划线、line-through删除线);text-shadow文字阴影。
行高是排版质量的分水岭。W3C无障碍指南WCAG 2.1的1.4.8条建议:正文段落行距至少为字号的1.5倍,以便阅读障碍人群跟读(据W3CWCAG 2.1规范)。本站正文行距正是1.8,略高于1.5的建议值,长文阅读不累眼。行高建议写无单位数值(如line-height:1.8),它会按当前字号自动缩放,比固定像素更稳健。
字体族用font-family指定,值是一串"字体栈"(font stack),浏览器从左到右找第一个本机存在的字体:
body {
font-family: -apple-system, BlinkMacSystemFont, "SF Pro Display", "PingFang SC", sans-serif;
}
这段字体栈是本站全站的统一写法:优先使用苹果系统字体获得最佳渲染,找不到再降级到苹方(PingFang SC),最后落到系统默认无衬线体。所谓"Web安全字体",是指Arial、Georgia、Times New Roman、Verdana、Courier New等几乎每台电脑都预装的字体(据MDN Web DocsWeb安全字体列表);但Web安全字体终究受限于本机安装情况,想要品牌化字体,就要用@font-face引入自定义字体文件:
@font-face {
font-family: "MyFont";
src: url("myfont.woff2") format("woff2");
}
WOFF2是当前压缩率最高的网页字体格式,全球浏览器支持率已超过97%(据caniuse.comWOFF2兼容性数据),配合font-display属性还能控制字体加载时的显示策略,避免"文字闪烁"(FOUT)。对站长来说,字体策略有一个务实的建议:正文老老实实用系统字体栈,只有品牌标题才考虑@font-face——自定字体文件动辄几百KB,会直接拖慢首屏加载,而加载速度是搜索引擎排名的重要信号。
六、CSS3新特性——圆角、阴影、渐变、过渡、变换与动画
CSS3相对CSS2的飞跃,集中体现在六个高频特性上,它们让"页面好看"从Photoshop搬进了浏览器。先看整体面貌:
圆角 border-radius
一个属性让直角变圆角,卡片、按钮、头像的"圆润感"全部由它实现
阴影 box-shadow
层次感与悬浮感的核心来源,本站卡片的hover上浮效果就是阴影+位移
渐变 gradient
linear-gradient/radial-gradient 一行代码生成平滑过渡的背景色
过渡 transition
让样式变化"动起来",hover上浮、按钮变色都靠它平滑过渡
变换 transform
translate/rotate/scale 2D与3D变换,元素位移、旋转、缩放零成本
动画 animation
@keyframes定义关键帧,loading旋转、弹跳提示等复杂动效的基石
圆角与阴影是最先被大规模采用的CSS3特性:border-radius:18px一个值搞定四角,border-radius:50%直接画出圆形头像;box-shadow的完整语法是水平偏移 垂直偏移 模糊半径 扩散半径 颜色,本站卡片阴影box-shadow:0 2px 12px rgba(0,0,0,.08)即"向下2px、模糊12px的淡黑阴影"。两者在2010年前后获得主流浏览器支持,如今兼容性接近100%(据caniuse.com兼容性数据)。
渐变让背景告别纯色:linear-gradient(90deg, #07C160, #57d9a3)从左到右的绿色渐变,radial-gradient(circle, #fff, #ededed)从中心扩散的径向渐变。渐变本质上是背景图片(background-image)的一种,因此可以和背景色、背景图叠加使用,做按钮、横幅、引导页的质感背景非常方便。
过渡与变换常组合使用,效果是"丝滑":transition: transform .3s ease声明"transform属性变化时用0.3秒缓动过渡",:hover时transform: translateY(-4px)让卡片上浮4px——本站每个卡片的hover效果,正是这两行CSS实现的:
.card {
transition: transform .3s ease, box-shadow .3s ease;
}
.card:hover {
transform: translateY(-4px);
box-shadow: 0 8px 24px rgba(0,0,0,.12);
}
动画是过渡的进阶形态:@keyframes定义关键帧,animation属性声明时长、次数与缓动函数,实现"自动播放"的复杂动效(据MDN Web DocsCSS动画指南):
@keyframes bounce {
0%, 100% { transform: translateY(0); }
50% { transform: translateY(-10px); }
}
.loading { animation: bounce 1s infinite; }
性能上有一条铁律:做动画优先用transform与opacity,这两个属性由GPU合成,不触发重排;而width、height、margin等属性变化会触发layout重排,动画掉帧卡顿(据MDN Web Docs高性能CSS动画)。还有CSS3的毛玻璃效果backdrop-filter: blur(20px),本站顶部导航的磨砂质感正是它实现的,桌面端Chrome/Safari/Edge均已支持(据caniuse.combackdrop-filter兼容性数据)。
七、布局核心——浮动、定位、Flexbox与Grid
布局是CSS3最硬核的部分,也是从"能写样式"到"能搭页面"的分水岭。早期的布局靠浮动(float)硬撑:float让元素向左或向右靠拢,最初设计用于文字环绕图片,后来被用来排列整行布局。浮动的副作用是父容器高度塌陷,于是诞生了"清除浮动"的各种技巧:在父容器末尾加clear:both的占位元素,或用::after伪元素+display:table实现clearfix(据MDN Web Docsfloat与清除浮动)。今天float已不再推荐用于整体布局,它仍是"图文混排"场景的唯一正统方案。
定位(position)负责把元素"钉"到指定位置,五种取值各有用途(据MDN Web Docsposition属性):static默认值,按文档流排列;relative相对自身原位置偏移,不脱离文档流;absolute绝对定位,脱离文档流,相对"最近的定位祖先"定位;fixed相对视口固定,滚动时不动——本站顶部导航正是fixed;sticky粘性定位,滚动到阈值前表现为relative、越过阈值后"粘"在视口顶部,是吸顶菜单的现代解法。记住一句口诀:absolute看祖先、fixed看视口、sticky看滚动。
Flexbox(弹性盒)是CSS3对一维布局的终极答案:它沿一条主轴排列元素,主要控制三件事——flex-direction主轴方向(row横排/column竖排)、justify-content主轴对齐、align-items交叉轴对齐。三行代码即可让子元素水平垂直居中,这是传统布局十年做不到的事:
.center-box {
display: flex;
justify-content: center; /* 主轴居中 */
align-items: center; /* 交叉轴居中 */
}
Flexbox自2012年前后进入主流浏览器,如今全球支持率已超过98%,是响应式与组件布局的事实标准(据caniuse.comFlexbox兼容性数据)。导航栏、按钮组、卡片列表、弹窗,凡是"一排元素"的场景,Flexbox都是首选。
Grid(网格)是CSS3对二维布局的答案,同时管理行与列:grid-template-columns: repeat(3, 1fr)声明三等分三列,gap声明行列间距,grid-area把元素放到指定格子。Grid于2017年3月随Chrome 57与Firefox 52正式发布,主流浏览器全面支持(据MDN Web DocsGrid布局)。Frontend Masters的调研显示,开发者使用Grid比使用Flexbox完成响应式页面布局平均快30%(据Frontend MastersCSS Grid研究报告)。
| 对比项 | Flexbox | Grid |
|---|---|---|
| 维度 | 一维(单方向排列) | 二维(行列同时控制) |
| 典型场景 | 导航栏、按钮组、卡片列表 | 页面整体骨架、复杂网格 |
| 对齐方式 | 主轴justify + 交叉轴align | 行align + 列justify + 区域定位 |
| 浏览器支持 | 超98%(据caniuse) | 2017年后全面支持(据MDN) |
选型建议:单方向用Flexbox,二维骨架用Grid,两者可嵌套混用——例如页面整体用Grid划分"头部/主体/侧栏/底部",每个区域内部分别用Flexbox排内部元素。这不是二选一,而是各取所长。布局的进阶心法:先用Grid定大局,再用Flexbox理细节,最后用margin/padding微调间距,绝大多数页面布局问题都能迎刃而解。
八、响应式设计——媒体查询、视口与移动优先
响应式设计的定义很朴素:同一套HTML,在不同屏幕尺寸下自动调整布局与字号,手机、平板、电脑都能舒服阅读。它由三块基石构成:视口声明、媒体查询、弹性布局。其中<meta name="viewport">是唯一必须写在HTML头部的关键标签,它告诉移动浏览器"按设备宽度渲染页面",没有它手机就会把桌面版缩小显示(据MDN Web Docs视口meta标签):
<meta name="viewport" content="width=device-width, initial-scale=1.0">
媒体查询(@media)是响应式的核心语法,CSS3将它正式纳入规范。它的逻辑是"满足条件才应用样式",断点(breakpoint)即切换布局的屏幕宽度阈值:
/* 默认样式:手机优先,单列布局 */
.feature-grid { display: grid; grid-template-columns: 1fr; }
/* 屏幕宽度 ≥768px(平板)时:两列布局 */
@media (min-width: 768px) {
.feature-grid { grid-template-columns: repeat(2, 1fr); }
}
本站采用的正是768px这个最经典的断点:窄屏下导航折叠为汉堡菜单、特性网格变单列;宽屏下导航展开、网格变双列。常见断点参考:375px手机、768px平板、1024px笔记本、1280px+大屏,实际断点应根据内容决定,而不是照抄设备尺寸(据MDN Web Docs媒体查询最佳实践)。
移动优先(Mobile First)是Google官方推荐的做法:先写手机端最小屏幕的样式,再用min-width媒体查询逐级增强。理由很实在:移动端约束最多、必须精简,先搞定最难的小屏,大屏只是"锦上添花";同时Google搜索以移动端页面为索引基准(据Google开发者文档移动优先索引说明)。注意断点方向:移动优先全部用min-width(往上增强),桌面优先则用max-width(往下降级),两者混用容易逻辑混乱。
进阶技巧是"少写媒体查询":Flexbox的flex-wrap:wrap与Grid的auto-fit/minmax组合,能让容器在宽度变化时自动换行、自动增减列数,很多时候无需@media即可完成响应式。例如grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)),容器宽就多列、窄就少列,自动适配。媒体查询解决"布局形态切换"(单列↔多列),弹性单位解决"尺寸自适应",两者配合才是完整的响应式方案。
九、CSS3实战样式案例——卡片、导航、按钮与表格
理论学完必须落到代码。本节用四个高频组件串起前面所有知识点,这些样式全部来自本站真实页面,打开F12即可对照验证。
案例一:卡片组件。本站卡片风格由四件套构成——白色背景、18px圆角、柔和阴影、hover上浮。核心就是"圆角+阴影+过渡",正文第六节的.card代码就是完整答案。把"圆角、阴影、上浮"三个关键词记住,任何站点的卡片组件都能举一反三。
案例二:毛玻璃导航栏。本站顶部导航position:fixed固定顶部,背景半透明白+backdrop-filter:blur(20px)实现磨砂质感,再配-webkit-前缀兼容Safari(据MDN Web Docsbackdrop-filter)。移动端用"汉堡菜单"收纳8个导航项:一个隐藏的checkbox配合:checked伪类控制菜单展开,纯CSS即可实现,无需一行JavaScript:
.nav-toggle { position: absolute; opacity: 0; }
.nav-toggle:checked ~ .main-nav { display: flex; }
案例三:按钮样式。本站主按钮用微信绿#07C160,白色文字,圆角10px,hover时加深+上浮。完整配方:背景色、文字色、圆角、transition,再加:hover与:focus-visible两个状态——:focus-visible让键盘用户Tab到按钮时显示清晰焦点环,这是无障碍设计的规范要求(据MDN Web Docs:focus-visible):
.btn {
background: #07C160; color: #fff;
padding: 10px 24px; border-radius: 10px; border: none;
transition: transform .3s, box-shadow .3s;
}
.btn:hover { transform: translateY(-2px); box-shadow: 0 6px 16px rgba(7,193,96,.35); }
.btn:focus-visible { outline: 3px solid #07C160; outline-offset: 2px; }
案例四:表格美化。本站表格用border-collapse:collapse合并边框、表头浅灰背景、行间细线分隔,再配合:nth-child(odd)实现斑马纹提升长表格的可读性(据GeeksforGeeksCSS表格样式教程)。长表格在小屏上横向溢出,用外层.table-wrap{overflow-x:auto}容器让表格可以左右滑动而不是撑破页面。
四个案例的共性:都建立在"盒模型+选择器+过渡/变换"三个基础之上。CSS3的实战没有玄学,把基础组件模板练熟,遇到任何页面都能用"积木思维"拼出来。
十、站长实战经验与独特观点
观点一:"先布局,后美化"。初学者最常见的弯路是:颜色阴影还没学就急着给页面"化妆",结果布局一塌糊涂还要返工。正确的顺序是:先用Flexbox/Grid把结构骨架搭稳,尺寸对齐、间距合理,再谈圆角阴影与渐变配色。布局是承重墙,美化是软装——先砌墙,再装修。本站8个页面全部遵循这个流程:结构先行,样式殿后。
观点二:"写CSS之前,先画结构草图"。动手写任何页面之前,先在纸上画出盒模型草图:每个区块的content/padding/border/margin各是多少,父容器怎么排列子元素。据我维护火烈鸟站长知识库的实战观察,布局问题80%源于盒模型没吃透——要么忘切border-box,要么算错margin折叠。草图一画,错位原因立刻显形,代码自然一次写对。
三条落地经验:第一,善用CSS变量(custom properties)做设计令牌,本站把背景色--bg:#ededed、品牌绿--green:#07C160、圆角--radius:18px统一收进:root,改主题只动一处(据MDN Web DocsCSS自定义属性)。第二,F12开发者工具的Computed面板是查盒模型的"X光机",点任意元素即可看四层尺寸,配合Styles面板实时改样式、即时看效果。第三,规范选择器层级:全部用类选择器、控制特殊性在"10"这一档,团队协作时几乎不会出现"我改不动你的样式"的尴尬。
2026年AI编程工具深度参与前端开发已成常态,"人提需求、AI写码、人验证优化"是主流工作流之一。但AI生成的CSS同样需要人把关:AI常给出夸张的阴影、漏掉box-sizing重置、忽视移动端断点。会用CSS3基础的人,能一眼看出AI输出的布局错在哪里、怎么改——这恰恰是html5+css3基础知识教程最大的长期价值:它不是被AI淘汰的技能,而是驾驭AI的"审查能力"。
十一、CSS3常见问题解答(FAQ)
以下8个问题是初学者提问频率最高的,答案均与正文内容一致,便于快速查阅:
Q1:html5和css3什么关系?
html5与css3是前端三件套中的两件:html5负责网页内容的结构,css3负责视觉样式,JavaScript负责交互逻辑。两者同属现代Web标准,html5规范本身不含样式能力,样式完全由CSS3承担,实际开发中总是搭配使用(据MDN Web Docs)。
Q2:css3和css有什么区别?
css是层叠样式表(Cascading Style Sheets)的统称,css3是其第三代版本。css3采用模块化设计,各模块独立演进,相比css2新增了圆角、阴影、渐变、过渡、动画、2D/3D变换、Flexbox、Grid等大量新特性(据W3CCSS Snapshot规范)。
Q3:学css3要多久?
掌握基础语法与常用属性约1-2周,能独立完成页面布局约1个月。推荐顺序:先语法、再选择器、后盒模型、再布局(Flexbox/Grid)、最后响应式,边学边写最快,切忌只看教程不动手。
Q4:flex和grid选哪个?
flexbox是一维布局,适合导航栏、按钮组等单方向排列;grid是二维布局,适合页面整体骨架与复杂网格,Frontend Masters调研显示Grid完成响应式布局平均快30%。两者可嵌套混用,并非互斥(据Frontend Masters)。
Q5:css怎么引入页面?
三种方式:内联style属性、页面内部style标签、外部link引入。推荐外部样式表,实现结构与表现分离,便于维护并利用浏览器缓存。注意内联样式优先级最高,会覆盖其他来源的同名属性。
Q6:什么是响应式设计?
响应式设计是让网页在不同屏幕尺寸下自动调整布局的技术,核心是viewport声明配合@media媒体查询。Google推荐的移动优先策略:先写手机端样式,再用min-width媒体查询逐级增强(据Google开发者文档)。
Q7:box-sizing是什么?
box-sizing决定元素宽度如何计算:content-box(默认)的width只算内容区,padding和border会额外加宽;border-box把padding和border算进width。MDN建议全局设置border-box,布局尺寸更好控制(据MDN Web Docs)。
Q8:css动画怎么做?
两种方式:transition做状态过渡(如hover时卡片上浮),@keyframes定义关键帧配合animation做自动播放的复杂动画。性能优先用transform与opacity做动画,避免用width/height等触发重排的属性(据MDN Web Docs)。