代码之家  ›  专栏  ›  技术社区  ›  jimplode

只在文本元素上使用边距比在布局元素上使用边距好吗?

  •  1
  • jimplode  · 技术社区  · 14 年前

    我不得不做一个由其他人写的项目,他们写网站的方式,所有东西都是用利润率来定位的,包括正利润率和负利润率。

    我只对文本元素使用过边距,比如 <p> <h1> 标签。

    使用padding在我的div构建块中分隔内容。

    当在div上使用margin来控制间距时,我遇到了很多问题。

    所以我的问题是:

    最好的做法是只在文本元素上使用边距,在主构建块上使用填充,除非在特定情况下使用边距更有意义?

    我对其他人对边缘属性及其用途的看法很感兴趣。

    有没有引起其他问题?

    3 回复  |  直到 14 年前
        1
  •  3
  •   Alin P.    14 年前

    CSS margin 属性应用于设置框之间的间距,而不是将文本(内容)放置在某个框中,也不是更改框的位置。对于这两个活动中的每一个,都有特定的属性: padding position (与 left , right , top , bottom ).

    决定您需要的属性相当简单。我们来举几个例子:

    答。 我有3列在一个家长,我希望他们之间有一些空间。
    这需要使用 边缘 因为你显然需要元素之间的空间,而不是元素内部的空间。

    乙。 每个列都有边框和文本内容,但文本内容从边框开始。我该怎么办?
    你申请一些 衬垫 . 即使您没有边框并且想要定位文本内容,您仍然应用填充,而不是边距!

    C。 我想做一些很酷的未来主义布局,与盒子不对齐,彼此。其中一些甚至应该重叠!
    在这种情况下,这显然不是间距的问题,而是定位的问题,所以你应该使用,你猜, 位置 财产。不要将边距逐个应用于空间元素,而是 位置 它们相对于父对象(如果使用 position: relative ).

    提示:为了更容易决定是否需要边距或填充,请始终考虑如果在所有元素上都有边框,您会做什么。

    强制阅读: http://www.w3.org/TR/CSS2/box.html

        2
  •  2
  •   Fenton    14 年前

    边距用于在两个元素之间创建一个空间,而填充则用于将元素的内容与其边缘隔开。

    更新:我用了一个破折号(—)来表示空间。

    所以这里是空白。。。

    -|元素|--|元素|-

    这里是填充。。。

    |-元素-|-元素-|

    这里是边距和填充。。。

    -|-元素-|--|-元素-|-

    所以问题是,你想用什么。。。答案是这要看情况而定。如果元素有一条可见的边(背景色或边框),填充不会在元素之间创建可见的间隙,因此必须使用边距将它们分开(即,阻止边缘接触)。

    所以本质上,它们做不同的事情,您应该使用边距来分隔元素,并使用填充来在元素的边缘与其内容之间创建间隙。

        3
  •  0
  •   Paul D. Waite    14 年前

    要回答您的问题:不。您的主要构建块很可能是用浮点数布局的,使用负边距可以让您保持合理的源顺序 http://www.alistapart.com/articles/negativemargins/