一、CSS是什么?为什么需要它?
CSS(Cascading Style Sheets)就像网页的"化妆师",负责给HTML骨架添加皮肤和造型。如果说HTML是毛坯房,CSS就是精装修。通过本指南,你将掌握让网页变美的核心技巧!
CSS三大核心特性
-
层叠性:多个样式规则共同作用
-
继承性:子元素继承父元素样式
-
优先级:
!impor
二、CSS基础语法与选择器
1. 基本语法结构
选择器 { 属性: 值; 属性: 值; }
示例:
h1 {
color: blue;
font-size: 24px;
}
2. 六大核心选择器
选择器类型 | 示例 | 使用场景 |
---|---|---|
元素选择器 | p | 修改所有段落样式 |
类选择器 | .nav-item | 复用样式(最常用) |
ID选择器 | #header | 唯一元素样式 |
后代选择器 | div p | 嵌套元素定位 |
伪类选择器 | a:hover | 交互状态样式 |
通用选择器 | * | 全局样式重置 |
三、核心CSS属性详解
1. 文本样式三剑客
p {
font-family: "Microsoft Yahei", sans-serif; /* 字体栈 */
font-size: 16px; /* 推荐使用rem单位 */
color: #333; /* 十六进制颜色值 */
text-align: center; /* 对齐方式 */
line-height: 1.6; /* 行高建议用无单位值 */
}
2. 盒子模型(重点!)
.box {
width: 200px; /* 内容区宽度 */
height: 150px;
padding: 20px; /* 内边距 */
border: 2px solid #000; /* 边框 */
margin: 30px; /* 外边距 */
box-sizing: border-box; /* 推荐使用!保持元素总尺寸 */
}
3. 定位系统
定位方式 | 特点 | 示例代码 |
---|---|---|
static(默认) | 正常文档流 | position: static; |
relative | 相对自身定位 | position: relative; top: 10px; |
absolute | 相对于最近定位父元素 | position: absolute; left: 0; |
fixed | 相对于视口固定 | position: fixed; top: 0; |
sticky | 混合定位(新版特性) | position: sticky; top: 20px; |
四、现代布局技术:Flex vs Grid
1. 弹性盒子(Flexbox)
适用场景:一维布局(横向或纵向)
.container {
display: flex;
justify-content: space-between; /* 主轴对齐 */
align-items: center; /* 交叉轴对齐 */
}
.item {
flex: 1; /* 弹性比例 */
}
2. 网格布局(Grid)
适用场景:二维复杂布局
.container {
display: grid;
grid-template-columns: 1fr 2fr; /* 列宽比例 */
gap: 20px; /* 间距 */
}
.item {
grid-column: 1 / 3; /* 跨列 */
}
布局方案对比
Float布局 | Flex布局 | Grid布局 | |
---|---|---|---|
维度 | 一维 | 一维 | 二维 |
响应式 | 困难 | 中等 | 优秀 |
浏览器支持 | 全部 | IE10+ | IE部分支持 |
推荐使用场景 | 传统页面 | 组件级布局 | 复杂页面布局 |
五、让网页动起来:CSS动画
1. 过渡动画(Transition)
.button {
transition: all 0.3s ease-in-out;
}
.button:hover {
transform: scale(1.1);
background-color: #ff4757;
}
2. 关键帧动画(Animation)
@keyframes bounce {
0% { transform: translateY(0); }
50% { transform: translateY(-20px); }
100% { transform: translateY(0); }
}
.loading {
animation: bounce 1s infinite;
}
六、实战案例:三栏布局实现
方案1:Flex实现
<div class="container">
<aside class="left">左侧边栏</aside>
<main>主要内容</main>
<aside class="right">右侧边栏</aside>
</div>
<style>
.container {
display: flex;
height: 100vh;
}
.left, .right {
flex: 0 0 200px;
background: #f0f0f0;
}
main {
flex: 1;
padding: 20px;
}
</style>
案2:Grid实现
.container {
display: grid;
grid-template-columns: 200px 1fr 200px;
height: 100vh;
gap: 20px;
}
七、常见问题解答
Q1:margin塌陷怎么办?
-
方案1:父元素添加
overflow: hidden
-
方案2:使用Flex/Grid布局
-
方案3:使用
padding
替代margin
Q2:如何垂直居中元素?
/* Flex方案(推荐) */
.container {
display: flex;
align-items: center;
justify-content: center;
}
/* Grid方案 */
.container {
display: grid;
place-items: center;
}
Q3:如何实现响应式布局?
-
使用媒体查询
@media
-
使用相对单位(rem、%)
-
结合Flex/Gird的自动换行特性
八、学习路线建议
-
先掌握基础选择器和盒子模型
-
重点练习Flex布局
-
逐步学习Grid布局
-
最后研究动画效果
-
推荐调试工具:Chrome开发者工具 > Elements > Styles