01-CSS基础知识
一、选择器
1.1、单一选择器
(1)、id选择器
语法:HTML元素以id属性来设置id选择器,以 "#" 来定义。
例如:#para1 {}
(2)、类选择选择器
语法:HTML元素以class属性来设置类选择器,以 "." 来定义。
例如:.center {}
(3)、标签选择器
语法:HTML元素以元素名称来设置标签选择器。
例如:h1 {}
(4)、通配符选择器
语法:与文档中的任何元素匹配,以 "*" 来定义。
例如:* {}
1.2、复合选择器
(1)、后代选择器
语法:父级 某层子级 {属性:属性值}
例:div p {} 选择div下所有层的p标签
(2)、子代择选择器
语法:父级>子级 {属性:属性值}
例:div>p {} 选择div的下一级p标签
(3)、交集选择器
语法:标签类名 {属性:属性值}
例:p.one {} 选择即是p标签又是.one类
(4)、并集选择器
语法:选择器1, 选择器2, 选择器3 {属性:属性值}
例:p, .one, #two {} 选择p标签和.one类和#two类
(5)、链接伪类选择器
顺序尽量颠倒,按照 lvha 的顺序
| a:link | 未访问的链接 |
|---|---|
| a:visited | 已访问的链接 |
| a:hover | 鼠标悬停链接上 |
| a:active | 鼠标点击链接时 |
(6)、属性选择器
| 选择符 | 描述 |
|---|---|
| E[att] | 选择具有att属性的E元素 |
| E[att='val'] | 选择具有att属性且值为val的E元素 |
| E[att^='val'] | 选择具有att属性且值为val开头的E元素 |
| E[att$='val'] | 选择具有att属性且值为val结尾的E元素 |
| E[att*='val'] | 选择具有att属性且值包含val的E元素 |
(7)、结构伪类选择器
| 选择符 | 描述 |
|---|---|
| E:first-child | 匹配父元素中的第一个元素E |
| E:last-child | 匹配父元素中的最后一个元素E |
| E:nth-child(n) | 匹配父元素中的第n个元素E |
| E:first-of-type | 指定类型E的第一个 |
| E:last-of-type | 指定类型E的最后一个n |
| E:nth-of-type(n) | 指定类型E的第n个 |
| 示例: |
ul li:first-child {
background-color: pink;
}
(8)、伪元素选择器
| 选择符 | 描述 |
|---|---|
| ::before | 在原始内部的前面插入内容 |
| ::after | 在原始内部的后面插入内容 |
示例:
/*before和after创建一个元素属于行类元素,且必须有content属性。*/
div::before {
content: '';
}
1.3、继承 层叠 优先级
(1)、优先级
| 表达式或示例 | 说明 | 权重 | |
|---|---|---|---|
| !important | div | 无穷 | |
| 嵌入式央视 | style = "" | 1000 | |
| ID选择器 | #aaa | 100 | |
| 类选择器 | .aaa | 10 | |
| 标签选择器 | h1 | 元素的tagName | 1 |
| 属性选择器 | [title] | 详见这里 | 10 |
| 相邻选择器 | selecter + selecter | 拆分为两个选择器再计算 | |
| 兄长选择器 | selecter ~ selecter | 拆分为两个选择器再计算 | |
| 亲子选择器 | selecter > selecter | 拆分为两个选择器再计算 | |
| 后代选择器 | selecter selecter | 拆分为两个选择器再计算 | |
| 通配符选择器 | * | 0 | |
| 各种伪类选择器 | 如:link, :visited, :hover, :active, :target, :root, :not等 | 10 | |
| 各种伪元素 | 如::first-letter,::first-line,::after,::before,::selection | 1 |
(2)、层叠
优先级就近原则,同权重情况下样式定义最近者为准;
(3)、继承
- 字体系列属性:font-family,font-weight,font-size,font-style。
- 文本系列属性:text-indent,text-align,line-height,word-spacing,letter-spacing,text-transform,color。
- 元素可见性:visibility
- 列表布局属性:list-style(list-style-type、list-style-image)
- 光标属性:cursor
二、标签样式
2.1、背景(background)
| Property | 描述 | 属性值 |
|---|---|---|
| background | 简写属性。 | |
| background-attachment | 背景图像是否固定或者随着页面滚动。 | fixed、scroll、inherit |
| background-color | 设置元素的背景颜色。 | |
| background-image | 把图像设置为背景。 | |
| background-position | 设置背景图像的起始位置。 | |
| background-repeat | 设置背景图像是否及如何重复。 | repeat-x/y、no-repeat |
2.2、字体(font)
| Property | 描述 | 属性值 |
|---|---|---|
| font | 在一个声明中设置所有的字体属性 | |
| font-family | 指定文本的字体系列 | |
| font-size | 指定文本的字体大小 | |
| font-style | 指定文本的字体样式 | |
| font-weight | 指定字体的粗细。 |
2.3、文本(text)
| Property | 描述 | 属性值 |
|---|---|---|
| color | 设置文本颜色 | |
| line-height | 设置行高 | |
| text-align | 对齐元素中的文本 | |
| text-decoration | 向文本添加修饰 | |
| text-indent | 缩进元素中文本的首行 | |
| text-shadow | 设置文本阴影 |
2.4、链接(link)
| Property | 描述 |
|---|---|
| a:link | 未访问链接 |
| a:visited | 已访问链接 |
| a:hover | 鼠标移动到链接上 |
| a:active | 鼠标点击时 |
2.5、列表(ul)
2.6、表格(table)
2.7、边框(border)
| Property | 描述 | 属性值 |
|---|---|---|
| border-style | 边框样式 | dotted、dashed、solid、double... |
| border-width | 边框宽度 | |
| border-color | 边框颜色 |
三、布局
3.1、盒子模型
3.1.1、介绍
所有HTML元素可以看作盒子,在CSS中,"box model"这一术语是用来设计和布局时使用。CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:边距,边框,填充,和实际内容。

不同部分的说明:
- Margin(外边距) - 清除边框外的区域,外边距是透明的。
- Border(边框) - 围绕在内边距和内容外的边框。
- Padding(内边距) - 清除内容周围的区域,内边距是透明的。
- Content(内容) - 盒子的内容,显示文本和图像。
3.1.2、margin
(1)、属性值
| 值 | 说明 |
|---|---|
| auto | 设置浏览器边距。 这样做的结果会依赖于浏览器 |
| length | 定义一个固定的margin(使用像素,pt,em等) |
| % | 定义一个使用百分比的边距 |
(2)、简写
margin属性可以有一到四个值。
- margin:25px 50px 75px 100px:上、右、下、左的边距。
- margin:25px 50px 75px:上、左右、下的边距。
- margin:25px 50px:上下、左右的边距。
- margin:25px:4个边距
3.1.3、padding
(1)、属性值
| 值 | 说明 |
|---|---|
| length | 定义一个固定的填充(像素, pt, em,等) |
| % | 使用百分比值定义一个填充 |
(2)、简写
和margin属性一样书写。
3.1.4、box-sizing
语法:box-sizing: content-box|border-box|inherit;
属性值:
- content-box:在宽度和高度之外绘制元素的内边距和边框。
- border-box:元素设定的宽度和高度决定了元素的边框盒。
3.2、浮动(float)
3.2.1、定义
3.2.2、属性值
| 属性 | 描述 | 值 |
|---|---|---|
| clear | 指定不允许元素周围有浮动元素。 | left right both none inherit |
| float | 指定一个盒子(元素)是否可以浮动。 | left right none inherit |
3.2.3、特性
- 脱离标准普通流控制,浮动到指定位置,浮动的盒子不在保留预先的位置
- 浮动元素会在一行显示并且顶部对齐
- 浮动元素具有行内块元素特性
3.2.4、清除浮动
方式一:额外标签(隔墙法)
<style>
.clear {
clear: both;
}
</style>
<div class="box">
<div class="clear"></div><!-- 这个新增的盒子要求必须是块级元素不能是行内元素 -->
</div>
方式二:父级添加overflow
.box {
/* 清除浮动 */
overflow: hidden;
}
方式三:父级添加:after伪类元素
.clearfix:after {
content: "";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
.clearfix {
/* IE6、7 专有 */
*zoom: 1;
}
方式四:父级添加双伪元素
.clearfix:before,.clearfix:after {
content: "";
display: table;
}
.clearfix:after {
clear: both;
}
.clearfix {
*zoom: 1;
}
3.3、定位(Position)
3.3.1、定义
3.3.2、分类
(1)、static
HTML 元素的默认值,即没有定位,遵循正常的文档流对象。静态定位的元素不会受到 top, bottom, left, right影响。
(2)、relative
相对定位元素的定位是相对其正常位置。移动相对定位元素,原本所占的空间不会改变。
(3)、absolute
绝对定位的元素的位置相对于最近的已定位父元素,如果元素没有已定位的父元素,那么它的位置相对于,定位使元素的位置与文档流无关,因此不占据空间。
(4)、fixed
元素的位置相对于浏览器窗口是固定位置。即使窗口是滚动的它也不会移动,Fixed定位使元素的位置与文档流无关,因此不占据空间。
(5)、sticky
粘性定位的元素是依赖于用户的滚动,在 position:relative 与 position:fixed 定位之间切换。行为就像 position:relative; 而当页面滚动超出目标区域时,它的表现就像 position:fixed;,它会固定在目标位置。
3.3.3、定位堆叠顺序
z-indent = 1;
3.4、显示
3.4.1、visibility
语法: visibility : inherit | visible | collapse | hidden
参数:
- inherit:继承上一个父对象的可见性
- visible:对象可视
- hidden:对象隐藏
注意:hidden隐藏某个元素,元素仍需占用与未隐藏之前一样的空间。
3.4.2、display
语法:display : none | inline | block | inline-block | ...
参数:
- none: 隐藏对象。
- inline: 指定对象为内联元素。
- block: 指定对象为块元素。
- inline-block: 指定对象为内联块元素。(CSS2)
注意:与visibility属性的hidden值不同,其不为被隐藏的对象保留其物理空间
3.4.3、Overflow
CSS overflow 属性可以控制内容溢出元素框时在对应的元素区间内添加滚动条。
| 值 | 描述 |
|---|---|
| visible | 默认值。内容不会被修剪,会呈现在元素框之外。 |
| hidden | 内容会被修剪,并且其余内容是不可见的。 |
| scroll | 内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。 |
| auto | 如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容。 |
| inherit | 规定应该从父元素继承 overflow 属性的值。 |

浙公网安备 33010602011771号