一、CSS 优先级学习总结
CSS 优先级决定了样式冲突时哪个规则最终生效,是布局中关键的基础知识点。
1. 基础优先级规则
-
核心特性:不同选择器优先级不同,高优先级样式会覆盖低优先级。
-
优先级公式(从低到高):
继承 < 通配符选择器 < 标签选择器 < 类选择器 < id选择器 < 行内样式 < !important
▶ 示例:html
预览
<div class="box" id="box" style="color: pink;">测试优先级</div>
- 行内样式(color: pink)优先级高于 id(#box: orange)、类(.box: blue)和标签(div: green !important)。但因 div 标签使用
!important
,最终文字颜色为绿色。
- 行内样式(color: pink)优先级高于 id(#box: orange)、类(.box: blue)和标签(div: green !important)。但因 div 标签使用
-
注意事项:
✦!important
需写在属性值后、分号前(如color: red !important;
)。
✦ 无法提升继承样式的优先级,继承始终是最低优先级。
✦ 实际开发中尽量少用!important
,避免样式难以维护。
2. 复合选择器权重计算
当多个复合选择器作用于同一元素时,需通过权重叠加判断优先级。
-
权重公式:以
(行内样式数, id数, 类/伪类数, 标签数)
四组数值计算,无进位规则。
▶ 示例:css
div #one { /* (0,1,0,1) */ color: orange; } .father .son { /* (0,0,2,0) */ color: skyblue; }
div #one
包含 1 个 id 和 1 个标签,权重高于.father .son
(2 个类),最终颜色为 orange。
-
比较规则:
① 先比第一级(行内样式数),再比第二级(id 数),依此类推。
② 若所有数值相同,后声明的样式生效(层叠性)。
3. 典型案例与注意点
-
案例练习:
✦ 权重计算:#father p.c2
权重为(0,1,1,1)
,高于div.c1 p.c2
的(0,0,2,2)
,因 id 数(1)优先于类数(2)。
✦ 层叠性:当两个选择器权重相同(如div #box3
和#box1 div
均为(0,1,0,1)
),后写的样式生效。 -
开发建议:
✦ 尽量精准选择元素,避免多个选择器同时作用于同一标签。
✦ 调试时通过浏览器开发者工具查看 computed 样式,快速定位优先级问题。
二、PxCook 基础使用总结
PxCook 是前端开发中读取设计图数据的高效工具,核心操作如下:
- 导入设计图:打开软件 → 拖拽设计图 → 新建项目,支持 PSD、 Sketch 等格式。
- 常用快捷键:
- 放大 / 缩小:
Ctrl + +
/Ctrl + -
- 移动视图:按住
空格
拖动鼠标
- 放大 / 缩小:
- 核心工具:
- 量尺寸:点击元素直接获取间距、宽高数据。
- 吸颜色:拾取像素颜色值(如
#ff6b6b
),支持切换 RGB、HSL 模式。
- 数据导出:切换至 “开发” 界面,点击元素自动生成 CSS 代码(如边框、内边距等)。
下载地址:PxCook 官方下载(需根据系统选择版本)。
三、盒子模型学习总结
CSS 盒子模型是布局的核心,每个元素都可视为由多层结构组成的矩形盒子。
1. 盒子模型结构
- 四部分组成:
✦ 内容区(content):通过width/height
设置大小,默认显示元素内容。
✦ 内边距(padding):内容与边框之间的距离,通过padding
设置。
✦ 边框(border):盒子边缘,通过border-width/style/color
或简写属性设置(如border: 1px solid #000
)。
✦ 外边距(margin):盒子与其他元素的间距,通过margin
设置。
2. 关键属性与计算
-
内容区:
css
div { width: 200px; height: 200px; } /* 仅设置内容宽高 */
-
边框细节:
✦ 单方向设置:border-top: 5px dashed red;
✦ 边框会增加盒子实际尺寸:
实际宽度 = 内容宽度 + 左右边框宽度
▶ 例:width: 300px; border: 10px solid #000;
→ 实际宽度为320px
。 -
内边距与盒子尺寸:
✦ 单方向设置:padding-left: 20px;
✦ 四值规则:padding: 上 右 下 左
(如padding: 10px 20px 30px 40px
)。
✦ 终极计算公式:
实际宽度 = 左边框 + 左内边距 + 内容宽度 + 右内边距 + 右边框
▶ 例:需求盒子总尺寸300x300px
,边框10px
,内边距20px
,则内容宽度需设为300 - 10×2 - 20×2 = 240px
。 -
外边距与布局问题:
✦ 垂直方向 margin 会合并(取最大值),水平方向正常叠加。
✦ 子元素 margin-top 可能导致父元素塌陷,解决方法:
✔ 给父元素加padding-top
或border-top
✔ 设置父元素overflow: hidden
✦ 行内元素垂直方向 margin/padding 无效,仅水平方向有效。
3. CSS3 盒模型优化
通过 box-sizing: border-box
开启自动内减模式,浏览器会自动计算边框和内边距,内容区尺寸为设置的 width/height
。
css
div { box-sizing: border-box; width: 300px; border: 10px solid #000; padding: 20px; }
/* 总尺寸固定为 300px,无需手动计算内容宽度 */
四、实战案例总结
以 “新闻列表” 为例,布局思路如下:
- 整体结构:外层容器
.news
居中,设置边框和内边距。 - 标题栏:底部边框线,通过
padding-bottom
控制间距。 - 列表项:去除默认列表符号(
list-style: none
),用border-bottom
分隔条目,padding-left
控制文字缩进。 - 响应式处理:通过
box-sizing: border-box
确保内边距和边框不影响整体尺寸。
关键代码:
css
.news {
width: 500px;
margin: 50px auto; /* 水平居中 */
padding: 42px 30px 0; /* 内边距:上42,左右30,下0 */
box-sizing: border-box; /* 自动内减 */
}
.news li {
border-bottom: 1px dashed #ccc; /* 虚线分隔线 */
padding-left: 28px; /* 左侧内边距 */
line-height: 50px; /* 垂直居中 */
}
学习心得
- 优先级:初期需通过案例反复练习权重计算,理解
!important
的慎用原则。 - 盒子模型:重点掌握边框、内边距对盒子尺寸的影响,熟练使用
box-sizing
简化计算。 - 工具应用:PxCook 需结合设计图多实操,提升取色、测距效率。
后续需通过更多项目练习,加深对优先级冲突和盒子模型细节的理解,逐步形成规范的布局思维