我在<p>
元素中为子<div>
提供了一个边距,但它正在移动div元素本身。我想将段落向下移动到任意值。我知道我们可以为父元素提供填充,但它呢?
在这里,以此示例代码为例...尝试更改.square p
margin属性。
*{
margin: 20px auto;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.square {
width: 100px;
height: 100px;
background: #f56;
} .square p {
margin: 50px auto;
}
&#13;
<div class="square"><p>Hi</p></div>
&#13;
它不应该是相对于父元素吗?
答案 0 :(得分:1)
p
是block
元素,由于父square
也是如此,因此会出现此行为。
尝试显示inline-block
标记的p
,您可以调整相对于父级的边距。如果您想将p
保留为block
,则应该为父级提供overflow: hidden
。
使用inline-block
的示例:
*{
margin: 20px auto;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.square {
width: 100px;
height: 100px;
background: #f56;
} .square p {
margin: 50px auto;
display: inline-block;
}
&#13;
<div class="square"><p>Hi</p></div>
&#13;
答案 1 :(得分:0)
这里的问题是亲子margin collapsing
。解决此问题的一种方法是使用overflow: hidden
* {
margin: 20px auto;
box-sizing: border-box;
}
.square {
width: 100px;
height: 100px;
background: #f56;
overflow: hidden;
}
.square p {
margin: 50px auto;
}
&#13;
<div class="square">
<p>Hi</p>
</div>
&#13;
答案 2 :(得分:0)
您应该将display:inline-block;
属性提供给孩子p
。
*{
margin: 20px auto;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.square {
width: 100px;
height: 100px;
background: #f56;
}
.square p {
margin: 50px auto;
display: inline-block;
}
&#13;
<div class="square"><p>Hi</p></div>
&#13;