盒模型

             在网页中,一个元素占有空间的大小由几个部分构成,其中包括元素的内容(content),元素的内边距(padding),元素的边框(border),元素的外边距(margin)四个部分。这四个部分占有的空间中,有的部分可以显示相应的内容,而有的部分只用来分隔相邻的区域。4个部分一起构成了css中元素的盒模型。其结构如下图所示:

   

下面介绍一下关于盒模型的常见知识点:

1.盒模型共有两种:W3C盒模型和IE盒模型。

 两者的区别为W3C盒模型元素的宽度为content-box的宽度,而IE盒模型的元素宽度为content+padding+margin的宽度。

    CSS3中新增属性box-sizing

        :initial  默认值,即content-box

        :inherit  继承父元素的值

        :content-box 元素的宽度 = content(即CSS中设置的width)+padding+border

        :border-box 元素的宽度 = width(CSS中设置的width)

    calc(支持百分比和像素的混合计算)

         如width:-webkit-calc(40% - 30px);

         注:使用calc需加上前缀,运算符加减(+、-)与数值之间应有空格,否则会认为非法,乘除(*、/)不需要。

2.对于行内元素与块元素

  块元素

    可以设置盒模型的各个属性值。块元素border和padding取负值非法,而margin可以。

    块元素之间的距离根据margin-top和margin-bottom的取值分为如下几种:

     a.都是正数:距离取margin-top和margin-bottom的最大值

     b.都是负数:取最小值

     c.一正一负:正负相加 

   行内元素

    不可以设置宽(width),高(height),对于margin和padding在水平方向设置有效而垂直方向无效,即margin-left与margin-right有效,margin-top和margin-bottom无效,padding也如此。

3.对于块级元素的盒模型

 元素的宽度

    使用js获取盒模型各属性值。若CSS样式为内联样式,可通过element.style.marginLeft获取到;若不是行内元素,style无法获取,IE浏览器和Opera可以使用currentStyle属性获取定义在外部的样式,其他浏览器可通过window.getComputedStyle来获取。   

function getCurrentStyle(element){     
   var currentStyle = null;    
   if(element.currentStyle){        
        currentStyle = element.currentStyle; 
}
else{       
    currentStyle = window.getComputedStyle(element); 
}   
return element.currentStyle; 
}

  指定了宽度width

     1、getCurrentStyle(box).width     得到值为设置的width

     2、box.clientWidth            得到的值为width+padding

     3、box.offsetWidth            得到的值为width+padding+border

     jQuery:$("#box").width();

          $("#box").css('width');

          两个得到的值均为设置的width值,区别为上面得到的是数字,下面得到的是字符串(如“100px”);

  未指定宽度

     1、什么都未指定,则占满父元素

     2、指定margin值,宽度=父元素宽度-margin

     3、若设置了display:inline-block或float或position:absolute时,宽度为包裹内容的宽度

  background属性的覆盖区域

    a.background-color背景色

         为border-box覆盖的区域

       b.background-image背景图片

         默认填充padding-box,即左上方从padding-box开始填充,右下角会超出到border-box,但不会到margin-box。

         CSS3新属性background-origin:border-box

                                     padding-box

                                     content-box

                来设置背景图片填充范围。

  overflow:hidden

     隐藏padding-box以外的部分

  left/top定位

     a.left/top值为默认值(auto),元素在紧贴父元素的content-box区域的左上侧

         b.left/top为指定值,参照父元素padding-box左上角定位

         c.元素自身定位初始点为最外围的margin-box


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值