两行代码解决
body设置display:flex
div设置:margin:auto.
他们是盒型模型中的内边距和外边距,padding是施加给自身的,margin是施加给外部的。
vm不管父元素的大小,百分比是根据父元素的大小计算的。百分比有继承关系,vm只和设备的宽度有关系。
行内元素的大小由内容决定,设置宽高没有用。块级元素宽度有继承关系。
谷歌最小支持12px,再小就没有用了。可以通过transform:scale(0.5)进行缩放。
就是用来装页面上的元素的矩形区域,从内到外的关上有content,padding,border,margin,以及height和width,标准的盒子模型width和height是content的大小。在IE盒子模型中width表示content+padding+border。
1.link属于html标签,而@import是css提供的。
2.页面被加载时,link会同时被加载,而@import引用的css会等页面加载结束后加载。
3.link是html标签,不需要考虑兼容性,而@import只有IE5以上才能识别
传统的布局方案,是基于盒状模型,依赖display+position+float属性 ,他对于一些特殊布局非常不方便,比如,垂直居中就不容易实现。
简单的可以分为容器属性和元素属性
容器的属性:
决定主轴的方向:flex-direction
决定换行规则:flex-wrap
水平轴对齐方式:justify-content
垂直轴线方向:align-items
元素的属性
排列顺序:order
放大比例:flex-grow
缩小比例:flex-shrink
块级格式化上下文,用于清除浮动,防止margin重叠。下列元素会生成BFC:
float不为none的元素
position为fixed和absolute的元素
display为inline-block,table-cell的元素
overflow不为visible的元素
1.clear:both
2.overflow:hidden
css3边框如border-radius,box-shadow等;
css3背景如background-size,background-origin等
css3 2D,3D转换如transform等
在选择器方面增加了first-of-type,nth-child等选择器
id选择器,class选择器,标签选择器,伪元素选择器,伪类选择器等
同一元素引用了多个样式时,排在后面的样式属性的优先级高;
样式选择器的类型不同时,优先级顺序为:id选择器>class选择器>标签选择器
带有!important标记的样式属性的优先级最高
display:none;
visibility:hidden
1.利用flex布局
父元素设置为display:flex,子元素设置为margin:auto或者align-items为center,justify-content为center,
2.利用表格布局
父元素设置display:table,子元素设置为dispaly:table-cell
3.利用固定宽高
父元素固定宽高,利用定位及设置子元素margin值为自身的一半。
1.父元素dispaly:flex,align-items:center
2.父元素table布局,子元素设置vertical-align为center。
calc用户动态计算长度值,任何长度值都可以使用calc()函数计算,需要注意的是,运算符前后都需要保留一个空格。
line-height一般是指布局里面一段文字上下行之间的高度,是针对字体来设置的。height一般是指容器的整体高度。
重排是dom的变化影响到了属性的宽高,浏览器重新计算元素的几何属性,其他元素也会受影响,浏览器需要重新构造渲染树。
重绘是浏览器将守到影响的部分重新绘制在屏幕上。
引起重排重绘的原因有:添加或者删除可见的DOM元素;元素尺寸位置的改变;浏览器页面初始化;浏览器窗口大小发生改变,重排一定导致重绘,重绘不一定导致重排。
减少重排重绘的方法有:使用csstext,cssname一次性改变属性。
visibility:hidden,该元素隐藏起来了,但不会改变页面布局
display:none,将元素隐藏起来,并且会改变页面布局。
相对定位relative:如果对一个元素进行相对定位,他将出现在它所在的位置上。然后,可以通过设置垂直或水平位置,让这个元素相对于他的起点进行移动,会导致他覆盖其他框。
绝对定位的元素的位置相对于最近的已定位父元素,如果元素没有已定位的父元素,那么它的位置相对于html,absolut定位使元素的位置和文档流无关,因此不占据空间,absolute定位的怨毒和其他元素重叠。
less,sass等