单位
vw、vh、vmin、vmax
1.vw:1vw等于视口宽度的1%。
2.vh:1vh等于视口高度的1%。
3.vmin:选取vw和vh中最小的那个。
4.vmax:选取vw和vh中最大的那个。
px、em、rem
px是固定的像素,一旦设置了就无法因为适应页面大小而改变。
em和rem相对于px更具有灵活性,他们是相对长度单位,意思是长度不是定死了的,更适用于响应式布局。
em相对于自身或父元素的font-ssize大小
当元素自身有font-size属性时,1em大小即为font-size的值,没有时使用父元素font-size的值
rem相对于根元素(html)font-size的值。
如果没有设置,浏览器默认字体大小为16px有个别浏览器为14px,浏览器可显示的最小字体为12px,要显示更小字体,可通过css缩放去设置
// 页面设置rem代码
var fun = function (doc, win) {
var docEl = doc.documentElement,
resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
recalc = function () {
var clientWidth = docEl.clientWidth;
if (!clientWidth) return;
//这里是假设在750px宽度设计稿的情况下,1rem = 100px;
//可以根据实际需要修改
docEl.style.fontSize = (clientWidth /750)*100 + 'px';
};
if (!doc.addEventListener) return;
win.addEventListener(resizeEvt, recalc, false);
doc.addEventListener('DOMContentLoaded', recalc, false);
}
fun(document, window);
export default fun;
BFC
Block formatting content 块级格式化上下文, BFC是一个独立的布局环境,其中的元素布局是不受外界的影响,并且在一个BFC中,块盒与行盒(行盒由一行中所有的内联元素所组成)都会垂直的沿着其父元素的边框排列
如何创建bfc
1、float的值不是none。
2、position的值不是static或者relative。
3、display的值是inline-block、table-cell、flex、table-caption或者inline-flex
4、overflow的值不是visible
bfc 布局规则
内部的Box会在垂直方向,一个接一个地放置。
Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生重叠。
每个盒子(块盒与行盒)的margin box的左边,与包含块border box的左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如此。
BFC的区域不会与float box重叠。
BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。反之也如此。
计算BFC的高度时,浮动元素也参与计算。
BFC作用
1.利用BFC避免margin重叠。(两个不同bfc 上下margin 不重叠)
2.自适应两栏布局(左边浮动,右边新建bfc实现右边自适应宽度)
3.清楚浮动。(父盒子不设置高度,子元素浮动,通过将父盒子激活bfc,可以防止父盒子塌陷)