从块级元素(Block-Level Elements)说开去

              图1 盒模型

  CSS中的盒子模型,我们都知道其组成结构。但是,在使用它时总觉得难以驾驭。  

X轴方向:

  定律:

    1)width指的是盒子中内容的宽度,而不是盒子的宽度。

    2)在普通流( normal flow )中,块级元素盒子的宽度一定等于该盒子的父容器的width

    3)X轴方向的属性:margin-left, border-left, padding-left, width, padding-right, border-rightmargin-right。

      其中只有margin-left,margin-right,width可以设置为auto。

  X轴方向使用auto:

    1)设置三个属性中的一个为auto:

      由定律2)可知,子容器的盒子宽度一定等于该盒子的父容器的width。基于这条理论,如果我们设置X轴方向上的某一属性(margin-left,margin-right,width)为auto,浏览器会计算出一个数字value来替换auto,以使得子容器的盒子宽度等于父容器的width。

      eg.1

    <div style="width:500px; background:#999;">
<p style="width:200px; margin-right:200px; margin-left:auto;">
This are some words...
</p>
</div>

      re.1

        div.width = p.width + p.margin-right + p.margin-left  =>  p.margin-left = div.width - (p.width + p.margin-right ) = 500 - (200 + 200) = 100px

      eg.2

<div style="width:500px; background:#999;">
<p style="width:100px; margin-right:200px; margin-left:100px;">
This are some words...
</p>
</div>

      re.2

        这个例子中,p的盒子宽度小于div的width。此时,浏览器会将margin-right:200px替换成margin-right:auto;

        注:这只是针对left-to-right的语言,如中文、英文,对于right-to-left的语言,此行为相反。即设置为margin-left:auto;

    2)同时设置三个属性中的两个为auto:

       除了定律2)要满足外,这两个设为auto的属性将平分剩余宽度(剩余宽度指的是:要使定律2)成立,还需要加上多少宽度)

      eg.3

<style type="text/css">
.content
{
width
:960px;
margin
:0 auto;
}
</style>
<body>
<div class="content">
<div class="header">
</div>
<div class="leftCol">
</div>
<div class="rightCol">
</div>
<div class="footer">
</div>
</div>
</body>

     re.3 

        这个例子就是我们平时要做一个宽度为960像素且水平居中的典型例子,为了使得水平居中,我们设置margin-left,margin-right为auto,浏览器会自动为margin-left,margin-right的值设置为:(浏览器窗口宽度 - div.content.width)/2

   margin-left或者margin-right使用负值:

   规律:一定要满足定律2)

      eg.4

div {width: 400px; border: 3px solid black;}
p.wide
{margin-left: 10px; width: auto; margin-right: -50px; }
    <div>
<p class="wide">
this is a demo
</p>
</div>

      re.4

      p.wide.width = div.width - (p.wide.margin-left + margin-right) = 400 - (10 + (-50)) = 440px

Y轴方向:

   1)与X轴方向的属性一样,只有margin-top,margin-bottom和height可以指定为auto。

   2)不同的是,当我们在普通流中设置margin-top和margin-bottom为auto时,浏览器不予理会,而是自动把它设置为0 (注意,此规则不适于positioned元素)。这使得要上下居中变得困难。

   3)margin折叠:就大原则。

转载于:https://www.cnblogs.com/ifshe/archive/2011/08/17/2143302.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值