何时在 CSS 中使用边距与内边距 [关闭]

问:

关闭。这个问题是基于意见的。它目前不接受答案。想改进这个问题?更新问题,以便可以通过编辑这篇文章用事实和引用来回答它。 3年前关闭。改进这个问题

在编写 CSS 时,是否应该使用特定的规则或准则来决定何时使用 margin 以及何时使用 padding?

答1:

huntsbot.com精选全球7大洲远程工作机会,涵盖各领域,帮助想要远程工作的数字游民们能更精准、更高效的找到对方。

TL;DR:默认情况下,我在任何地方都使用边距,除非我有边框或背景并且想要增加可见框内的空间。

对我来说,填充和边距之间最大的区别是垂直边距会自动折叠,而填充不会。

考虑一个在另一个之上的两个元素,每个元素都有 1em 的填充。此填充被认为是元素的一部分并且始终被保留。

所以你最终会得到第一个元素的内容,然后是第一个元素的填充,然后是第二个元素的填充,然后是第二个元素的内容。

因此,这两个元素的内容最终会分开 2em。

现在用 1em 边距替换该填充。边距被认为在元素之外,相邻项的边距会重叠。

因此,在此示例中,您将得到第一个元素的内容,然后是组合边距的 1em,然后是第二个元素的内容。所以这两个元素的内容只有1em之分。

当您知道要在元素周围说出 1em 间距时,这将非常有用,而不管它位于哪个元素旁边。

另外两个很大的区别是填充包含在点击区域和背景颜色/图像中,但不包含边距。

div.box > div { 高度:50px;宽度:50px;边框:1px纯黑色;文本对齐:居中; } div.padding > div { padding-top: 20px; } div.margin > div { margin-top: 20px; } 默认 A B C padding-顶部:20px A B C margin-top :20像素; A B C

+1 在设计排版和段落、标题和列表的粗略序列时,由于相邻的边距折叠行为,几乎总是最好用边距分隔元素。

为什么垂直边距折叠而水平边距不折叠?这可能会让很多人感到困惑

垂直边距仅对块元素折叠。对于内联块元素,边距是垂直和水平添加的。所以我不确定水平边距不会在块元素上折叠是一个问题,因为它们无论如何都会填充它们的容器。

“为什么垂直边距会塌陷而水平边距不会?”在不使用浮动的情况下,没有任何机制可以让块元素彼此并排 - 其边距永远不会折叠(甚至垂直)或绝对定位,显然没有折叠,或内联块,它使用不同的模型考虑内联和内容(空格、文本)很重要,或者其他诸如表格、弹性框、列之间的间隙具有特殊行为的列。所以简而言之,即使可能,也没有地方可以使用水平边距折叠

您还应该注意,当与 box-sizing: border-box; 一起使用时,填充包含在元素的总宽度/高度中,因此如果您有 width: 100px; padding-left: 20px;,总宽度仍将是 100 像素,但内容区域会减少 20 像素,这与 {3其中填充在计算内容宽度时是分开的,这使得内容框中的总宽度为 120px;

答2:

huntsbot.com提供全网独家一站式外包任务、远程工作、创意产品分享与订阅服务!

边距位于块元素的外部,而填充位于内部。

使用边距将块与其外部的东西分开

使用填充将内容从块的边缘移开。

https://i.stack.imgur.com/UHD7W.gif

然而,正确的答案是下面的@pavon。相邻元素的边距重叠,而填充不重叠。即,总分离度为 padding(A) + padding(B) + max(margin(A), margin(B))

这是一个很好的做法:使用纯红色边框来检查内边距和边距。有时,我们可能会弄乱像 这样的东西,它包含一些文本,被填充和边距包围。使用这个技巧来检查我们可以点击多少空间。

答3:

huntsbot.com – 高效赚钱,自由工作

我见过用示例、图表甚至“自己尝试”视图来解释这一点的最佳方法是 here。

我认为下图可以立即直观地理解差异。

https://i.stack.imgur.com/PeSIJ.gif

要记住的一件事是符合标准的浏览器 (IE quirks is an exception) 仅将内容部分呈现给给定的宽度,因此请在布局计算中跟踪这一点。另请注意,边框框有点 comeback with Bootstrap 3 支持它。

w3.org/TR/CSS2/box.html#box-dimensions 和来自 w3 w3.org/TR/CSS2/images/boxdim.png 的图片

w3schools.com/css/tryit.asp?filename=trycss_boxmodel

答4:

保持自己快人一步,享受全网独家提供的一站式外包任务、远程工作、创意产品订阅服务–huntsbot.com

您的问题有更多技术解释,但如果您想要一种考虑边距和填充的方法,这个类比可能会有所帮助。

将块元素想象成挂在墙上的相框:

照片就是内容。

垫子是填充物。

框架成型是边框。

墙是视口。

两帧之间的空间是边距。

考虑到这一点,一个好的经验法则是,当您想要将元素与墙上的其他元素隔开时使用边距,并在调整元素本身的外观时使用填充。边距不会改变元素的大小,但填充会使元素变大1。

1 您可以使用 box-sizing attribute 更改此行为。

实际上我不同意 box-sizing: border-box 使“内容的空间更小”。这是一个带有 2 个框的小提琴,如果我保持相同的填充并添加“活动”,然后在悬停时添加“停用”,那么我是否使用 box-sizing 都没关系。它仍然会扩大盒子。我必须将填充最大化到框将扩展到的最长,然后使用反复试验来为进入框中的其他单词提供匹配组合,以保持每个单词的宽度相同:jsfiddle.net/navyjax2/ngzqqjah

嘿vapcguy,感谢您的意见。我的陈述通常是正确的,当为元素声明宽度或高度时,而具有未声明尺寸的元素实际上不受 border-box 的影响(请参阅:jsfiddle.net/8yravLmL/1)。我会让我的答案更加细致入微,以避免混淆。

答5:

huntsbot.com汇聚了国内外优秀的初创产品创意,可按收入、分类等筛选,希望这些产品与实践经验能给您带来灵感。

边距与填充:

边距在元素中用于创建该元素与页面其他元素之间的距离。填充用于创建元素的内容和边框之间的距离。边距不是元素的一部分,而填充是元素的一部分。

请参阅以下从 Margin Vs Padding - CSS Properties 中提取的图像

https://i.stack.imgur.com/PaLp6.jpg

引用边框,而不是相当模糊的“边距在块元素的外部,而填充在内部。”什么外面/里面?并且外部/内部建议一个静态位置,而不是它影响包含元素的大小。这个答案为我澄清了。

答6:

打造属于自己的副业,开启自由职业之旅,从huntsbot.com开始!

来自https://www.w3schools.com/css/css_boxmodel.asp

不同部分的说明: 内容 - 显示文本和图像的框的内容 填充 - 清除内容周围的区域。填充是透明的 边框 - 围绕填充和内容的边框 边距 - 清除边框外的区域。边距是透明的

现场示例(通过更改值来玩):https://www.w3schools.com/css/tryit.asp?filename=trycss_boxmodel

答7:

一个优秀的自由职业者,应该有对需求敏感和精准需求捕获的能力,而huntsbot.com提供了这个机会

很高兴知道 margin 和 padding 之间的区别。以下是一些区别:

边距是元素的外部空间,而填充是元素的内部空间。

边距是元素边界外的空间,而填充是元素边界内的空间。

Margin 接受 auto:margin:auto 的值,但不能将 padding 设置为 auto。

边距可以设置为任意数字,但填充必须为非负数。

当您为元素设置样式时,填充也会受到影响(例如背景颜色),但不会影响边距。

答8:

huntsbot.com高效搞钱,一站式跟进超10+任务平台外包需求

下面是一些 HTML,演示了 padding 和 margin 如何影响可点击性和背景填充。对象接收对其填充的点击,但点击对象的边缘区域会转到其父级。

$(“.outer”).click(function(e) { console.log(“outer”); e.stopPropagation(); }); $(“.inner”).click(function(e) { console.log(“inner”); e.stopPropagation(); }); .outer { 填充:10px;背景:红色; } .inner { 边距:10px;填充:10px;背景:蓝色;边框:纯白1px; }

您可以在 jsfiddle 上运行类似的代码:jsfiddle.net/fschwiet/y74Nz/3

很好地确定了对点击框的影响!

答9:

huntsbot.com提供全网独家一站式外包任务、远程工作、创意产品分享与订阅服务!

关于边距的事情是你不需要担心元素的宽度。

就像您提供 {padding: 10px;} 一样,您必须将元素的宽度减小 20px 以保持“fit”并且不干扰它周围的其他元素。

因此,我通常首先使用填充来获取所有内容“packed”,然后使用边距进行细微调整。

要注意的另一件事是,不同浏览器上的填充更加一致,IE 不能很好地处理负边距。

答10:

huntsbot.com提供全网独家一站式外包任务、远程工作、创意产品分享与订阅服务!

边距清除元素周围的区域(边框外),而填充清除元素内容周围的区域(边框内)。

https://i.stack.imgur.com/XyRhQ.png

这意味着您的元素不知道其外部边距,因此如果您正在开发动态 Web 控件,我建议您尽可能使用 padding vs margin。

请注意,有时您必须使用保证金。

huntsbot.com – 程序员副业首选,一站式外包任务、远程工作、创意产品分享订阅平台。

“请注意,有时您必须使用保证金” 这就是问题。这些时间是什么时候?

答11:

打造属于自己的副业,开启自由职业之旅,从huntsbot.com开始!

需要注意的一件事是,当自动折叠边距让您烦恼时(并且您没有在元素上使用背景颜色),使用填充更容易。

原文链接:https://www.huntsbot.com/qa/XW9w/when-to-use-margin-vs-padding-in-css?lang=zh_CN&from=csdn

HuntsBot周刊–不定时分享成功产品案例,学习他们如何成功建立自己的副业–huntsbot.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值