CSS教程之CSS盒模型

2016-02-19 23:47 4 1 收藏

在这个颜值当道,屌丝闪边的时代,拼不过颜值拼内涵,只有知识丰富才能提升一个人的内在气质和修养,所谓人丑就要多学习,今天图老师给大家分享CSS教程之CSS盒模型,希望可以对大家能有小小的帮助。

【 tulaoshi.com - Web开发 】

CSS 盒模型

网页设计中的每个元素都是长方形的盒子。盒子的尺寸是怎样精确计算的,请看下图:

thebox

如果是 Firebug 用户的话(基本和前端有关的都会用到 Firebug 吧 – 糖伴西红柿),就会很熟悉下面的图表了。
这个图表很好地展示了作用于页面上任意盒子的数值。

firebug

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

注意以上两个例子中,margin 都是白色的。Margin 比较特别,它不会影响盒子本身的大小,但是它会
影响和盒子有关的其他内容,因此 margin 是盒模型的一个重要的组成部分。

盒子本身的大小是这样计算的:

Width Height 值未声明的情况

如果未声明 padding 或者 border,那他们或者值为零(使用 css reset 时),或者为浏览器的默认值(很可能不是零,尤其是那些通常没有重置的表单元素)

块级盒的默认宽度

如果未声明宽度,并且盒子是静态或者相对定位的,宽度会保持 100%的 宽度,padding 和 border 会向内推动,而不是向外扩展。

但是,如果明确设置盒子的宽度为 100%,那么 padding 就会向外延展。

weird

The lesson here being that the default width of a box isn’t really 100% but a less tangible whatever is left. This is particularly valuable to know, since there are lots of circumstances where it is immensely useful to either set or not set a width.

要注意的是,盒子的默认宽度并不真的是 100%,而是剩下的可能值(应该是说,剩余真实存在的宽度 - 糖伴西红柿)。应该了解这个特殊值,因为很多情况下,它对于设置/不设置宽度都是非常有用的。

我遇到的最大的麻烦就是 textarea(文本框) 元素了,它们需要设为宽度为所需的cols属性,并且不能包含子元素。因此通常需要明确的设置 textarea 的宽度为 100%,但有 padding 时,就会延展 textarea 的宽度。固定宽度环境下,通常可以设置为合适的像素值宽度,但是变宽情况就没那么幸运了。

无宽度的绝对定位盒子

未设定宽度的绝对定位的盒子的表现有点不一样。它们的宽度只需要适合它们所包含的内容即可。因此,如果盒中只有一个单词,盒子就会像那个词的表现一样宽。如果变成两个词,盒子的宽度也会相应增加。

abs-width

这种情况会持续到盒子的宽度达到父元素宽度的 100%(最近的相对定位的父元素或者浏览器窗口),然后就会折行。

对盒子来说,垂直扩展以适应包含的内容是很自然的。值得奇怪的是,不仅仅是不同平台下的文本表现不同,不同的浏览器处理这个问题时,也有很多怪癖。

text-render-abs

无宽度浮动盒子

同无宽度的绝对定位盒子的表现一样。盒子的宽度只需要扩展到所包含内容的宽度,直到其父元素的宽度(其父元素不必是相对定位的)。由于这些无宽度盒子的脆弱性,我们要学到的是关键任务模式的时候它们是不能依赖的,像总体页面布局中。如果浮动一列作为侧边栏使用,并指望那些内部元素(如图片)来负责包含它的宽度,你就是在自找麻烦。

内联元素也是盒子

我们这里一直把重点放在块级元素的盒子上。很容易就可以把块级元素想象为盒子,但是内联元素也是盒子。可以把他们想象为非常长而窄的长方形,它们也可以像其它盒子一样有 margin, padding he border

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

span

折行使它看起来有些不好理解。如上所示的左 margin 把盒子推向右边,但是只在第一行有效,因为那是盒子的起点。padding 正常的应用在文本的上部或下部,当折行时它会忽略上面行的 padding 并且以行高(line-height)要求的位置作为起点。透明背景是为了让效果看起来更清楚。

亲眼目睹一下

想看看组成页面的每个单独的盒子吗?试着把这行代码暂时放入样式表:

* {   border: 1px solid red !important;}

all-is-a-box

来源:http://www.tulaoshi.com/n/20160219/1630628.html

延伸阅读
标签: Web开发
display:box;box-flex是css3新添加的盒子模型属性,它的出现可以解决我们通过N多结构、css实现的布局方式。经典的一个布局应用就是布局的垂直等高、水平均分、按比例划分。 目前box-flex属性还没有得到firefox、Opera、chrome浏览器的完全支持,但可以使用它们的私有属性定义firefox(-moz-)、opera(-o-)、chrome/safari(-webkit-)。 一、bo...
1.基本语法 CSS的定义是由三个部分构成:选择符(selector),属性(properties)和属性的取值(value)。 基本格式如下: selector { property: value} (选择符 { 属性:值}) 选择符是可以是多种形式,一般是你要定义样式的HTML标记,例如BODY、P、TABLE……,你可以通过此方法定义它的属性和值,属性和值要...
标签: Web开发
你如何为成千上万的用户和页面提供CSS? 这是Nicole Sullivan在她的在丹佛的Web Directions North 大会上的幻灯片中尝试回答的问题。得益于面向对象的CSS (OOCSS),这个想法从社区收集到了大量的反馈。 OOCSS显然已经不仅仅是一个工具了,它还是一种思考的方式。根据这个观念可以有很多优势,主要来说有: 它可以让你写更快的、可维护的...
标签: Web开发
课程关键词:、、 要求: 1)宽度、高度均是200像素; 2)颜色为红色#900; 自己做做,看看能不能作出来?先不要看我的代码,如果真的做不出来,就下载下来,跟着我下面说的一步一步修改。 下面是我的代码:  例子1.rar (498 Bytes) 在IE6和FF中显示效果如下图:   怎么样,比较容易吧~,但是你们有没有发现,红色区域离...
标签: Web开发
当我们布局一个网页的时候,经常会遇到这样的一种情况,那就是最终网页成型的宽度或是高度会超出我们预先的计算,其实就就是所谓的CSS的盒模型造成的。 如上一段的代码,很多时候我们会把它所占的位置计算成width:120px,height:120px,因为在正常的理解下,padding是内边距,应该是包括在width里面的,而margin是外边距,所以width=margi...

经验教程

404

收藏

74
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部