每当我希望元素的宽度与其内容相同时,我都使用了两个display
属性。
但是一个比另一个好吗?我指的是可访问性,浏览器兼容性,响应性等。
注意:我在问,因为我计划在我的新网站中只使用其中一个。我只是不知道哪一个更好,如果有的话。
答案 0 :(得分:2)
最终,这取决于用例:
display: inline-block
将创建inline-block
元素display: table
将创建table
元素他们正在使用中:
span.mySpan {
background-color: red;
}

<div>
<span>A span element.</span>
<span class="mySpan" style="display: table;">a <code>display: table</code> element.</span>
<span>Another span element.</span>
</div>
<br/>
<br/>
<div>
<span>A span element.</span>
<span class="mySpan" style="display: inline-block;">a <code>display: inline-block</code> element.</span>
<span>Another span element.</span>
</div>
&#13;
可以看出,结果非常不同。 table
元素将自身定位在新行上,并使下一个元素也在新行上。 inline-block
元素将其自身与其兄弟元素内联。
在许多情况下,上述差异足以选择其中一种。
如果没有,让我们继续......
在某些情况下,display: table
很有用:
但是,如果未正确实现,浏览器可能会产生不一致的结果,因此您应始终将display: table
与标准表标记(使用行和单元格)耦合:
.table {
display: table;
}
.table-row {
display: table-row:
}
.table-cell {
display: table-cell;
background-color: #eaeaea;
padding: 10px;
}
&#13;
<div class="table">
<div class="table-row">
<div class="table-cell">
Content
</div>
<div class="table-cell" style="height: 100px;">
Content
</div>
<div class="table-cell">
Content
</div>
</div>
</div>
&#13;
这变得相当繁琐。使用现代CSS,我们可以使用display: flex
完成相同的操作,使用更简单的HTML结构和更少的CSS:
.flex {
display: flex;
}
.flex-cell {
background-color: #eaeaea;
padding: 10px;
}
&#13;
<div class="flex">
<div class="flex-cell">
Content
</div>
<div class="flex-cell" style="height: 100px;">
Content
</div>
<div class="flex-cell">
Content
</div>
</div>
&#13;
老实说,我不能多次想到我需要在display: inline-block
和display: table
之间做出决定,因为它们产生了不同的结果。但是,如果我站在栅栏上,我就会遵循这个决策树:
<table></table>
元素display: flex
元素display: inline-block
)