html - 段落后的 CSS 列表间距

标签 html css

如果我有用户生成的内容,例如:

<p>my paragraph</p>
<ul>
  <li>item1</li>
  <li>item2</li>
</ul>

这段输出在段落末尾和列表之间有一个段落间隙,如下所示:

我的段落:

  • 第 1 项
  • 元素2

我知道我可以通过在 UL 标签上设置 margin-top 和在 p 上设置 margin-bottom 来消除 CSS 中的空白。标记,但有没有办法在不影响实际段落之间的边距的情况下做到这一点?

内容是用户生成的,只有一组有限的可用标签,没有可用的字体、大小...因此所有格式设置都应在 CSS 中完成,如果可能的话,不必在标签中放置类。

我知道,由于边距折叠在 CSS 中的工作方式,我通常可以设置

p { margin-bottom:0; }
li { margin-top:0; }

在这两种情况下分隔都是正确的,因为 p 标签上的 margin-top 属性仍为 1,但我已经将 margin-top 设置为 0.2em h2p 标签之间的间隙更小。

最佳答案

这是兄弟选择器的完美用例。但是,它在 IE6 中不起作用或 IE7 .

p { margin: 0; }
ul { margin-top: 0; margin-bottom: 0; }
p + p { margin-top: 15px; }
p + ul { margin-top: 3px; }
ul + p { margin-top: 3px; }

因此,我将 pul 上的相关边距设置为 0,然后告诉所有兼容的浏览器寻找 pp 之后并为其添加上边距。对于 p 之后的 ul 也是如此(尽管这是一个很小的余量),以及 ul 之后的 p (又是大利润)。

同样,这在 IE6 和 7 中不起作用,因此您可能希望使用条件注释在这些浏览器上获得体面的(如果不是完美的)外观。

关于html - 段落后的 CSS 列表间距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3257741/

相关文章:

html - 防止div被推到左边

javascript - 在焦点子项之后追加

css - 动态空间填充 DIV 宽度

html - 显示列表的唯一第一项

html - 如何设置禁用输入并选择相同颜色

jquery - Div 元素未展开以容纳 HTML 文本

html - Css 警报不在顶部

javascript - 在 HTML 中,如何使用 jquery 和 cgi 让 AJAX 将按钮点击发布到 .pay?

javascript - 使用 jquery 的输入框中的值总和不起作用

html - Google 表单会抛弃 HTML anchor 吗?