html语义化是html5以后提出来的,在以前的html版本中,页面是经过一大堆的div+css堆砌起来的。当css加载失败后,页面很是丑陋,并且没有所谓的权重。好比文字强调,css加载失败后,和通常的文字没有任何区别,并且对于搜索引擎也不友好,搜索引擎没法得知页面的具体什么内容是重要的,等等。css
主要是针对两方面,内容语义化,代码语义化。html
主要围绕几个主要的标签,好比说 p(表明段落) li(表明列表) h1-h6(标题,搜索引擎会以这些标题对页面进行建议的分析) strong em(强调) header footer aside article(这写html5新增标签,可帮助咱们代码更加语义化)html5
标准模型实际盒子宽 = css盒子宽度+padding-left+padding-right+border-left-width+border-right-widthbash
标准模型实际盒子高 = css盒子高度+padding-top+padding-bottom+border-top-width+border-bottom-widthapp
说白了,盒子是在固有宽度的范围内往外撑ide
ie模型真实盒子宽 = css盒子宽度- padding-left - padding-right - border-left-width - border-right-width布局
ie模型真实盒子高 = css盒子高度 - padding-top - padding-bottom - border-top-width - border-bottom-widthpost
说白了,盒子是在固有宽度的范围内往内缩flex
通常而言,pc页面用标准模型比较合适,移动端页面受制于屏幕,用ie模型更加合适ui
box-sizing:border-box :将盒子模型转化为ie模型
box-sizing:content-box :将盒子模型转化为标准模型
这两个css属性都在ie9以上才可支持
若是有不少css用于同一个元素上面,选择器的优先级就会很重要。若是存在相同的css属性,优先级高的会覆盖掉以前的css属性。
那选择器的优先级如何计算呢?
只要记住一下几点:
若是存在多个css应用在同一个元素,就使用上面的规则。
好比 #app .content p{} 它的权重:100+10 +1 = 111
若是没有兼容要求,尽情使用flex吧。习惯了flex,就会发现float什么的都是浮云。
// 代码示意
// html
<div id="app">
<div id="left"><?div>
<div id="right"></div>
</div>
// css
#app{
width:100%;
display:flex;
}
#left{
width:100px
}
#right{
flex:1
}复制代码
看一下flex的兼容性
// 代码示意
// html
<div id="app">
<div id="left"><?div>
<div id="right"></div>
</div>
// css
#app{
width:100%;
}
#left{
width:100px;
float: left;
}
#right{
margin-left: 100px
}复制代码
// 代码示意
// html
<div id="app">
<div id="left"><?div>
<div id="right"></div>
</div>
// css
#app{
width:100%;
position:relative;
}
#left{
width:100px;
position: absolute;
}
#right{
margin-left: 100px
}复制代码
// html
<div id="app">
<div id="left"><?div>
<div id="right"></div>
</div>
// css
#app{
width:100%;
}
#left{
width:100px;
float:left
}
#right{
overflow: hidden;
}复制代码
// html
<div id="app">
<div id="left"><?div>
<div id="right"></div>
</div>
// css
#app{
width:100%;
}
#left{
width:100px;
float:left
}
#right{
float:left;
width: calc(100% - 100px);
}复制代码
calc的兼容性:
其实1.8.2 1.8.3 1.8.4 都是使用bfc特性。