CSS 盒子模型

目录:

  • CSS 盒子模型(Box Model)
  • CSS 边框
  • CSS 轮廓
  • CSS Margin(外边距)
  • CSS Padding(填充)

CSS 盒子模型(Box Model)

所有HTML元素可以看作盒子,在CSS中,"box model"这一术语是用来设计和布局时使用。

CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:边距,边框,填充,和实际内容。
盒模型允许我们在其它元素和周围元素边框之间的空间放置元素。
下面的图片说明了盒子模型(Box Model):



不同部分的说明:

Margin(外边距) - 清除边框外的区域,外边距是透明的。
Border(边框) - 围绕在内边距和内容外的边框。
Padding(内边距) - 清除内容周围的区域,内边距是透明的。
Content(内容) - 盒子的内容,显示文本和图像。

为了在所有浏览器中的元素的宽度和高度设置正确的话,你需要知道的盒模型是如何工作的。

元素的宽度和高度

重要: 当您指定一个CSS元素的宽度和高度属性时,你只是设置内容区域的宽度和高度。要知道,完全大小的元素,你还必须添加填充,边框和边距。
下面的例子中的元素的总宽度为300px:
<pre>div {
width: 300px;
border: 25px solid green;
padding: 25px;
margin: 25px;
}</pre>
让我们自己算算:
<pre>300px (宽)

  • 50px (左 + 右填充)
  • 50px (左 + 右边框)
  • 50px (左 + 右边距)
    = 450px</pre>

最终元素的总宽度计算公式是这样的:
总元素的宽度=宽度+左填充+右填充+左边框+右边框+左边距+右边距
元素的总高度最终计算公式是这样的:
总元素的高度=高度+顶部填充+底部填充+上边框+下边框+上边距+下边距

浏览器的兼容性问题

一旦为页面设置了恰当的 DTD,大多数浏览器都会按照上面的图示来呈现内容。然而 IE 5 和 6 的呈现却是不正确的。根据 W3C 的规范,元素内容占据的空间是由 width 属性设置的,而内容周围的 padding 和 border 值是另外计算的。不幸的是,IE5.X 和 6 在怪异模式中使用自己的非标准模型。这些浏览器的 width 属性不是内容的宽度,而是内容、内边距和边框的宽度的总和。

<em><strong>虽然有方法解决这个问题。但是目前最好的解决方案是回避这个问题。也就是,不要给元素添加具有指定宽度的内边距,而是尝试将内边距或外边距添加到元素的父元素和子元素。</strong></em>

IE8 及更早IE版本不支持 填充的宽度和边框的宽度属性设。
解决IE8及更早版本不兼容问题可以在HTML页面声明 <!DOCTYPE html>即可。

CSS 边框

border-style

border-style
none 默认无边框
dotted 定义一个点线边框
dashed 定义一个虚线边框
solid 定义实线边框
double 定义两个边框。 两个边框的宽度和 border-width 的值相同
groove 定义3D沟槽边框。效果取决于边框的颜色值
ridge 定义3D脊边框。效果取决于边框的颜色值
inset: 定义一个3D的嵌入边框。效果取决于边框的颜色值
outset 定义一个3D突出边框。 效果取决于边框的颜色值

属性|描述
-|-|-
border | 简写属性,用于把针对四个边的属性设置在一个声明。
border-style|用于设置元素所有边框的样式,或者单独地为各边设置边框样式。
border-width|简写属性,用于为元素的所有边框设置宽度,或者单独地为各边边框设置宽度。
border-color|简写属性,设置元素的所有边框中可见部分的颜色,或为 4 个边分别设置颜色。
border-bottom|简写属性,用于把下边框的所有属性设置到一个声明中。
border-bottom-color|设置元素的下边框的颜色。
border-bottom-style|设置元素的下边框的样式。
border-bottom-width|设置元素的下边框的宽度。
border-left|简写属性,用于把左边框的所有属性设置到一个声明中。
border-left-color|设置元素的左边框的颜色。
border-left-style|设置元素的左边框的样式。
border-left-width|设置元素的左边框的宽度。
border-right|简写属性,用于把右边框的所有属性设置到一个声明中。
border-right-color|设置元素的右边框的颜色。
border-right-style|设置元素的右边框的样式。
border-right-width|设置元素的右边框的宽度。
border-top|简写属性,用于把上边框的所有属性设置到一个声明中。
border-top-color|设置元素的上边框的颜色。
border-top-style|设置元素的上边框的样式。
border-top-width|设置元素的上边框的宽度。

CSS 轮廓(outline)

轮廓(outline)是绘制于元素周围的一条线,位于边框边缘的外围,可起到突出元素的作用。
CSS outline 属性规定元素轮廓的样式、颜色和宽度。


所有CSS 轮廓(outline)属性
"CSS" 列中的数字表示哪个CSS版本定义了该属性(CSS1 或者CSS2)。

属性 说明 CSS
outline 在一个声明中设置所有的轮廓属性 *outline-color
outline-style
outline-width
*inherit
2
outline-color 设置轮廓的颜色 *color-name
hex-number
rgb-number
invert
*inherit
2
outline-style 设置轮廓的样式 *none
dotted
dashed
solid
double
groove
ridge
inset
outset
*inherit
2
outline-width 设置轮廓的宽度 thin
medium
thick
*length
*inherit
2

CSS Margin(外边距)

CSS Margin(外边距)属性定义元素周围的空间。

<em><b>Margin</b></em> 清除周围的元素(外边框)的区域。margin没有背景颜色,是完全透明的。可以单独改变元素的上,下,左,右边距。也可以一次改变所有的属性。

<em>可能的值</em>
说明
auto 设置浏览器边距。这样做的结果会依赖于浏览器
length 定义一个固定的margin(使用像素,pt,em等)
% 定义一个使用百分比的边距
<em>所有的CSS边距属性</em>
属性 描述
margin 简写属性。在一个声明中设置所有外边距属性。(顺序:上右下左)
margin-bottom 设置元素的下外边距。
margin-left 设置元素的左外边距。
margin-right 设置元素的右外边距。
margin-top 设置元素的上外边距。

CSS Padding(填充)

<em><b>Padding(填充)</b></em> 当元素的 Padding(填充)(内边距)被清除时,所"释放"的区域将会受到元素背景颜色的填充。

单独使用填充属性可以改变上下左右的填充。缩写填充属性也可以使用,一旦改变一切都改变。

<em><b>可能的值</b></em>

说明
length 定义一个固定的填充(像素, pt, em,等)
% 使用百分比值定义一个填充

<em><b>所有的CSS填充属性</b></em>

属性 说明
padding 使用缩写属性设置在一个声明中的所有填充属性(顺序:上右下左)
padding-bottom 设置元素的底部填充
padding-left 设置元素的左部填充
padding-right 设置元素的右部填充
padding-top 设置元素的顶部填充
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,710评论 4 376
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,839评论 2 308
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 112,295评论 0 255
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,776评论 0 223
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,198评论 3 297
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 41,074评论 1 226
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,200评论 2 322
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,986评论 0 214
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,733评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,877评论 2 254
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,348评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,675评论 3 265
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,393评论 3 246
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,209评论 0 9
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,996评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,212评论 2 287
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 36,003评论 2 280

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,635评论 1 92
  • 前言 总括: 对于盒子模型,BFC,IFC和外边距合并等概念和问题的总结 原文地址:从CSS盒子模型说起 知乎专栏...
    秦至阅读 725评论 0 3
  • 1.盒子模型 所谓盒子模型就是把HTML页面中的元素看作是一个矩形的盒子,也就是一个盛装内容的容器。每个矩形都由元...
    楚简约阅读 2,464评论 3 4
  • 今夜无眠,月色暂伴。 笔尖只为你流畅, 内心只因你斑斓, 却也因此而殇。 爱上一个不该爱的人需要多大的勇气, 才能...
    柳若素阅读 87评论 1 5
  • 一、屏幕参数 1、分辨率 分辨率指的是手机屏幕的像素点个数,如720*1080,指宽有720、高有1080个像素点...
    潜心之力阅读 973评论 0 0