# CSS 常见只知识点
🐴
# 选择器都有那些
css中的选择器主要有:
- 全局选择器:
* - Id选择器:
# - 类选择器:
. - 元素(标签)选择器:
div - 兄弟选择器:
~ - 相邻选择器:
+ - 子选择器:
> - 后代选择器:
div p - 群组选择器:
div,p,span - 属性选择器:
input[type=text] - 伪类选择器: 选择第一个li
li:first-child{}, 选择第几个lili:nth-child{}, 不包含li:not(){}
# CSS样式继承优先级
!important > 内嵌样式 > 内联样式 > id选择器 > 类选择器 > 元素选择器 > 通配符选择器 > 浏览器默认样式
# CSS样式引入有几种方式
- 内联样式:
<div style="height:100px"></div> - 内嵌样式:
<style> .div{height:100px} </style> - 外联样式:
<link rel="stylesheet" href="../index.css" /> - 导入样式:
@import("./index.css")
有三种样式:内联样式 > 内嵌样式 > 外联样式 = 导入样式
# link和@import的区别
- 本质:
link属于XHTML标签, 而@import完全是css提供的一种方式 - 兼容性:
@import在IE5以上才识别,link没有兼容性问题 - 加载顺序:
link引入的css会在页面被加载的同时加载,而@import会等页面完全被下载完才会加载 - 可修改性:
link引入的样式可以把被js动态修改,而@import不可以被js修改
# CSS3新增伪类
:active:root选择文档的根元素,等同于 html 元素:empty选择没有子元素的元素:checked选择被选中的表单元素:nth-of-type(odd)选择某个奇数的元素,even为偶数3n为三的倍数:last-of-type选择最后一个元素
# CSS3中的伪元素
::after在选中元素中创建一个后置的子节点::before在选中元素中创建一个前置的子节点:first-line选择元素中的第一行::first-letter选取文字块首行首个字符::selection选取字段的占位符文本(提示信息)
# 清楚浮动
- 方法一: 给父元素 一个固定高度
<div style="height:200px;">
<div style="height:200px;float:left"></div>
<div style="height:200px;float:left"></div>
</div>
<div> 该div不受影响</div>
- 方法二: 使用带clear属性的空元素
<div>
<div style="height:200px;float:left"></div>
<div style="height:200px;float:left"></div>
<div style="clear:both"></div>
</div>
<div> 该div不受影响</div>
- 方法三: 使用
::after为元素
<div class="clearfix">
<div style="height:200px;float:left"></div>
<div style="height:200px;float:left"></div>
</div>
<div> 该div不受影响</div>
.clearfix::after{
content: "";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
- 方法四: 使用
overflow为元素
<div style="overflow:hidden;">
<div style="height:200px;float:left"></div>
<div style="height:200px;float:left"></div>
</div>
<div> 该div不受影响</div>
# CSS上下左右居中
<div class="parentDiv" style="height:100vh;">
<div class="content" style="width:200px;height:200px;">需要居中的元素</div>
</div>
- 方法一: 使用
flex布局
.parentDiv{
display:flex;
justify-content: center;
align-items: center;
}
- 方法二: 使用
flex布局
.parentDiv{
position:relative;
}
.content{
position:relative;
left: 50%;
top: 50%;
margin-left: -100px;
margin-top: -100px;
}
- 方法三: 使用
dispaly:table, 这个方法需要修改一下html结构
<div class="warpper">
<div class="parentDiv">
<div class="content">需要居中的元素</div>
</div>
</div>
.wrapper{
width:100%;
height:100vh;
display: table;
background-color: aqua;
}
.parentDiv{
width:100%;
height:100vh;
display: table-cell;vertical-align: middle;
background-color: rgb(18, 48, 48);
}
.content{
width:200px;
height:200px;
margin:0 auto;
background-color: blueviolet;
}
# CSS 盒模型
images
标准的盒模型 = 内容(content) + padding + border + margin低版本IE盒模型 = 内容(content+ padding + border) + margin
类似下面的图


# CSS中的BFC
BFC (Block Fromating Context) 简称块级格式化上下文,是Web页面的可视CSS渲染的一部分,是块盒子的布局过程发生的区域,也是浮动元素与其他元素交互的区域。
BFC的特点以及作用:详情请见这里
# 为什么要初始化CSS
因为浏览器的兼容问题,每个浏览器之间的默认初始样式是不一样的,为了统一
css的初始样式,我们需要初始化CSS提高
css代码质量,避免写大量重复的css样式。有利于维护页面样式
# display 属性有那些
block此元素将显示为块级元素inline-block行内块元素inline此元素会被显示为内联元素none此元素不会被显示flex该元素内以flex布局table此元素会作为块级表格来显示(类似<table>),表格前后带有换行符。table-cell此元素会作为一个表格单元格显示(类似<td>和<th>)inherit规定应该从父元素继承display属性的值。
# position 属性
relative相对定位absolute绝对定位fixed浮动定位static默认值inherit从父元素继承position定位
# img图片出现空白
解决方法
- 给
img变成块元素img{display:block} - 给
img添加img{ vertical-align:middle } - 给
img父元素添加div{ font-size:0; } - 给
img父元素添加div{ line-height:0; }
# rem em px 单位区别
rem是CSS3新增的一个相对单位,相对于根元素HTNLem是相对长度单位, 相对于父元素的字体尺寸px是相对于显示器平米分辨率而言的。vh vw相对于视框的宽度,视框宽度高度默认100vh 100vw
# style标签写在body后与body前有什么区别?
写在head标签中利于浏览器逐步渲染(resources downloading->CSSOM+DOM->RenderTree(composite)->Layout->paint)。
写在body标签后由于浏览器以逐行方式对html文档进行解析,当解析到写在尾部的样式表(外联或写在style标签)会导致浏览器停止之前的渲染,等待加载且解析样式表完成之后重新渲染,在windows的IE下可能会出现FOUC现象(即样式失效导致的页面闪烁问题)
← 知识点 Vue2.x常见知识点 →