css的display属性是前端开发中很是常见的属性,本文简单介绍下其中比较经常使用的属性值,即block、inline和inline-block。css
HTML组件中呈现一片空白区域的组件均可当盒模型(box modal),而CSS则提供了display属性来控制盒模型的外观。前端
1. block类型(块)浏览器
这种盒模型的组件默认占据一行,容许经过CSS设置宽带、高度。布局
例如:<div .../>
、<p ../.>
、<form../>
、<table../
、<h1>
到<h6>
、<ul../>
等。spa
display:block
block 元素会独占一行,多个block元素会各自新起一行。默认状况下,block元素宽度会自动填满其父元素的宽度。
block元素能够设置width,height属性。块级元素及时设置了宽度,仍然是独占一行。
block元素能够设置margin和padding属性。code
2. inline类型(内联)orm
这种盒模型的组件不会占据一行,不能够调整宽度、高度。对象
例如:<span../>
、<a../> <strong../>
、<em../>
、<label../>
、<input../>
、<select../>
、<textarea../>
、<img../>
、<br../>
。开发
CSS为display属性提供了block、inline两个属性值,能够改变HTML组件默认的盒模型。input
display:inline
inline元素不会独占一行,多个相邻的行内元素会排列在同一行里,直到一行排列不下,才会新换一行,其宽度随元素的内容而变化。
inline元素设置width,height均无效。
inline元素的margin和padding属性,水平方向的padding-left、padding-right、margin-left、margin-right都产生边距效果,但竖直方向上的padding-top、padding-bottom、margin-top和margin-bottom不会产生边距效果。
3. inline-block类型
CSS还提供了一种inline-block盒模型,这种盒模型时inline模型和block模型的综合体:inline-block盒模型的元素不会占据一行,同时也支持width、height指定指定宽带及高度。而且容许它的左边和右边出现其余内容。
display:inline-block
简单来讲就是将对象呈现为inline对象,可是对象的内容做为block对象呈现。以后的内联元素会被排列在同一行内。好比能够给一个link(<a>
元素)inline-block属性,使其既有block的宽度高度特性、又具备inline的可同行性。
应用场合
不少时候咱们必须让一些块元素并排显示,通常会想到浮动,可是块元素浮动设边距的时候在IE下会出现加倍的BUG,因此不少时候不得不把这个块元素套在一个内联元素里,而后给这个内敛元素浮动和边距。经过设置:display:inline-block,就将对象呈递为内联对象,但对象的内容做为块对象呈递。旁边的内联对象会被呈递在同一行内,容许空格。
说明:
block元素能够包含block元素和inline元素,但inline元素只能包含inline元素。要注意这个是一个大概的说法,每一个特定的元素能包含的元素也是特定的,因此具体到个别元素上,这条规律是不适用的。好比p元素,只能包含inline元素,而不能包含block元素。
通常来讲,能够经过display:inline和display:block的设置来改变元素的布局级别。
兼容性问题:IE六、IE7不支持inline-block,因此在IE中对内联元素使用display:inline-block理论上IE是不识别的,但会在IE下触发layout,从而使内联元素拥有了display:inline-block属性的表象。
解决IE六、IE7兼容性的方法:
首先设置inline-block触发块元素,具备了layout的特性,而后设置display:inline使块元素呈现内联元素,此时layout的特性不会消失。
直接设置display:inline,使用zoom:1触发layout。
兼容全部浏览器的方法是:
.selector { display : inline-block; *display : inine; *zoom:1; }
本文只列出了display常见的三个属性,除此以外,display的属性值还有:inline-table、和表格相关的盒模型、list-item、run-in等。