文/小魔女css
HTML元素分为行内、块状、行内块元素三种。html
块元素和行内块元素能够设置宽高前端
行内元素不能够,高度由内容撑开web
三者是能够经过display属性任意转换的面试
使用demochrome
div {
-ms-transform: rotate(0);
-webkit-transform: rotate(0);
-moz-transform: rotate(0);
-o-transform: rotate(0);
transform: rotate(0);
}
复制代码
「CSS前缀自动补全:autoprefixer」浏览器
❝已知: margin:20px; border:10px; padding:10px; width:200px; height:50px;❞markdown
标准盒模型:
1\. 占用宽:
margin*2+padding*2+border*2+width
= 20*2+10*2+10*2+200 = 280
2\. 占用高:
margin*2+padding*2+border*2+height
= 20*2+10*2+10*2+50 = 130
3\. 盒子实际宽度:
padding*2+border*2+width
= 10*2+10*2+200 = 240
4\. 盒子实际高度
padding*2+border*2+height
= 10*2+10*2+50 = 90
复制代码
怪异盒模型:
1\. 占用宽:
margin*2+width
= 20*2+200 = 240
2\. 占用高:
margin*2+height
= 20*2+50 = 90
3\. 盒子实际宽度:
width = 200
4\. 盒子实际高度
height = 50
复制代码
「IE8及更早版本不兼容问题解决方案:在HTML页面声明 」网络
❝BFC(块状格式化上下文,独立的盒子,布局不受外部影响,可是若是同一个BFC中,同级块状元素的margin-top和margin-bottom会重叠)❞ide
只要元素知足下面的任一条件,都会触发BFC特征。
解决问题:
❝元素被当成行内元素排版时,元素直接的空白符会被浏览器处理,根据white-spack的处理方式(默认是normal,合并多余空白),Html代码在回车换行时被转成一个空白符,在字体不为0的状况下,空白符占据必定宽度,因此inline-block元素之间就出现了空隙。❞
复现
<ul>
<li>首页</li>
<li>登录</li>
<li>资源</li>
<li>社区</li>
<li>帮助</li>
</ul>
复制代码
解决办法:
.clearfix:after { display: block; height: 0; visibility: hidden; clear: both; content: ''; }
.clearfix{ //IE6模式下 zoom:1; }
.clearfix:before, .clearfix:after { display: table; content: ''; } .clearfix:after { clear: both; } .clearfix { zoom: 1; //兼容IE6下 }
不一样级优先级:
同一级别:
「优先级相同时会发生什么? 样式被覆盖」
「normalize.css是一个css reset的替代方案。」
ul>li:nth-child(2n+1) {
background-color: red;
}
ul>li:nth-child(2n) {
background-color: yellow;
}
复制代码
ul>li:first-child {
border-top: none;
}
复制代码
本文使用 mdnice 排版