# css常规问题
# 垂直居中的方案
- 弹性盒
- display:flex
- align-items:center
- justify-content:center
- translate
- position: absolute
- top: 50%
- left: 50%
- transform: translate(-50%,-50%)
- 相对定位
- position: absolute
- top/right/bottom/left:0
- margin:auto
- table+vertical-align
- display: table-cell
- vertical-align: middle
# 清除浮动和BFC
- 清除浮动原理
清除浮动代码
.clearfix:after{ content:''; diaplay:block; clear:both } //兼容ie低版本 .clearfix{ *zoom:1 }主要属性=>clear:both 规定在左右两侧不允许浮动元素
display:block clear只能在块级元素上起作用
visibility:hidden/height:0 只要content的值为空,写不写都无所谓
- BFC定义
- 块级格式化上下文,是一个独立的渲染区域
- 让处于 BFC 内部的元素与外部的元素相互隔离,使内外元素的定位不会相互影响。
- 触发BFC条件
- 根元素
- position: absolute/fixed
- display: inline-block / table
- float 元素
- ovevflow !== visible
- BFC规则
- 属于同一个 BFC 的两个相邻 Box 垂直排列
- 属于同一个 BFC 的两个相邻 Box 的 margin 会发生重叠
- BFC 中子元素的 margin box 的左边, 与包含块 (BFC) border box的左边相接触 (子元素 absolute 除外)
- BFC 的区域不会与 float 的元素区域重叠
- 计算 BFC 的高度时,浮动子元素也参与计算
- 文字层不会被浮动层覆盖,环绕于周围
- BFC应用
- 阻止margin重叠
- 可以包含浮动元素 —— 清除内部浮动 (清除浮动的原理是两个div都位于同一个 BFC 区域之中)
- 自适应两栏布局
- 可以阻止元素被浮动元素覆盖
- 其子元素的float/clear/vertical属性将失效
# css常用布局
- 盒模型包括怪异盒模型
- 定位
- 流式布局
- 浮动布局
- flex
- grid布局
# css权重
- CSS权重
- 是指样式的优先级,有两条或多条样式作用于一个元素
- 权重高的那条样式对元素起作用
- 权重相同的,后写的样式会覆盖前面写的样式。
- 权重的等级
- !important,加在样式属性值后,权重值为10000
- 内联样式,如:style="",权重值为1000
- ID选择器,如:#content,权重值为100
- 类,伪类和属性选择器,如:content、:hover权重值为10
- 标签选择器和伪元素选择器,如:div/p/:before权重值为1
- 通用选择器( * ) 、子选择器(>)、相邻选择器(+)、同胞选择器(~)、权重值为0
# px/em/rem的区别
- px (pixel,像素):相对长度单位。像素px是相对于显示器屏幕分辨率而言的
- em(相对长度单位,相对于当前对象内文本的字体尺寸):em是相对长度单位。相对于当前对象内文本的字体尺寸(参考物是父元素的font-size)如当前父元素的字体尺寸未设置,则相对于浏览器的默认字体尺寸
- 特点: em的值并不是固定的/em会继承父级元素的字体大小
- rem(root em,根em)
- vue中使用postcss-px2rem
- 自动将vue项目中的px转换为rem
- 因为 postcss-plugin-px2rem 这个插件 配置选项上有 exclude 属性,它可以配置 是否对 某个文件夹下的所有css文件不进行从px到rem的转换。
- rem是CSS3新增的一个相对单位,rem是相对于HTML根元素的字体大小(font-size)来计算的长度单位
- 优点:只需要设置根目录的大小就可以把整个页面的成比例的调好
- rem兼容性:除了IE8及更早版本外,所有浏览器均已支持rem
- em与rem的区别:
- rem是相对于根元素(html)的字体大小,而em是相对于其父元素的字体大小
- 如何使 1rem=10px?在设置HTML{font-size:62.5%;}即可
- 补充内容:
- vw是相对视口(viewport)的宽度而定的,长度等于视口宽度的1/100
- vh是相对视口(viewport)的高度而定的,长度等于视口高度的1/100
- vm其中最小的那个被均分为100单位的vm
# 网站变灰--滤镜
- filter:grayscale(100%)
# 文本溢出
- 单行文本溢出省略
- overflow:hidden(文字超出限定宽度,则隐藏超出的内容)
- white-space:nowrap(设置文字在一行显示,不能换行)
- text-overflow:ellipsis(规定当文本溢出时,显示省略符号来代表被修剪得文本)
- 多行文本溢出省略(只适用于webkit内核)
- -webkit-line-clamp:2(用来限制在一个块元素现实的文本行数)
- display:-webkit-box(和1结合使用,将对象作为弹性伸缩盒子显示)
- -webkit-box-orient:vertical(和1结合使用,设置或检索伸缩对象的子元素的排列方式)
- overflow:hidden
- text-overflow:ellipsis
# 伪类/伪元素
- 伪元素
- ::fist-line为某个元素的第一行文字添加使用样式
- ::first-letter为某个元素的文字的首字母或第一个字添加使用样式
- ::before在某个元素之前插入一些内容
- ::after在某个元素之后插入一些内容
- ::selection对光标选中的元素添加样式
- 伪类
- :link
- 选取未访问过的超链接元素,只要点过的就会变色,从而标记哪个链接是访问过的,这个属性就是用来表示没访问过的链接
- :visited
- 与前者相反,用来标记哪个链接是已经访问过的,防止重复点击
- :hover
- 选取鼠标悬停的元素,经常用在PC端,当鼠标放在一个元素上面时的样式,移动端基本用不到
- :active
- 选取点中的元素,希望按钮有反馈的时候 可以用它来标记操作反馈的样式
- 并不只可以用在按钮上
- :focus
- :empty
- 选取没有子元素的元素,比如选择空的span
- 要注意,就算有空格的化也不能算空,不会被这个伪类选中
- :checked
- 选取勾选状态的input元素,只对radio/checkbox生效
- :disabled
- 选取禁用的表单元素
- :first/last/nth-child/:nth-last-child(an+b)
- :only-child(选取唯一子元素)
- :not
- 该伪类本身没有优先级
- 优先级由括号里面的内容决定
- :link
# 重绘和回流
- 重绘:指当前页面的元素不脱离文档流,简单的进行样式的变化,如修改颜色背景,浏览器绘制样式等
- 回流:指处于文档流中DOM的尺寸大小,位置或者某些属性发生变化时,导致浏览器重新渲染部分或者全部文档
- 回流比重绘消耗性能开支更大
← ES6常规问题 css3与html5 →