我希望div
与给定的max-width
一致,使其宽度与其子span
紧密相符。只要span
只有一行,一切正常,但一旦换行,父div
将具有最大宽度。
.content {
margin: 10px;
max-width: 150px;
border: 1px dotted black;
display: inline-block;
}

<div class="content">
<span>1 line works</span>
</div>
<br>
<div class="content">
<span>2 lines dont workworkwork</span>
</div>
&#13;
第一个div紧密贴合,然而第二个div设置在最大宽度 - 但它可能更紧,我希望它更紧。另见我的笔http://codepen.io/sheinzle/pen/gpVjbG
甚至可以在HTML中获得更紧密的契合度?
答案 0 :(得分:3)
使用flexbox并将样式放在内跨区域上:
.content {
margin:10px;
max-width: 150px;
display: flex;
}
.content span{
flex: 0 1;
border:1px dotted black;
}
<div class="content">
<span>1 line works</span>
</div>
<br>
<div class="content">
<span>2 lines alsoworkhere</span>
</div>
答案 1 :(得分:0)
感谢目前为止的所有答案。我仍然希望有人拥有纯HTML / CSS解决方案。
与此同时,这是一个借助JavaScript的快速修复(CSS / HTML与OP保持不变)。它可能无法捕获所有边缘情况,但它现在有效。笔位于http://codepen.io/sheinzle/pen/MwNdgO
document.addEventListener("DOMContentLoaded", function(event) {
// get list of all spans
list = document.querySelectorAll('.content span');
for (var i=0; i<list.length; i++) {
// retrieve width of span and apply it to parent
w = list[i].offsetWidth;
list[i].parentNode.style.width = w+"px";
}
});
.content {
margin:10px;
max-width: 150px;
border:1px dotted black;
display:inline-block;
}
<div class="content">
<span>1 line works</span>
</div>
<br>
<div class="content">
<span>2 lines do workworkwork</span>
</div>
答案 2 :(得分:-1)
将word-break: break-all;
添加到.content
以下是demo
答案 3 :(得分:-1)
为max-width: 150px;
和div
span
.content {
margin:10px;
max-width: 150px;
border:1px dotted black;
display:inline-block;
}
.test{
max-width: 150px;
display:inline-block;
word-break:break-all
}
<div class="content">
<span class="test">1 line works</span>
</div>
<br>
<div class="content">
<span class="test">2 is this what you wantsimon</span>
</div>