小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
CSS 显示属性指定如何在页面上的HTML元素流中呈现HTML元素。CSS显示属性可以接受其中一个值:
- none
- block
- inline
- inline-block
- grid
以下各节解释了这些CSS显示属性值如何影响HTML元素的渲染。
display : none
CSS显示属性值none会导致HTML元素不显示在浏览器的页面中。此外,它不会占用HTML页面中的任何可见空间。以下是HTML元素的示例,其CSS显示属性设置为none:
<style>
#myElement { display: none; }
</style>
<div id="myElement">
This DIV element is not displayed
</div>
您可能会想知道,为什么你会在HTML页面中包含HTML元素,然后将CSS显示属性值none应用到它上,因此它不可见。这至少有2种情况是有意义的——我会在以下章节中解释。
第一种情况是,根据CSS媒体查询,您想显示或隐藏HTML元素。例如,您可能只想在浏览器窗口超过特定大小时显示特定的HTML元素。在较小的浏览器窗口中,您可能希望隐藏该HTML元素,以更有效地使用可用空间——以避免用户体验混乱。以下是一组CSS媒体查询与CSS显示属性相结合的示例,根据浏览器窗口的宽度显示和隐藏HTML元素:
<style>
@media only screen and (max-width: 600px) {
#myElement { display: none; }
}
@media only screen and (min-width: 601px) {
#myElement { display: inline; }
}
</style>
<div id="myElement">
This DIV is only displayed on larger screens
</div>
当浏览器窗口宽度为600像素或以下时,此示例将使用ID myElement隐藏HTML元素。
第二种情况是,您使用JavaScript通过将HTML元素的显示属性设置为none和其他东西来显示和隐藏HTML元素。以下是使用JavaScript切换CSS显示属性值的示例:
var element = document.getElementById("myElement");
element.style.display = "none";
display : block
displayCSS属性的block值使HTML元素显示为单独的块。块从新行开始,块后的内容也从新行开始。看看这个HTML示例:
<p>
This text contains <span>display : block</span> elements.
</p>
此示例包含span元素。span元素通常作为文本流的一部分呈现。上述HTML渲染时如下所示:
此文本包含显示:块元素。
现在,让我们为span元素设置displayCSS属性以block:
<p>
This text contains <span style="display:block">display : block</span> elements.
</p>
以下是此示例的呈现方式:
此文本包含显示:块元素。
如您所见,span现在呈现为一个单独的垂直断开的块。这是displayCSS属性的block值的影响。
display : inline
inline值显示HTML元素作为正常文本流的一部分。看看这个HTML示例:
<div>This text is written </div>
<div>Inside two div elements.</div>
默认情况下,HTML div元素通常以block呈现。因此,两个div元素中的每个都将呈现为单独的块。看起来是这样的:
这篇文章是写好的
在两个div元素中。
现在,请注意,当我们为两个div元素将displayCSS属性设置为inline时会发生什么。以下是HTML代码:
<div style="display:inline">This text is written </div>
<div style="display:inline">Inside two div elements.</div>
以下是两个div元素现在在浏览器中的呈现方式:
本文写在
两个div元素中。
请注意,这两个div元素现在是如何呈现的,就好像它们都是正常文本流的一部分一样。没有换行符之类的东西。
display : inline-block
displayCSS属性的inline-block值使HTML元素像块一样显示,但作为正常文本流的一部分呈现。那是什么意思?
当您使用inline值时,您无法控制HTML元素的宽度和高度。浏览器根据元素的内容来确定这一点。
使用inline-block,您可以再次控制HTML元素的宽度和高度,即使它们作为正常文本流的一部分呈现。
看看这个HTML示例:
<p>
This text contains a
<span style="width: 150px;">span element</span>
and another
<span style="width: 150px">span element</span>
and some text.
</p>
这个例子包含一个' p '元素和两个' span '元素。' span '元素的宽度是使用' width ' CSS属性设置的。由于默认情况下' span '元素是使用' display: inline '来呈现的,所以两个' width ' CSS属性被忽略。下面是HTML在浏览器中的呈现方式:
此文本包含一个跨度元素和另一个跨度元素以及一些文本。
看到了吗?widthCSS属性将被忽略。
但是,请注意,当我们为两个span元素将displayCSS属性设置为inline-block时会发生什么。以下是HTML代码:
<p>
This text contains a
<span style="display: inline-block;
width: 150px;">span element</span>
and another
<span style="display: inline-block;
width: 150px">span element</span>
and some text.
</p>
以下是HTML在浏览器中的呈现方式:
此文本包含一个跨度元素和另一个跨度元素和一些文本。
现在你可以看到这两个span元素的宽度为150像素。由于span元素内的文本宽度小于150像素,span元素在文本流中留下了白色空白。
display : grid
CSS显示grid属性值使HTML元素(通常是DIV)的内容将其元素布局在二维网格中。CSS网格布局非常强大,因此描述和理解起来有点复杂。因此,我决定将其排除在本CSS显示教程之外。
HTML元素的默认显示值
不同的HTML元素对displayCSS属性具有不同的默认值。在下表中,我列出了一些最常用的HTML元素及其默认值。了解它们的默认display值可能有助于您了解页面的呈现方式。不过,该列表不完整,因此对于此列表中没有的元素,您必须检查CSS/HTML引用。
| 显示值 | 具有此默认值的HTML元素 |
|---|---|
block | div, p,table |
inline | span, b, i, strong,em |
inline-block | img |
无论HTML元素对其displayCSS属性值使用什么默认值,您始终可以通过将displayCSS属性的值设置为所需的值来覆盖它。