CSS
关于 CSS 的一些总结, 持续更新中……
常用 CSS(面试常问点)

CSS 选择器及其优先级
| 选择器 | 格式 | 优先级、权重 |
|---|---|---|
| id选择器 | #id | 100 |
| 类选择器 | .className | 10 |
| 属性选择器 | a[ref='ccc'] | 10 |
| 伪类选择器 | li:last-child | 10 |
| 标签选择器 | a | 1 |
| 伪元素选择器 | div:after | 1 |
| 相邻兄弟选择器 | h1+p | 0 |
| 子选择器 | div>a | 0 |
| 后代选择器 | div a | 0 |
| 通配符选择器 | * | 0 |
对于选择器的优先级:
- 标签选择器、伪元素选择器:1
- 类选择器、伪类选择器、属性选择器:10
- id 选择器:100
- 内联样式:1000
注意事项:
- !important 声明的样式的优先级最高;
- 如果优先级相同,则最后出现的样式生效;
- 继承得到的样式的优先级最低;
- 通用选择器(*)、子选择器(>)和相邻同胞选择器(+)并不在这四个等级中,所以它们的权值都为 0 ;
- 样式表的来源不同时,优先级顺序为:内联样式 > 内部样式 > 外部样式 > 浏览器用户自定义样式 > 浏览器默认样式。
content 属性
css 中 content 属性,是专门用于伪元素 after/before 伪元素选择器上,用来生成内容插入。最常见的是图标,还有清除浮动。
如何让 chrome 支持 10px 的文字?
font-size: 12px;
-webkit-transform: scale(0.84);
font-size: 20px;
-webkit-transform: scale(0.5);
清除浮动方法
常用的清除浮动方法:
- 父级 div 设置 height
- 添加空标签
<div></div>然后设置样式 clear:both - 利用伪类选择器 :after 添加样式
:after { display: block; clear :both; content: '';} - 父级设置
overflow: hidden
px、em、rem、rpx
三者的区别:
- px 是固定的像素,一旦设置了就无法因为适应页面大小而改变。
- em 和 rem 相对于 px 更具有灵活性,他们是相对长度单位,其长度不是固定的,更适用于响应式布局。
- em 是相对于其父元素来设置字体大小,这样就会存在一个问题,进行任何元素设置,都有可能需要知道他父元素的大小。而 rem 是相对于根元素,这样就意味着,只需要在根元素确定一个参考值。
- rpx 是微信小程序中使用的单位,相当于把屏幕分成了 750 份
- rem 是基于 根元素 html 设置的 font-size 参考值为基准来进行转换,默认为 16px,即默认 1rem = 16 / 16
使用场景:
- 对于只需要适配少部分移动设备,且分辨率对页面影响不大的,使用 px 即可 。
- 对于需要适配各种移动设备,使用 rem,例如需要适配 iPhone 和 iPad 等分辨率差别比较挺大的设 备
提示
除此之外,还有 vh vw calc()
- vh 代表视窗高度,1vh = 1%的视窗高度
- vw 代表视窗宽度,1vw = 1%的视窗宽度
- calc() 是 css 中的计算函数,可以使用四则运算,也可以对 百分比、px、em、rem 计算
- 注意的是,在使用运算符时,运算符两侧得有空格留出
link 和 @import 区别
首先两者都是引入外部 css 的方式,主要区别是:
- link 是 Xhtml 标签,除了可以加载 css 外,还可以定义 RSS 等事务;
- @import 只属于 css, 用于引用外部 css
- 兼容性,@import 是 css 2.1 引入的
- link 支持使用 js 去控制改变样式,@import 是不支持的