有el template render mount()生成el 判断有无渲染函数render(),如果有渲染函数,先执行渲染函数,渲染函数>template 判断是否存在template 如果存在template,直接将template解析成抽象语法树,生成渲染函数,执行渲染函数。 如果不存在template,会获取el.outerHTML赋值给template,将template解析成抽象语法树,由抽象语法树生成渲染函数,执行渲染函数,生成虚拟dom 伪类选择器: a:hover {color:red} input:focus ul li:first-child table tr:nth-child(2n) input:checked+span button:disable 伪元素
p::before p ::after 必须设置content: 一个在元素的前面插入内容,一个在元素的后面插入内容:生成的内容不解析到dom树中,只有视觉呈现。 display属性 display:block可以设置成块级元素。块级元素独占一行,可以设置宽高,垂直间距。 incline样式不独占一行,不换行,不可以设置宽高,宽高由内容决定。 incline-block不独占一行,不换行,可以设置宽高,垂直间距。 多个子元素设置成incline-block会造成间隙,因此需要将父元素的font-size设置成0,同时给子元素的font-size重新设值。 flex设置浮动 align-items水平居中 标准盒模型content-box,IE模型border-box: 标准盒模型总宽度:content+padding.right+padding.left+border.right+border.left IE模型:设置的宽度包含了padding和border,不再进行额外的累加。 在div下设置行高:单行文本设置行高,如果行高等于容器高度,会在容器内垂直居中。 div中的height是容器的高度,incline-height是文本行的高度,影响文本布局。incline-height:1.5相对于自身font-size的1.5倍 incline-height:150%,相对于父容器font-size的1.5倍 incline-height:24px不推荐,不容易设置响应式布局。 父容器设置relative: 子容器为absolute,那么子容器设置宽高的百分比是相对于父容器的content+padding。 子容器不为absolute,那么设置百分比相对于父容器的宽高,如果是标准盒模型,就是width:content+padding+border 如果是IE模型,就是width 在块级元素下,执行margin:auto才生效,同一个元素必须设置宽高,margin:0 auto必须设置同个元素的宽 margin:auto只能实现水平居中,不能实现垂直居中。 现代浏览器可以使用display:flex或者绝对定位+margin:auto 在设置绝对定位的容器下,不一定要设置宽高,top bottom left right transform:translate(-50%,-50%) margin:-100px 0 0 -100px