html - html 元素:换行符后但不展开
问题描述
我正在寻找一个 html/css 解决方案来获得某些 html 元素的以下行为:
- 它必须在它之后强制换行,也就是说,它后面的同一行中不能有其他元素。类似于
div
或display: block
。 - 它的大小必须是他的内容之一,而不是扩展到所有行。类似于
span
ordisplay: inline
或display: inline-block
。 - 我们可以选择元素的类型(
div
,span
, ...),但它必须是单个元素,不能使用,例如,aspan
后跟 abr
。
在以下示例中,有多次尝试获取此行为,但均未成功:
body {
width: 200px;
}
#yellow {
height: 50px;
background-color: yellow;
border: 2px solid black;
}
#red {
height: 50px;
background-color: red;
border: 2px solid black;
display: inline-block;
}
#blue {
height: 50px;
background-color: blue;
border: 2px solid black;
display: inline-block;
}
.child {
width: 50px;
}
<!DOCTYPE html>
<html>
<body>
<div id="yellow">
<div class="child"></div>
</div>
<div id="red">
<div class="child"></div>
</div>
<div id="blue">
<div class="child"></div>
</div>
</body>
</html>
黄色 div 扩展到所有线宽,超过其内容的 50 像素。红色的(带有显示内联块的 div)具有正确的大小,但不会强制下一个 div(蓝色的)出现在下一行。
解决方案
你能用max-width: fit-content
吗?在 IE 或 Edge 上不受支持。
body {
width: 200px;
}
#yellow {
height: 50px;
background-color: yellow;
border: 2px solid black;
max-width: -webkit-fit-content;
max-width: -moz-fit-content;
max-width: fit-content;
}
#red {
height: 50px;
background-color: red;
border: 2px solid black;
display: inline-block;
}
#blue {
height: 50px;
background-color: blue;
border: 2px solid black;
display: inline-block;
}
.child {
width: 50px;
}
<!DOCTYPE html>
<html>
<body>
<div id="yellow">
<div class="child"></div>
</div>
<div id="red">
<div class="child"></div>
</div>
<div id="blue">
<div class="child"></div>
</div>
</body>
</html>
推荐阅读
- docker - 如何将流利的位输入日志写入本地主机系统日志服务器
- java - 使用复杂的构造函数 Kotlin + Jackson 将 json 反序列化为子类型
- c++ - 当用 gRPC 调用替换函数调用时,我是否需要使我的代码线程安全?
- c# - 一个类可以有 2 个属性,其中只能填充 1 个吗?
- powerbi - 在 Power BI 中比较两个值并计算结果的度量
- pyspark - 当 regexp_replace 添加空间时,Pyspark 错误 DDL 长度超出
- java - 有没有办法在 Java 中实现具有多个子节点的 LinkedList?
- blockchain - 一个智能合约有多少个 NFT?
- python - PostgreSQL(新部署)
- go - 如何 cgo 链接到使用 LLVM 的 libc++ 构建的库