无100%宽度的显示块


95

我想使用display属性将span元素设置为出现在另一个元素下面。我尝试应用内联块但没有成功,并且发现如果可以设法避免使元素的宽度为100%(我不希望元素“伸出”),我可以使用块。是否可以这样做,如果不能,那么解决此类问题的最佳实践是什么?

例如:一个新闻列表,我想在每个帖子的末尾设置一个“更多”链接(请注意:<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;
}

1
您有任何标记(HTML或CSS)显示给我们吗?没有任何实际要解决的问题就很难解决。jsfiddle上的演示也很好。
汤姆·奥克利

我以为我不需要任何示例代码,因为它仅用于定位span元素。查看更新的帖子。
Staffan Estberg

您可以仅使用一行代码来减少所有这些标记,如下所述。
ha404 2015年

Answers:


72

如果我正确理解了您的问题,则以下CSS会将您的a浮动到跨度以下,并使其宽度保持100%:

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

我尝试应用此方法,但由于span元素(在示例中为title和date)没有浮动,因此链接被定位在最后一个span之前。猜测一种解决方案是使li中的所有子元素都浮动。
Staffan Estberg

如果我为li父级应用clearfix,则此方法有效。感谢PJ,将使用此解决方案。
Staffan Estberg

157

使用display: table

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


13
天才解决方案。margin: 0 auto;如果您需要居中。
黑手党2015年

4
我认为你很棒。
billynoah 2015年

1
display: table;可以,但是不接受任何填充。
donquixote

@ ha404你是对的,填充有效!jsfiddle.net/wgj7xvLe/4,至少在我的浏览器(铬)中。
donquixote

3
@donquixote,只要您使用border-collapse:独立,它就应该接受填充。只是有那个问题。
布拉德(Brad)

30

您可以使用:

width: max-content;

注意:支持有限,请在此处查看支持的浏览器的完整分类


我从来没有听说过!有趣。
瑞安

自Chrome 46和FF 66以来一直不错。应该接受答案。inline-block等人破坏了我的布局。
i336_

1
@ i336_到今天为止,Edge浏览器仍不支持。
ChrisW

边缘还是铬边缘?(要明确;前者将过渡一段时间……)
i336_

根据caniuse.com的数据,Edge将于2020年1月14日发布的Edge 79受到支持。总共有92%的支持率。caniuse.com/?search=max-content这是对我的欢迎。大约2年前,当我第一次听说它时,它没有足够的支持供我在生产中使用,但现在可以了。
Xandor

7

我将每一行都保留到自己的div,所以...

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

然后是CSS:

.cell{display:inline-block}

如果不查看原始代码,很难为您提供解决方案。


1
谢谢,但我不想混入任何div元素。
Staffan Estberg

5

再说一遍:答案可能为时已晚(但对于那些仍然找到此答案页面的人)。

代替 display:block;使用display:inline-block;



1

我遇到了这个问题,我像这样解决了它:

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

.child {
  display: block;
}

“空白:nowrap”可确保在没有足够空间的情况下,子级的子级(如果有)不会换行。

没有“空白:nowrap”:

在此处输入图片说明

与“空白:nowrap”:

在此处输入图片说明


编辑:看来,它也可以在没有子块的情况下正常工作,所以这似乎很好用。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.