CSS 中的伪元素和 flexboxes
Pseudo-elements and flexboxes in CSS
我正在学习 CSS,但我看到了一些我不明白的东西。我基本上是在做以下事情:
.flexbox {
display: flex;
}
div.flexbox::after {
display: block;
content: "X";
}
.item {
flex: 1;
height: 200px;
}
.red {
background-color: red;
}
.blue {
background-color: blue;
}
.green {
background-color: green;
}
<div class="flexbox">
<div class="item red"></div>
<div class="item blue"></div>
<div class="item green"></div>
</div>
我原以为 "X" 会出现在一个新行上,因为它是一个块级元素。但是,它显示为内联 - 在 div 行的末尾。
我正在使用 firefox 52.7.4,物有所值。
如有任何见解,我们将不胜感激。
谢谢
您正在使用 flexbox,默认行为是 nowrap
。然后你应该指定任何 width
或 flex-basis
使子元素的总宽度超过其容器的宽度以便换行。
display:block
在这种情况下将没有效果,需要考虑flex属性强制换行。
这是一个例子:
.flexbox {
display: flex;
flex-wrap:wrap;
}
div.flexbox::after {
content: "X";
flex-basis:100%;
}
.item {
flex:1 0 30%;
height: 200px;
}
.red {
background-color: red;
}
.blue {
background-color: blue;
}
.green {
background-color: green;
}
<div class="flexbox">
<div class="item red"></div>
<div class="item blue"></div>
<div class="item green"></div>
</div>
伪元素不存在于追加元素的边界框之外。如果您检查该元素,您会看到 ::after
出现在 <div class="flexbox">
元素中。
我正在学习 CSS,但我看到了一些我不明白的东西。我基本上是在做以下事情:
.flexbox {
display: flex;
}
div.flexbox::after {
display: block;
content: "X";
}
.item {
flex: 1;
height: 200px;
}
.red {
background-color: red;
}
.blue {
background-color: blue;
}
.green {
background-color: green;
}
<div class="flexbox">
<div class="item red"></div>
<div class="item blue"></div>
<div class="item green"></div>
</div>
我原以为 "X" 会出现在一个新行上,因为它是一个块级元素。但是,它显示为内联 - 在 div 行的末尾。
我正在使用 firefox 52.7.4,物有所值。
如有任何见解,我们将不胜感激。
谢谢
您正在使用 flexbox,默认行为是 nowrap
。然后你应该指定任何 width
或 flex-basis
使子元素的总宽度超过其容器的宽度以便换行。
display:block
在这种情况下将没有效果,需要考虑flex属性强制换行。
这是一个例子:
.flexbox {
display: flex;
flex-wrap:wrap;
}
div.flexbox::after {
content: "X";
flex-basis:100%;
}
.item {
flex:1 0 30%;
height: 200px;
}
.red {
background-color: red;
}
.blue {
background-color: blue;
}
.green {
background-color: green;
}
<div class="flexbox">
<div class="item red"></div>
<div class="item blue"></div>
<div class="item green"></div>
</div>
伪元素不存在于追加元素的边界框之外。如果您检查该元素,您会看到 ::after
出现在 <div class="flexbox">
元素中。