css盒子模型包含哪几部分

html-css012

css盒子模型包含哪几部分,第1张

盒子模型分为哪几部分?

一个盒子模型分成几部分:

- 内容区(content)

- 内边距(padding)

- 边框(border)

- 外边距(margin)12345

内容区

内容区:盒子中放置内容的区域,也就是元素中的文本内容,子元素都是存在于内容区中的。

如果没有元素设置内边距和边框,则设置内容大小偶人和盒子大小一致123

通过width 和height 两个属性可以设置内容的大小1

width 和height属性值适合用于块元素1

内边距

内边距:元素内容区与边框以内的空间1

默认情况下width和height不包含padding的大小

12

使用padding属性来设置元素的内边距

举例:

-padding:10px 20px 30px 40px

这样会设置元素的 上,右,下,上 四个方向的内边距。(按照顺时针方向)

padding:10px 20px 30px

分别指定 上,左右,下 四个方向的内边距

padding:10px 20px

分别指定上下,左右四个方向的内边距

padding:10px

分别指定 上左下右 四个方向的内边距

同时在CSS中还提供padding-top padding-right padding-left padding-bottom1234567891011121314

边框

可以在元素周围创建边框,边框是元素可见的最外部1

可以使用border属性来设置盒子的边框:

-border:1px red solid

上边的样式分别指定了边框的 宽度 ,颜色,样式123

也可以使用border-top/left/right/bottom分别指定 上右下左 四个方向的边框

和padding一样,默认width 和height 并包括边框的宽度123

边框样式

边框样式可以设置多种样式:

-none(没有边框)

-dotted(点线)

-dashed(虚线)

-solid(实线)

-double(双线)

-groove(槽线)

-ridge(脊线)

-inset(凹线)

-outset(凸线)1234567891011

外边距

外边距是原素边框与周围元素相距的空间1

使用margin属性可以设置外边距1

用法和padding 类似,同样也提供了四个方向的

margin-top/right/bottom/left12

当将左右外边距设置为auto时,浏览器会将左右外边距设置为相等,所以这行代码 margin:0 auto 可以使元素居中

1

margin 在一个声明中设置所有外边距属性。

margin-top设置元素的上外边距。

margin-bottom 设置元素的下外边距。

margin-left设置元素的左外边距。

margin-right 设置元素的右外边距。

块状元素特点:

内联元素特点:

内联块状元素特点:

display:block 可以将元素设置为块状元素

display:inline 可以将元素设置为内联元素

display:inline-block可以将元素设置为内联块状元素

每个HTML元素都会有盒子模型,如下图

[图片上传失败...(image-8891fd-1543076237898)]

可以看到,盒子模型中,一个标签是由内容,内填充(padding)、边框(border)、外边距(margin)组成的

一个元素的宽度=左边距+左边框+左填充+内容宽度+右填充+右边框+右边距

一个元素的高度=上边距+上边框+上填充+内容高度+下填充+下边框+下边距

盒子模型用于处理元素的内容、内边距、边框和外边距的方式简称。元素框的最内部分是实际的内容,直接包围内容的是内边距。内边距呈现了元素的背景。内边距的边缘是边框。边框以外是外边距,外边距默认是透明的,因此不会遮挡其后的任何元素。

内边距、边框和外边距都是可选的,默认值是零。但是,许多元素将由用户代理样式表设置外边距和内边距。可以通过将元素的 margin 和 padding 设置为零来覆盖这些浏览器样式。

CSS实现页面布局的一种思想:把页面的所有元素都看成一个类似于礼品盒的盒子,礼品盒可能会有好多层包装组成,那么页面元素也对应的有内容、边框、内外边距等组成。这里特别提醒一下,盒模型是要把元素看成立体的,它确实有空间的3D属性,css盒子3D模型从上到下分为5层:1、border;2、content+padding;3、background-image;4、background-color;5、margin。

目前有: 标准盒子模型和IE盒子模型 2种盒模型 ,区别在于:

为了满足跨浏览器的差异,我们比较肯定的方式是使用标准盒模型,这里通过在网页顶部增加DOCTYPE的声明,来解决跨浏览器兼容方案(或者使用css3的声明方式):

块级元素会独占一行,默认情况下,其宽度自动填满其父元素宽度。

行内元素不会独占一行,相邻的行内元素会排列在同一行里,直到一行排不下,才会换行,其宽度随元素的内容而变化,另外

块级元素:div , p , form, ul, li , ol, dl,form, address, fieldset, hr, menu, table...

行内元素(内联元素):a , span, strong, em, br , img , input, label, select, textarea, cite....

如果想让一个元素可以设置宽度高度,又让它以行内形式显示,我们可以设置display的值为inline-block。

CSS3增加的box-sizing属性,允许我们规定元素使用哪种盒模型。IE8及以上版本支持该属性,Firefox 需要加上浏览器厂商前缀-moz-,对于低版本的IOS和Android浏览器也需要加上-webkit-。它具有有3个属性值:

box-sizing:content-box: W3C标准盒模型,默认属性。padding和border不被包含在定义的width和height之内。

box-sizing:border-box: IE6混杂模式盒模型, padding和border被包含在定义的width和height之内。此属性表现为怪异模式下的盒模型。

box-sizing:inherit : 从父级元素中继承该属性。

如果设置box-sizing:border-box来使用IE6混杂盒模型 ,那么

设置padding与border后,内容区的宽度和高度被压缩为70px 70px,盒子的原尺寸仍然是100px 100px

当一个容器宽度定义为 width:100%之后,如果再增加 padding 或者 border 则会溢出父容器,是向外扩张的。如果使用该样式,指定为 box-sizing: border-box则 padding 和 border 就不会再溢出,而是向内收缩的,这个效果是非常实用的。