display属性共有4个值:
blcok:块级元素
inline-block:行内块级元素
inline:行内元素
none:隐藏元素,不占据空间
1.块级元素
常见的块级元素有div,p,ul,ol,li,h1~h6等
块级元素会默认占满父元素的宽度且独占一行
<div style="border:1px solid red;width: 400px;"> <p style="background-color: aquamarine">尽可能的占满父元素的宽度</p> </div>
2.行内元素
常见的行内元素有span,img,a,input,button,textarea、select等,他的宽度完全由内容撑开,不能为其设置宽高。
除非父元素一行放满了,行内元素不然不会换行
行内元素受父元素的text-align的影响,父元素设置text-align:center,行内元素会居中显示
行内元素受父元素的white-space的影响,父元素设置white-space:nowrap,行内元素将不会换行
3.行内块级元素
行内块级元素可以像跨级元素一样设置宽高
行内块级元素如果不设置宽高的话,他的大小默认由内容或者说子元素撑开。它的特性介于块级元素与行内元素之间
行内块级元素一样受父元素的text-align的影响,父元素可以设置父元素的text-align来决定他的对齐方式
行内块级元素素受父元素的white-space的影响,父元素设置white-space:nowrap,行内块级元素将不会换行
<div style="text-align: center"> <span>行内元素</span> </div> <div style="text-align: center"> <span style="display: inline-block">行内块级元素</span> </div>
4.实际运用
在轮播图中,最外层的容器宽度是固定的,且overflow:hidden
第二层容器ul的宽度则是它子元素的宽度之和,因为子元素的个数不确定,所以不能在css中设定确定的宽度值
通常我们都是利用js计算出它子元素的宽度之和再赋予ul元素,今天这个例子我们不用js,利用inline-block宽度由子元素撑开的特性,让ul的宽度由子元素撑开
设置ul的样式display:inline-block,同时为了让所有的li标签不换行,设置white-space: nowrap
为了能让ul的white-space: nowrap生效,li标签需要设置display:inline-block
要消除代码换行造成的间隔,可以让父元素的字体大小设置为0,,然后子元素里面再设置字体大小即可
<div style="width: 800px;overflow: hidden;"> <ul style="display: inline-block;white-space:nowrap;font-size: 0px;"> <li style="display: inline-block;font-size: 16px;">inline-block</li> <li style="display: inline-block;font-size: 16px;">inline-block</li> <li style="display: inline-block;font-size: 16px;">inline-block</li> <li style="display: inline-block;font-size: 16px;">inline-block</li> </ul> </div>