CSS选择器的优先级
CSS选择器的优先级: 内联 > ID选择器 > 类选择器 > 标签选择器
link和@import区别
- link属于XHTML标签,而@import属于CSS提供的
- 页面被加载时,link会同时被加载,而@import引用的CSS要等页面加载完 再加载
- @import兼容IE5以上,link没兼容问题
CSS有哪些方式隐藏页面元素
- opacity: 0,将透明度设置成0,看起来像是隐藏,但是依然占据空间,可 以点击
- background: transparent,透明背景
- visibility: hidden, 和opacity类似,占据空间,但是不能点击
- display: none 不占据空间,会产生回流和重绘(flow和repaint回流必定会引起 重绘,但重绘不一定引起回流)
- height:0,overflow:hidden 不占空间,不可点击
px、em、rem的区别
- px: 绝对单位,页面按照精准像素显示
- em: 相对单位,基准为父节点的字体的大小
- rem: 相对单位,基准为html的字体大小
- vw, vh: 视口宽度和高度
CSS的几种定位方式
- static: 正常文档流定位,块级元素从上到下排列,行内元素从左到右排列,top、right、bottom、left、z-index属性 无效
- relative: 相对定位,相对于文档流的位置,和绝对定位absolute配合使用
- absolute: 绝对定位,绝对定位的元素的位置相对于最近的已定位父元素,如果元素 没有已定位的父元素,那么它的位置 相对于<html>
- sticky: 粘性定位,基于用户的滚动位置来定位。粘性定位的元素是依赖于用户的滚动,在 position:relative 与 position:fixed 定位之间切换
清除浮动有哪些方法
- 给父元素设置固定高度(只适用高度固定的布局)
- 浮动元素后加空的div,并且设置clear:both(当页面浮动元素较多,需要加多的空div)
- 父级元素通过伪类after和zoom,代码如下
.clear-float { zoom: 1; } .clear-float:after { content: ""; display: block; height: 0; clear: both; visibility: hidden; } - 给父元素设置overflow:hidden(不能和position配合使用,因为超出的尺寸的会被隐藏)
如何理解css sprites(雪碧图),以及它的优缺点
将一些小图标整合到一起后的图片称为雪碧图,通过操作CSS的background属性,控制背景的位置以及大小,来展示需要的部分
- 优点:通过减少页面的请求数量来加快网页加载速度
- 缺点:雪碧图维护成本较高,每次改动都需要动到整个图片
对盒模型的理解
参考:牛译伟的文章 盒模型由conten、padding、border、margin组成,分为标准盒模型和怪异盒模型。当元素设置为box-sizing:content-box时,将采用标准模式解析计算(默认模式);当元素设置为box-sizing:border-box时,将采用怪异模式解析计算
- 标准盒模型:标准盒模型中width指的是内容区域content的宽度;height指的是内容区域content的高度。标准盒模型下 盒子的大小= content + border + padding + margin。

- 怪异盒模型:怪异盒模型中的width指的是内容、边框、内边距总的宽度(content + border + padding);height指的 是内容、边框、内边距总的高度。怪异盒模型下盒子的大小=width(content + border + padding) + margin。

对BFC的理解
- 定义:BFC(块级格式化上下文)是Web页面中盒模型布局的CSS渲染模式,是一个独立的布局环境,其中的元素布局是不受外界的 影响。它具有以下特性
- 内部的Box会在垂直方向上一个接一个的放置
- 垂直方向上的距离由margin决定(解决边距重叠问题))
- bfc的区域不会与float的元素区域重叠
- 计算bfc的高度时,浮动元素也参与计算(解决高度坍塌问题)
- bfc就是页面上的一个独立容器,容器里面的子元素不会影响外面元素
- 创建BFC:
- 浮动元素,float不为none
- position的值为absolute或者fixed
- display 值为inline-block、table-cell、table-caption、flex的其中一个
- overflow值为hidden、auto、scroll的其中一个
- body 根元素
伪类和伪元素的区别
- 定义:
- 伪类:是一个以冒号(:)作为前缀,被添加到选择器末尾的关键字,用于当已有元素 处于的某个状态时,为其添加对应的样式
:active —— 样式添加到正在被激活的元素 :focus —— 样式添加到获得焦点的元素 :hover —— 样式添加到鼠标悬浮的元素 :link —— 样式添加到未被访问过的链接 :visited —— 样式添加到已经访问过的链接 :first-child —— 样式添加到第一个子元素 :lang —— 样式添加到指定lang语言的标签 - 伪元素用于创建一些不在文档树中的元素,并为其添加样式
:first-letter —— 样式添加到文本首字母 :first-line —— 样式添加到文本首行 :before —— 样式添加到元素之前 :after —— 样式添加到元素之后
- 伪类:是一个以冒号(:)作为前缀,被添加到选择器末尾的关键字,用于当已有元素 处于的某个状态时,为其添加对应的样式
- 区别:
- 伪类的效果需要元素选择器加入伪类才能改变元素状态,而伪元素需要操作元素来改变状态。
- 伪类可以同时运用多个,而伪元素只能一次用一个。
- 在CSS3中,伪类用一个冒号:,伪元素用两个冒号::,为兼容性考虑需要使用一个冒 号的格式。
对媒体查询的理解
- 定义: 媒体查询可以让我们根据设备显示器的特性(如视口宽度、屏幕比例、设备方向:横向或纵向)为其设定CSS样式,最常 用的查询是处理视口的宽度和高度。
- 媒体类型:all(适用于所有设备)、print(适用于打印模式)、screen(用于屏幕)、speech(用于语音合成器)
- 媒体查询常用于以下目的
- 有条件的通过 @media 和 @import at-rules 用CSS 装饰样式
- 用media属性为<style>, <link>, <source>和其他HTML元素指定特定的媒体类型
<link rel="stylesheet" src="styles.css" media="screen" /> - 使用Window.matchMedia() 和MediaQueryList.addListener() 方法来测试和监控媒体状态
- 使用媒体查询例子
/* 兼容移动端 */ <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1, minimum-scale=1, user-scalable=no, shrink-to-fit=no"> /* 安装了chrome,使用webkit引擎,没有的话,优先用最新的IE渲染模式 */ <meta http-equiv="X-UA-Compatible" content="ie=edge, chrome=1"> @media screen and (max-width: 375px) { body { background-color: red; } } @media screen and (-webkit-min-device-pixel-ratio: 3) { .flexBox li::after { -webkit-transform: scaleY(0.33333); transform: scaleY(0.33333); } }