这是我的代码:
.content {
padding-top: 10px;
}
ul {
padding-top:0;
margin-top:0;
}
<h1>Title</h1>
<div class='content'>
<ul>
<li>item 1</li>
<li>item 2</li>
</ul>
</div>
对于padding top
内部'内容',我的需求非常有用,但有时候ul
之前可能会有文字:
<h1>Title</h1>
<div class='content'>
Some Text
<ul>
<li>item 1</li>
<li>item 2</li>
</ul
</div>
我希望文本和未排序列表之间有空格,但如果我向margin
添加padding top
或<ul>
,则间距会变得过大文本不存在。我需要提出适用于这两种方案的CSS。不幸的是,我无法控制标记,因此我无法添加换行符或将该介绍文本包装到另一个div
中。我也尝试过使用:
.content > ul {margin-top:10px}
.content > ul:first-child {margin-top: 0}
以及
.content > * + ul { margin-top:10px}
这些都不奏效。无论文本是否存在,<ul>
始终被视为第一个child
。
答案 0 :(得分:1)
利用margin collapse的一些技巧,您可以在margin-bottom
上添加h1
,在margin-top
上添加ul
。
由于包裹div
的{{1}}没有填充,边框或任何内容(当没有文字时),ul
将会崩溃父母并将其应用于margin-top
,然后div
上的边距和下边距将作为相邻的兄弟姐妹崩溃。
然后,当您向h1
添加内联内容时,其中包含div
内的ul
div
&#13;
h1 {
margin-bottom: 10px;
}
ul {
padding-top:0;
margin-top:10px;
}
&#13;
答案 1 :(得分:0)
.content > ul:first-child
和margin:10px
相同,因此存在冲突。您首先添加margin:0px
,然后添加margin:0px
。
margin:10px
是赢家因为h1 {
margin-bottom: 10px;
}
.content ul {
margin-top: 10px;
}
之后。
<h1>Title</h1>
<div class='content'>
Some Text
<ul>
<li>item 1</li>
<li>item 2</li>
</ul>
</div>
{{1}}