码迷,mamicode.com
首页 > 其他好文 > 详细

块级元素-盒子模型

时间:2015-04-03 22:30:31      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:

前言

  入侵前端计划的第一周即将结束,《CSS权威指南》已近尾声,真心推荐,是本好书,会带来一些新的认识,比如说盒子模型。

  如果想讨论讨论,欢迎评论,共同进步嘛,初来乍到,有何不妥,请多多指点。

 

引入问题

  据说CSS中最基础的一个重点,也就是最重点的一个基础,就是盒子模型,究竟什么是盒子模型?

 

基本概念

  本文中会提到的名词列在下面,如文章有其他不熟悉的词汇,请请求网络帮助。

    1. 正常流:正常文本从左向右、从上向下显示,称为正常流,本文一律在正常流下进行讨论,浮动和定位会让元素脱离正常流。

    2. 非替换元素:元素内容包含在文档中,如<p>、<h1>。

    3. 替换元素:用作为其他内容占位符的元素,如<img>。

    4. 块级元素:本文介绍块级元素的一些特征,从最基本的<div>、<p>元素开始。

    5. 外边距(margin):默认值为0,可以为负数。

    6. 边框(border):默认没有边框,宽度不能为负数。

    7. 内边距(padding):默认值为0,不能为负数。

    8. 宽度(width):默认值为auto,不能为负数,为内容宽度(不包括内边距)。

    9. 高度(height):默认值为auto,不能为负数,为内容高度(不包括内边距)。

 

盒子模型

  开篇第一图盗自百度百科。
    技术分享  

  这就是伟大的盒子模型,有什么特性,你猜。为了方便下文的观察,CSS噼里啪啦敲些东西。
    技术分享

 

水平方向格式化

  水平方向有如下关系:

    技术分享  

  其中可以设置为auto的属性有三个:margin-left、width、margin-right,于是乎,就有了以下絮絮叨叨的各种情况的讨论。
    1. 0个auto:此时会根据一个叫过分受限的原则,将margin-right自动变为auto,有如下效果。
      技术分享      

      看效果,左边距是100px,宽度是200px,但是右边距是auto,根据公式可以得出auto最终的值,恰好填满父级width。    

      2. 1个auto:三者中无论那个是auto,都会计算出相应的值,使得满足上述公式。        

       技术分享

    3. 2个auto:如果margin两个值是auto,此时会使两者相等,从而满足公式,此情况常用与居中,就不截图了;如果是width和margin其中之一,该margin会被置0。        技术分享    

    4. 3个auto:此时两个margin会被置零,width会尽可能宽,以满足公式。      

        技术分享  

  还有一些附加点,乱七八糟的。
    1. 水平方向的外边距不会合并,垂直方向会合并的,下文详述。

    2. 各种值都可以用百分数,但是不够灵活,还是乖乖的该用啥用啥吧。    

    3. 外边距可以为负数,依旧满足公式,只不过width会比父级宽罢了。    

    4. 块级替换元素,当width设置为auto,宽度会变为内容的宽度。

 

垂直方向格式化

  也有一个公式,万能的。
    技术分享   height的值默认为auto,也就是随着内容的高度变化而变化,当指定一个高度时,参考内容的高度,会出现过小或者过大的情况,这个很简单,就自行脑补一下吧。
  当然也有三个值,可以设置为auto,margin-top、margin-bottom、height,当margin设置为auto时,会被置零,当height设置为auto时,默认情况就不多说了。

外边距合并

  块级元素水平方向不会合并外边距,但是垂直方向会合并,大的吃小的的道理,效果如下。
    技术分享

 

小结

  越看到后面越乏味,但是依旧要坚持,今天是周五,还有70多页就搞定了,只是博客没有写,这几天看不进去的时候还在看《JavaScript DOM  编程艺术》,马上看完了,下周可以借用两天来补偿这周的时间了!

块级元素-盒子模型

标签:

原文地址:http://www.cnblogs.com/zhangkeyang/p/4391104.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!