没有 100% 宽度的显示块

Posted

技术标签:

【中文标题】没有 100% 宽度的显示块【英文标题】:Display block without 100% width 【发布时间】:2012-09-24 08:59:11 【问题描述】:

我想使用 display 属性设置一个 span 元素出现在另一个元素的下方。我尝试应用 inline-block 但没有成功,并且认为如果我设法避免给元素提供 100% 的宽度(我不希望元素“伸展”),我可以使用 block。可以这样做吗?如果不能,解决这类问题有什么好的做法?

示例:我想在每个帖子末尾设置“阅读更多”链接的新闻列表(注意:<a> 而不是<span>

<li>
<span class="date">11/15/2012</span>
<span class="title">Lorem ipsum dolor</span>
<a class="read-more">Read more</a> 
</li>

更新:已解决。在 CSS 中,应用

li 
    clear: both;

li a 
    display: block;
    float: left;
    clear: both;

【问题讨论】:

您有任何标记(html 或 CSS)要展示给我们吗?如果没有任何实际工作,很难解决这个问题。在jsfiddle 上的演示也很好。 我认为我不需要任何示例代码,因为它只是定位一个 span 元素。查看更新后的帖子。 你可以通过只使用我下面提到的一行代码来减少所有标记。 【参考方案1】:

使用display: table

此答案必须至少为 30 个字符;我输入了 20,所以这里还有一些。

【讨论】:

天才解决方案。 margin: 0 auto; 如果你需要它居中。 display: table; 有效,但不接受任何填充。 @ha404 你是对的,填充有效! jsfiddle.net/wgj7xvLe/4 至少在我的浏览器(Chromium)中。 @donquixote 只要您使用border-collapse:separate,它就应该接受填充。刚遇到这个问题。【参考方案2】:

如果我正确理解了您的问题,以下 CSS 会将您的 a 浮动到跨度下方并防止其具有 100% 的宽度:

a 
    display: block; 
    float: left; 
    clear: left; 

【讨论】:

我尝试应用它,但由于跨度元素(示例中的标题和日期)没有浮动,因此链接定位在最后一个跨度之前。猜测一种解决方案是让 li 中的所有子元素浮动。 如果我为 li 父级应用 clearfix,这将有效。将采用此解决方案,谢谢 PJ。【参考方案3】:

你可以使用:

width: max-content;

注意:支持是有限的,check here 支持浏览器的完整分类

【讨论】:

我从没听说过这个!很有趣。 自 Chrome 46 和 FF 66 以来很好。应该接受答案。 inline-block 等人打破了我的布局。 @i336_ 截至今天,Edge 浏览器仍然不支持它。 Edge 还是 Chromium Edge? (要清楚;前者将要过渡一段时间......) 根据 caniuse.com,截至 2020 年 1 月 14 日发布的 Edge 79,Edge 支持它。总共有 92% 的支持率。 caniuse.com/?search=max-content 这是对我的热烈欢迎。大约 2 年前,当我第一次听说它时,它没有足够广泛的支持让我在生产中使用,但现在可以了。【参考方案4】:

我会将每一行保留在自己的 div 中,所以...

<div class="row">
    <div class="cell">Content</div>
</div>
<div class="row">
    <div class="cell">Content</div>
</div>

然后是 CSS:

.celldisplay:inline-block

没有看到你的原始代码,很难给你一个解决方案。

【讨论】:

谢谢,但我不想混入任何 div 元素。【参考方案5】:

再说一遍:答案可能有点太晚了(但对于那些无论如何都能找到此页面的人来说)。

而不是 display:block;使用display:inline-block;

【讨论】:

【参考方案6】:

试试这个:

li a 
    width: 0px;
    white-space:nowrap;

【讨论】:

【参考方案7】:

我有这个问题, 我是这样解决的:

.parent 
  white-space: nowrap;
  display: table;


.child 
  display: block;

“white-space: nowrap”确保孩子的孩子(如果有的话)在空间不足时不会换行。

没有“空白:nowrap”:

带有“空白:nowrap”:


编辑:它似乎也可以在没有子块部分的情况下为我工作, 所以这似乎工作正常。

.parent 
  white-space: nowrap;
  display: table;

【讨论】:

【参考方案8】:

您可以使用以下内容:

display: inline-block;

在链接和其他元素上效果很好。

【讨论】:

以上是关于没有 100% 宽度的显示块的主要内容,如果未能解决你的问题,请参考以下文章

表格的宽度因显示而冻结:块

ASP.NET CSS - 将文本框设置为 div 的 100% 宽度

css回顾2

使用媒体查询功能解决网页100%宽度和固定宽度在小屏浏览器显示空白问题

在 IE6 和 IE7 中将宽度正确拉伸到内联块元素的 100%

具有填充和边距以及 100% 宽度的 HTML CSS 框? [复制]