CSS 大海:核心知识点梳理
什么是 CSS?
- 一个属性与值组成的键值对称为声明。
示例:color: red; - 多个声明组合在一起,用大括号
{}包裹,构成声明块。 - 声明块要作用到具体的 HTML 元素上,需要通过选择器来指定目标元素。
- 多条 CSS 规则(选择器 + 声明块)共同组成一张样式表。
层叠(Cascading)
-
当多个规则作用于同一个元素时,浏览器根据优先级决定最终应用哪条样式。
-
优先级计算方式按“个十百千”位:
- 元素选择器(如
p):1(个位) - 类选择器、属性选择器、伪类(如
.class、[type="text"]、:hover):10(十位) - ID 选择器(如
#id):100(百位) - 行内样式(
style=""):1000(千位)
- 元素选择器(如
-
!important优先级最高,但应避免滥用。
示例:
html 预览 <div id="main" class="container"> <p>这是一个段落</p> </div>对应样式:
css 编辑 p { color: blue; } .container p { color: red; } #main p { color: green; }最终文字颜色为绿色,因为
#main p优先级最高。
盒模型与布局细节
-
margin 重叠:相邻块级元素的上下 margin 会合并,取其中较大的值。
-
小数单位 px:浏览器通常会进行亚像素渲染,但在某些设备上可能被舍入处理。
-
inline 元素限制:
inline元素(如<span>)不具备完整盒模型,不支持transform。- 解决方案:将其设为
display: inline-block或使用position: absolute。
CSS 选择器类型与用法
1. 属性选择器
css
编辑
[data-category="科幻"] { background-color: #007bff; }
[title^="入门"] h2::before { content: "🌟"; }
[attr=value]:精确匹配属性值[attr^=value]:属性值以指定字符串开头
2. 兄弟与后代选择器
A + B:选择紧接在 A 后的第一个同级 B 元素(直接相邻兄弟)A ~ B:选择 A 后所有同级的 B 元素(通用兄弟).parent > child:仅选择直接子元素.parent child:选择所有后代元素
3. 伪类选择器
css
编辑
button:hover { background-color: yellow; }
input:focus { border: 2px solid blue; }
li:not(:last-child) { margin-bottom: 10px; }
li:nth-child(odd) { background-color: lightgray; }
常用伪类包括::hover、:focus、:checked、:not()、:nth-child() 等。
4. :nth-child() 与 :nth-of-type() 的区别
:nth-child(n):选中父元素下的第 n 个子元素,且该元素必须是指定类型:nth-of-type(n):选中父元素下第 n 个指定类型的元素,忽略其他类型
示例:
html 预览 <div class="container"> <h1>标题</h1> <p>段落1</p> <div>其他</div> <p>段落2</p> <p>段落3</p> </div>
.container p:nth-child(5):选中第 5 个子元素(是<p>)→ 段落3.container p:nth-of-type(3):选中第 3 个<p>→ 段落3
5. 伪元素
用于在元素前后插入装饰性内容:
css
编辑
.more::before {
content: '';
/* ... */
}
.more::after {
content: "\2192";
/* ... */
}
常见伪元素:::before、::after、::selection
样式来源与作用范围
- 外联样式:通过
<link>引入外部 CSS 文件 - 内嵌样式:写在
<style>标签中 - 行内样式:直接写在 HTML 元素的
style属性中(优先级高,但不推荐频繁使用)
示例优先级对比:
css 编辑 .text p { color: red; } /* 10 + 1 = 11 */ div p { color: blue; } /* 1 + 1 = 2 */ #main p { color: green; } /* 100 + 1 = 101 */ .container #main p { color: orange; } /* 10 + 100 + 1 = 111 */最终颜色由优先级最高的规则决定。
CSS 如同一片广阔的大海,掌握其基础规则与细节技巧,方能自如航行于网页开发的浪潮之中。