边距和填充之间的区别?


371

CSS中的空白边距到底有什么区别?它似乎并没有太大的作用。您能否举一个例子说明差异所在(为什么知道差异很重要)?


14
stackoverflow.com/questions/2189452/... stackoverflow.com/questions/3060456/... stackoverflow.com/questions/4619899/...首先从搜索三个环节padding vs margin。我认为我们需要在搜索栏中添加箭头并变为绿色。
石灰


2
还应注意,Internet Explorer对边距/边框/填充宽度的求和与几乎所有其他浏览器不同(在默认情况下为“非古怪”模式)。
David R Tribble,2014年

1
如果边距不起作用,请尝试填充
JoelFan 2015年

Answers:


410

padding是内容和之间的空间border,而是margin边界外的空间。这是我通过Google的快速搜索找到的图片,它说明了这一想法。

在此处输入图片说明


3
还要查看这些站点的定义。但是图形是一个完美的例证。 w3schools.com/css/css_margin.asp w3schools.com/css/css_padding.asp
Suroot 2011年

@maclunian:除了上面@Suroot的链接之外,还请访问此网站w3schools.com/css/css_boxmodel.asp
abcd

但是,这与内容的设置的宽度和高度有何关系?这一切在哪里衡量?
Nyerguds

128

答案中缺少的一件事:

顶部/底部边距可折叠。

因此,如果元素底部有20px的边距,而下一个元素顶部有30px的边距,则两个元素之间的边距将是30px,而不是50px。这不适用于左/右页边距或填充。


6
请注意,在某些非常特殊的情况下,垂直边距会崩溃-不仅会有两个垂直边距会崩溃。这只会使它更加混乱(除非您对盒子模型非常熟悉)。
BoltClock

76

边距应用于元素的外部,因此影响元素与其他元素的距离。


填充应用于元素的内部,从而影响元素内容离边界的距离。

此外,使用边距不会影响元素的尺寸,而填充将使元素的尺寸(设置高度+填充)变大,例如,如果您有一个100x100px的div和5 px的填充,那么您的div实际上就是105x105px


15
我相信每边都会应用填充,因此元素应为110x110px
2013Asker 2013年

嗯,如果afaik填充的宽度未设置为,则它不会更改其宽度auto。如果width为auto,则附加的填充将相应地增加填充元素的宽度(并且从两侧开始,如@ 2013Asker所述)
2014年

1
我认为说div为110px x 110px有点误导,因为div的宽度仍为100px(假设box-sizing设置为content-box)。
wmock '16

44

请记住以下三点:

  • 边距是控件周围的多余空间。
  • 填充是控件内部的额外空间。
  • 外部控件的填充是内部控件的边距

演示图片:(其中红色框表示欲望控制) 在此处输入图片说明


2
这不能回答为什么了解差异很重要的原因。
GreenAsJade

38

最简单的防御是:padding是在容器元素的边界内给出的空间,而边距是在外部给出的空间。对于不是容器的元素,填充可能没有多大意义,但绝对地保留边距将有助于安排它。



25

填充

填充是CSS属性,用于定义元素内容与其边框(如果有边框)之间的空间。如果元素周围有边框,则填充将为从该边框到出现在该边框中的元素内容提供空间。如果一个元素周围没有边框,则添加填充对该元素完全没有影响,因为没有边框可提供空格。

余量

Margin是CSS属性,用于定义元素外部与其下一个外部元素之间的空间。

边距影响同时具有或不具有边界的元素。如果一个元素具有边框,则margin定义从该边框到下一个外部元素的空间。如果一个元素没有边框,则margin定义从元素内容到下一个外部元素的空间。

填充和边距之间的差异

因此,margin和padding之间的区别在于,尽管padding处理内部空间,margin处理外部空间到下一个外部元素。


1
哪些元素没有边框?
Sarim Javaid Khan,2017年

10

答案中没有提到边距和填充之间的主要区别之一:可点击性和悬停检测

增加填充会增加元素的有效尺寸。有时我有一个很小的图标,我不想将其变大,但用户仍然需要与该图标进行交互。我增加了图标的填充,使其具有更大的点击和悬停尺寸。增加图标的边距不会有相同的效果。

有关此主题的另一个问题的答案给出了一个示例。


大多数最重要的答案是指填充位于元素的“内部”,边距位于元素的“外部”,这已经意味着填充有助于更大的点击区域。但是,当您处理一个完全透明的盒子时,它并不是那么明显……
BoltClock


9

很高兴知道margin和之间的区别padding。我所知:

  • 边距是元素的外部空间,而填充是元素的内部空间。换句话说,margin是元素边界外部的空间,而padding是元素边界内部的空间。
  • 您可以将auto值设置为保证金。但是,不允许填充。看到这个
    注意:用于margin: auto将块元素水平放置在其父元素的内部水平居中位置。另外,可以通过将margin设置为auto来在flexbox内部垂直或水平放置元素,也可以同时放置两者。看到这个
  • 保证金可以是任何浮点数,但填充不能为负。
  • 对元素进行样式设置时,也会对填充进行样式设置。但没有保证金。边距获取父元素的样式。例如,当您将background-color属性设置为黑色时,其内部空间(即填充)将为黑色,但其外部空间(即空白)将为黑色。


2

边距和填充实际上都是填充的类型。...一个(边距)位于元素边框的外部,以与其他元素保持距离,另一个(边距)位于元素内容的外部,以使内容与元素边框保持距离。


2

填充使开发人员可以在文本及其封闭元素之间保持空间。边界是元素与父DOM的另一个元素保持的空间。

参见示例:

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UT-8">
    <title>Pseudo Elements</title>
    <style type="text/css">
        body{font-family:Arial; font-size:16px; background-color:#f8e6ae; color:#888;}
        .page
        {
            background-color: #fff;
            padding: 10px 30px 50px 50px;
            margin:30px 100px 30px 300px;
        }
    </style>
</head>
<body>
    <div class="page">
        Notice the distance between the top and this text. Then compare it with the distance between the bottom border and the this text. 
    </div>
</body>

1

Margin是CSS中的属性,用于在边框之外的元素周围创建空间。程序员可以为顶部,右侧,底部和左侧设置边距。换句话说,他可以使用margin-top,margin-right,margin-bottom和margin-left来设置这些值。

保证金值可以是以下类型的。

首先,自动允许浏览器计算边距。此外,长度表示以px,pt或cm为单位的边距,而%有助于将边距描述为相对于包含元素宽度的百分比。最后,Inherit表示边距必须从父元素继承。

填充是CSS中的属性,可帮助在边框内的元素周围创建空间。程序员可以为顶部,右侧,底部和左侧设置填充。换句话说,他可以使用padding-top,padding-right,padding-bottom和padding-left来设置这些值。

填充 值可以是以下类型的。

长度以px,pt或cm为单位描述填充,而%表示填充相对于所包含元素的宽度的百分比。最后,继承描述应从父元素继承填充。

 div.special {
          width:200px; 
          border-style: solid; 
          border-width:thin; 
          border-color:#000;
          margin:30px 20px 10px 25px;
}     
div.special2 {
          width:200px;
          border-style: solid;
          border-width:thin;
          border-color:#000;
          padding:30px 20px 10px 25px;
}        
<div class="special">
             Hello its margin test 
</div>
<div class="special2">
            Hello its padding test
</div>

保证金和填充之间的区别

边距是一个CSS属性,用于在定义的边界外的元素周围创建空间,而padding是一个CSS属性,用于在定义的边界内的元素周围创建空间。因此,这解释了边距和填充之间的主要区别。

此外,margin的值可以是auto,length,%或Inherit,而padding的值可以是length,%或Inherit type。因此,这是空白和填充之间的另一个区别。

简而言之,margin和padding是CSS中的两个属性,可用于设置网页样式。无法为这些属性分配负值。边距和填充之间的主要区别在于,边距有助于在边框外部的元素周围创建空间,而填充有助于在边框内部的元素周围创建空间。


0

尝试将背景色放在具有宽度和高度的块div上。您会看到,填充会增加元素的大小,而边距只会在文档流中移动它。

边距专门用于移动元素。


0

填充是网页上最接近的组件之间的空间,空白是距网页空白处的距离。


0

我刚刚注意到的一件事,但以上答案均未提及。如果我有一个动态创建的DOM元素,该元素以空的内部html内容初始化,那么如果您不希望此空元素占用创建内容的空间,则最好使用空白而不是填充。


-1

有一个重要区别:

边距-位于元素的外部,即将在元素开始后“应用”空格移位。填充-位于内部,另一个将在元素开始之前应用空格。


-1

边距应用于元素的外部,因此影响元素与其他元素的距离。

填充应用于元素的内部,从而影响元素内容离边界的距离。

此外,使用边距不会影响元素的尺寸,而填充将使元素的尺寸(设置高度+填充)变大,例如,如果您有一个100x100px的div和5 px的填充,那么您的div实际上就是105x105px


您注意到这个答案已经给出了吗?-并加上适当的重点?
JerryOL

-1

基本上,填充和边距之间的差异来自背景。填充将决定内容之间的间隔,而边距将决定元素的外部边缘!


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.