【发布时间】:2013-10-29 00:55:39
【问题描述】:
我有一些 CSS 插入一个破折号,unicode U+2014 —,以便在声明的源之前在 my site 上提供一个很好的格式。令人讨厌的是,在此之后它会换行(我尝试从 span 更改为 div 但没有用)。
文档树如下所示:
<span class="source">...</span>
<p>Source author, text goes here etc. etc.</p>
span 行的计算样式包括display:inline,而p 的计算样式具有display:block,我猜这可能导致新行?
我正在阅读相关的 CSS 并且看不出它应该开始一个新行的任何理由,我没有 \A in the content as in this question ...
任何 CSS 高手都可以指出我缺少什么吗?可能需要::before 伪元素的替代实现?
这里涉及的 CSS 是
div.source:before{content:"\2014";margin-left:0.9em;margin-right:0.9em; white-space:nowrap;}#content
(我插入了 white-space:nowrap 前段时间试图解决这个问题,但它对新行没有做任何事情)
【问题讨论】:
-
你试过
p{display: inline;}吗? this是你想要的吗? -
这是因为
<p>默认是块级元素,这意味着它将占据其父元素的 100% 宽度,因此会强制自己换行。也许@Harry 的建议会奏效。 -
当我读到这篇文章时感到畏缩,因为它基本上是解决方案,我想我是个白痴,但后来我尝试了它,并且有多个
标签(即说明来源后的更多段落)所以我只是想弄清楚我是否需要 nth-of-type / first-child 来制作第一个显示:inline,但这感觉有点过于复杂了......
-
由于某种原因它弄乱了 p 边距,使用 nth-of-type 摆脱了下方块引用部分的滚动条,但要尝试史蒂夫的建议... div.source p:nth- of-type(1){display:inline}
-
@lmmx:就像我刚刚在史蒂夫的回答中提到的那样。他的方法是更好的一种,但请注意您要支持的浏览器列表。如果 IE :before、
:nth-child等会造成麻烦。