html - 尽管使用显示 :inline-block and setting a max-width,但包装文本扩展了一个 div

标签 html css

应该很容易解决的简单问题,但我找不到解决方案。

我正在尝试通过设置 max-width 并使用 display: inline-block 将 div“收缩包裹”到它的内容中,这似乎是标准方法。

但是,每当一个单词导致文本换行(即它已达到 max-width 阈值)时,空白将显示在文本本应的位置,即使它实际上并不存在。

jsfiddle演示我在说什么。

我到处搜索以找到解决方案,我找到的最接近的是 this ,虽然我真的不想走那条路。

真的没有一个简单、干净、纯 CSS 的解决方案吗?

最佳答案

一个 jQuery 辅助解决方案

仅靠 CSS 无法满足您的需求,但使用 jQuery 则相对容易。

因为内联元素中的 #mySpan,它的宽度将恰好是任何换行前文本的宽度。

使用 jQuery 探测内部 span 的长度,并使用该值设置父元素的宽度。

根据父 block 的最大长度和文本中单词长度的分布,您可能仍然会在 block 参差不齐的右边缘看到一些难看的空白。

无论如何,这是一个需要牢记的有用技巧。

$('#myDiv').innerWidth($('#mySpan').innerWidth());
#myDiv {
    background-color: red;
    max-width: 410px;
}
#mySpan {
    background-color: yellow;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="myDiv">
    <span id="mySpan">Here is some text. Why does a wrapped word create space and where the word would have been on the previous line?</span>
</div>

关于html - 尽管使用显示 :inline-block and setting a max-width,但包装文本扩展了一个 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31094393/

相关文章:

html - CSS3 背景动画移动内容

javascript - 有没有办法可以让我变成全 Angular ?

html - Ionic2 输入标签固定在 ionic 输入字段的右侧

html - Owl Carousel : first slide not trigger action

html - AirMail - 用作预览的非断行技巧

html - 更改 CSS 中的表格字体

html - 绝对定位的 div 在 safari 中 float

html - 使用类和 ID 调用 CSS 项?

javascript - 链接不同网络文件夹中的图像/文件的最佳实践

html - 如何使用 bootstrap 排列输入字段?