概念
display
是CSS中最重要的用于控制布局的属性。每个元素都有一个默认的 display 值,这与元素的类型有关。对于大多数元素它们的默认值通常是 block或 inline。
一个 block 元素通常被叫做块级元素。一个 inline 元素通常被叫做行内元素。
block
div
是一个标准的块级元素。一个块级元素会新开始一行并且尽可能撑满容器。其他常用的块级元素包括p、 form
和HTML5中的新元素:header、 footer、 section
等等。inline
span
是一个标准的行内元素。一个行内元素可以在段落中<span> 像这样 </span>
包裹一些文字而不会打乱段落的布局。a
元素是最常用的行内元素,它可以被用作链接。none
另一个常用的display
值是none
。一些特殊元素的默认display
值是它,例如script
。
display:none
通常被 JavaScript 用来在不删除元素的情况下隐藏或显示元素。它和visibility
属性不一样。把display
设置成none
不会保留元素本该显示的空间,但是visibility: hidden;
还会保留。-
inline-block
同时具有block
的宽高特性又具有inline
的同行元素特性<style> .inline{display:inline; width:100px; height:100px; padding:5px; background-color:#F00;} .block{display:block; width:100px; height:100px; padding:5px;background-color:#0f0;} .inline-block{display:inline-block; width:100px;height:100px; padding:5px;background-color:#00f;} </style> <body> <span class="inline">inline</span>inline <span class="block">block</span> block <span class="inline-block">inline-block</span>inline-block </body>
运行结果:
inline特性
我们发现内联对象inline
给它设置属性height和width是没有用的,致使它变宽变大的原因是: 内部元素的宽高+padding
。观察inline
对象的前后元素我们会发现inline
不单独占一行,其它元素会紧跟其后。
block特性
块对象block
是可以设置宽高的,但是它的实际宽高是本身宽高+padding
。观察block
的前后元素我们会发现block
要单独占一行。
inline-block特性
inline-block
既具有block
的宽高特性又具有inline
的同行元素特性。也就是说,当我们想要让一个元素既不独占一行,又可以设置其宽高属性的时候,我们就可以选择inline-block
了。
行内元素特点
- 和其他元素都在一行上;
- 元素的高度、宽度、行高及顶部和底部边距不可设置;
- 元素的宽度就是它包含的文字或图片的宽度,不可改变。
块级元素特点
- 每个块级元素都从新的一行开始,并且其后的元素也另起一行。(一个块级元素独占一行)
- 元素的高度、宽度、行高以及顶和底边距都可设置。
- 元素宽度在不设置的情况下,是它本身父容器的100%(和父元素的宽度一致),除非设定一个宽度。
html中,<span> <a> <label> <input> <img> <strong> <em>
就是典型的行内元素(inline)元素。
html中<div> <p> <h1> <form> <ul> <li>
就是块级元素。设置display:block
就是将元素显示为块级元素。
display的其他属性值
- list-item
此元素会作为列表显示。 - run-in
此元素会根据上下文作为块级元素或内联元素显示。 - table
此元素会作为块级表格来显示(类似table),表格前后带有换行符。 - inline-table
此元素会作为内联表格来显示(类似table),表格前后没有换行符。- - table-row-group
此元素会作为一个或多个行的分组来显示(类似tbody) - table-header-group
此元素会作为一个或多个行的分组来显示(类似thead) - table-footer-group:
此元素会作为一个或多个行的分组来显示(类似tfoot) - table-row
此元素会作为一个表格行显示(类似 tr )。 - table-column-group
此元素会作为一个或多个列的分组来显示(类似 colgroup )。 - table-column
此元素会作为一个单元格列显示(类似 col ) - table-cell
此元素会作为一个表格单元格显示(类似 td 和 th) - table-caption
此元素会作为一个表格标题显示(类似 caption)