【问题标题】:CSS Margin calculationCSS 边距计算
【发布时间】:2011-08-27 13:42:32
【问题描述】:

虽然我在理论上理解整个 CSS 框模型,如填充、边框、边距,但我的理解仅限于这些单独的部分。

我经常对浏览器实际呈现的方式感到困惑。例如。就像填充在边界内一样,但是边距是如何计算的? 它是框边框还是相对于屏幕? 如果我们同时给出左右边距,什么优先级更高? 如果有宽度和左右边距,实际渲染是如何发生的,首先是盒子的宽度,然后是填充还是它是什么样的?

在这个有边距的盒子上添加浮动属性有什么不同?

【问题讨论】:

  • 我认为您应该在 W3C 网站上详细阅读此内容(我假设您只关心 W3C 标准)。如果有人回答了这些问题,你会有更多的问题,所以最好自己阅读。 w3.org/TR/CSS2/box.html

标签: html css


【解决方案1】:

盒子由4种尺寸组成:从外到内:

  1. 边距 - 距父级的空间,它与父级的填充堆叠在一起。
  2. Border - 即边框的宽度,可以用border:或border-width:指定
  3. 填充 - 这是盒子内部的空间,如果该盒子内的任何内容/元素将与其侧面隔开。
  4. Width - 实际框的宽度,可以根据内容变化,100%,或者width:或max-width:中指定的固定宽度

用于说明的图像:


浮动元素会考虑边距,所以如果你有

#element { margin-left: 100px; float: left; }

它将向左浮动,但距左侧有 100 像素的边距。

【讨论】:

  • 你说浮动元素会考虑边距……这到底是什么意思?如果未指定浮点数,渲染是否会有所不同..
  • 我的意思是如果元素浮动并且设置了边距,那么它只会浮动以在边距中设置空间。
【解决方案2】:

“例如,内边距在边框内,但边距如何计算?”

研究这个:http://www.w3.org/TR/css3-box/#margins


“是边框还是屏幕?”

边距的计算独立于边框和屏幕。浏览器分别计算边距的值,然后决定如何应用(渲染)。


“如果我们同时给出左右边距,什么优先级更高?”

这里指定了一个算法:http://www.w3.org/TR/css3-box/#blockwidth

你能举个具体的例子吗?


“如果有宽度和左右边距,实际渲染是如何进行的,首先是盒子的宽度,然后是填充还是什么?”

渲染几乎是瞬时的,所以重要的是最终结果,而不是浏览器渲染元素属性的顺序。


“在这个有边距的盒子上加一个浮点属性有什么区别?”

在这里阅读:http://www.w3.org/TR/css3-box/#floating

边距的使用值等于计算值, 除了计算为“auto”的任何边距的使用值为“0”。

【讨论】:

  • 实际上我已经浏览了你给出的盒子模型链接,发现它与他们给出的例子非常混乱和复杂......我在这里问了这个问题,因为我正在寻找一个更简单和基本的例子,以便更好地理解..
  • @test 您问了一个非常笼统的问题(“边距如何工作”),所以我只能给您一个笼统的答案。您能否定义一个具体示例(HTML 代码 + CSS 代码)?那我就可以详细解释了……
  • 嗯,我只是想了解在各种情况下计算 css 边距的方式..比如如何始终计算填充到内容框..同样我想了解边距计算..
猜你喜欢
  • 1970-01-01
  • 2014-06-22
  • 1970-01-01
  • 1970-01-01
  • 2015-10-07
  • 1970-01-01
  • 2011-12-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多