1.display的取值
浏览器支持
IE | Firefox | Chrome | Safari | Opera |
支持 | 支持 | 支持 | 支持 | 支持 |
所有主流浏览器都支持 display 属性。
注释:如果规定了 !DOCTYPE,则 Internet Explorer 8 (以及更高版本)支持属性值 "inline-table"、"run-in"、"table"、"table-caption"、"table-cell"、"table-column"、"table-column-group"、"table-row"、"table-row-group"、以及 "inherit"。
定义和用法
display 属性规定元素应该生成的框的类型。
说明
这个属性用于定义建立布局时元素生成的显示框类型。对于 HTML 等文档类型,如果使用 display 不谨慎会很危险,因为可能违反 HTML 中已经定义的显示层次结构。对于 XML,由于 XML 没有内置的这种层次结构,所有 display 是绝对必要的。
可能的值
值 | 描述 |
none | 此元素不会被显示。 |
block | 此元素将显示为块级元素,此元素前后会带有换行符。 |
inline | 默认。此元素会被显示为内联元素,元素前后没有换行符。 |
inline-block | 行内块元素。(CSS2.1 新增的值) |
list-item | 此元素会作为列表显示。 |
run-in | 此元素会根据上下文作为块级元素或内联元素显示。 |
compact | CSS 中有值 compact,不过由于缺乏广泛支持,已经从 CSS2.1 中删除。 |
marker | CSS 中有值 marker,不过由于缺乏广泛支持,已经从 CSS2.1 中删除。 |
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>) |
inherit | 规定应该从父元素继承 display 属性的值。 |
2.基本属性
display: none
none
是 CSS 1 就提出来的属性,将元素设置为none的时候既不会占据空间,也无法显示,相当于该元素不存在。
该属性可以用来改善重排与重绘,同时我也经常用它来做模态窗等效果。
display: inline
inline
也是 CSS 1 提出的属性,它主要用来设置行内元素属性,设置了该属性之后设置高度、宽度都无效,同时text-align
属性设置也无效,但是设置了line-height
会让inline
元素居中(可以把块元素转化成行元素)
display: block
设置元素为块状元素,如果不指定宽高,默认会继承父元素的宽度,并且独占一行,即使宽度有剩余也会独占一行,高度一般以子元素撑开的高度为准,当然也可以自己设置宽度和高度。(可以把行元素转化成块元素)
display: list-item
此属性默认会把元素作为列表显示,要完全模仿列表的话还需要加上 list-style-position,list-style-type
display: inline-block
inline-block
为 CSS 2.1 新增的属性。 inline-block
既具有block
的宽高特性又具有inline
的同行元素特性。 通过inline-block
结合text-align: justify
还可以实现固定宽高的列表两端对齐布局(可以把块元素设置为行内块元素)
display: table
table
此元素会作为块级表格来显示(类似table),表格前后带有换行符。CSS表格能够解决所有那些我们在使用绝对定位和浮动定位进行多列布局时所遇到的问题。例如,display:table
的CSS声明能够让一个HTML
元素和它的子节点像table
元素一样。使用基于表格的CSS布局,使我们能够轻松定义一个单元格的边界、背景等样式, 而不会产生因为使用了table
那样的制表标签所导致的语义化问题。
display: inline-list-item
我在MDN上面看到有这个属性,但是我实际尝试发现这个属性是不能使用的,在 http://caniuse.com/#search=in... 上面也没有找到这个元素的兼容性,所以应该是不能使用的,支持度全无
display: flex
flex
是一种弹性布局属性
注意,设为Flex
布局以后,子元素的float、clear
和vertical-align
属性将失效。
主要属性有两大类:容器属性和项目的属性
容器属性
flex-direction
: 属性决定主轴的方向(即项目的排列方向)。flex-wrap
: 默认情况下,项目都排在一条线(又称”轴线”)上。flex-wrap
属性定义,如果一条轴线排不下,如何换行。flex-flow
: 属性是flex-direction
属性和flex-wrap
属性的简写形式,默认值为row nowrap
。justify-content
: 属性定义了项目在主轴上的对齐方式。align-items
: 属性定义项目在交叉轴上如何对齐。align-content
: 属性定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。
项目属性
order
: 定义项目的排列顺序。数值越小,排列越靠前,默认为0。flex-grow
: 定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。flex-shrink
: 属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。flex-basis
: 属性定义了在分配多余空间之前,项目占据的主轴空间(main
size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto
,即项目的本来大小。flex
: 属性是flex-grow, flex-shrink 和 flex-basis
的简写,默认值为0 1 auto
。后两个属性可选。align-self
:
属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items
属性。默认值为auto
,表示继承父元素的align-items
属性,如果没有父元素,则等同于stretch
。