display模式

“块”模式(block)与“行内”模式(inline)

对于页面中的可视元素,浏览器通常有两种渲染方式:

为了让大家观察到这两类模式的特点,在下面的例子中,我们为元素设置一个背景色以及外边距:

这是一个很长很长很长很长很长很长很长很长很长很长很长很长段落,整个段落就是一个块标记

这是一个很长很长很长很长很长很长很长很长很长很长很长很长段落,整个段落就是一个块标记

行内行内行内行内行内行内行内行内行内行内行内行内行内行内行内行内行内行内行内

对于以下几类标记,浏览器会默认以“块模式”渲染:

<div><p><h1><h2><h3><h4><h5><h6><ul><li>...

对于以下几类标记,浏览器会默认以“行内”模式渲染:

<a><span><em>...

在CSS中设置display模式

除了浏览器默认的模式外,在CSS中还可以通过设置display属性强制浏览器按其他模式来渲染元素。在设置display模式时,应该注意以下几点:

上面几种只介绍了几种常见的模式,要进一步了解display属性,请参考MDN

试试通过CSS改变元素的display属性

试试通过CSS改变一个元素的display属性,然后看看会发生什么变化。注意,浏览器默认会按照block模式渲染div标记。

<div class="displaydemo">一个元素</div> <div class="displaydemo">一个元素</div> <div class="displaydemo">一个元素</div> <div class="displaydemo">一个元素</div> <div class="displaydemo">一个元素</div> div.displaydemo{display:inline;}

水平排列的导航栏

提示与注意事项:

<ul class="demo_menu"> <li><a href="http://www.163.com">网易</a></li> <li><a href="http://www.hnu.edu.cn">湖南大学</a></li> <li><a href="http://www.baidu.com">百度</a></li> <li><a href="http://www.qq.com">腾讯</a></li> </ul>

“弹性”模式(flex)

除了block与inline外,flex也是一种非常有用的模式。利用flex,可以控制一组元素标记的宽度保持一个固定的比例关系。先来看看下面的使用示例:

<div class="flexbox"> <div class="noneflex">div.noneflex,固定尺寸</div> <div class="flex1">div.flex1,flex比例为1</div> <div class="flex2">div.flex2,flex比例为2</div> </div> .flexbox{ display:flex; } .flexbox div{ height:80px; color:#fff; text-shadow:0 0 4px rgba(0,0,0,0.2) } .flexbox .noneflex{ width:200px; flex:none; background:#6CF; } .flexbox .flex1{ flex:1; background:#FC0; } .flexbox .flex2{ flex:2; background:#9C0; }
div.noneflex,固定尺寸
div.flex1,flex比例为1
div.flex2,flex比例为2

上例中,我们给父级容器div.flexbox设置了 display:flex后,其子级容器,就会按照flex模式显示。

只有部分浏览器比如firefox,chrome以及opera支持CSS flex!

使用flex制作水平排列的导航栏

使用css flex按照下面的设计稿制作水平排列的导航栏。设计稿源文件可在这里下载。

注意:请参考前一个导航栏的示例使用ul,li和a标签来构建导航栏的HTML结构;左侧的logo可以使用css background的方式来显示。