CSS 盒模型

什么是盒模型

CSS盒子模型就是在网页设计中经常用到的CSS技术所使用的一种思维模型。

盒模型种类

css的盒模型有2种,分别为:

  1. W3c标准的盒子模型(标准盒模型),width和height指的是内容区域的宽度和高度;
  2. IE标准的盒子模型(怪异盒模型),width和height指的是内容区域、边框、内边距总的宽度和高度。

盒模型构成

一个盒子中主要的属性分为width、height、padding、border、margin。如下:
Margin(外边距) - 清除边框外的区域,外边距是透明的。
Border(边框) - 围绕在内边距和内容外的边框。
Padding(内边距) - 清除内容周围的区域,内边距是透明的。
Content(内容) - 盒子的内容,显示文本和图像。

盒模型示意图

盒模型

为什么要设计盒模型

盒模型的设计极大地方便了开发者在开发页面时的布局问题。

两种盒模型的优缺点

标准盒子的好处在于比较符合人定义元素的宽高度,但IE 盒子更适合布局和表单。

把盒子设置为IE盒模型,不论内边距距,边框如何改变盒子的真实宽高都不会发生改变。

有一个场景会比较常见,比如有两个div,各占50% , 很明显如果设定padding border margin , 这两个div就不会在一行了。所以IE 盒子更适合布局。
目前css3有个属性 box-sizing 可以 设定div 的盒子模型类别。如下:

box-sizing: conteng-box(标准的) | border-box(IE的) | inherit

盒模型构建及布局

盒模型构建之margin

定义

margin 清除周围的(外边框)元素区域。margin 没有背景颜色,是完全透明的。

margin 可以单独改变元素的上,下,左,右边距,也可以一次改变所有的属性。
margin

用法

margin-top:100px; //上外边距是 25px
margin-bottom:100px; //右外边距是 25px
margin-right:50px; //下外边距是 25px
margin-left:50px; //左外边距是 25px

当然,有更简便的书写方式:

margin属性可以有一到四个值。

margin:25px 50px 75px 100px;
上边距为25px
右边距为50px
下边距为75px
左边距为100px

margin:25px 50px 75px;
上边距为25px
左右边距为50px
下边距为75px

margin:25px 50px;
上下边距为25px
左右边距为50px

margin:25px;
所有的4个边距都是25px

*margin属性允许使用负值,用于重叠等操作。
*margin属性可以定义一个固定的填充(像素, pt, em,等),也可以使用%,用百分比值定义一个填充。
*margin属性还可以使用"auto"来设置浏览器边距,但这样做的结果会依赖于浏览器。

盒模型构建之border

定义

CSS边框属性允许指定一个元素边框的样式和颜色。

用法

颜色-border-color

border-color属性用于设置边框的颜色。可以设置的颜色:

name - 指定颜色的名称,如 “red”
RGB - 指定 RGB 值, 如 “rgb(255,0,0)”
Hex - 指定16进制值, 如 “#ff0000”
还可以设置边框的颜色为"transparent"。

举个例子:

border-style:solid;
border-color:red;

注意: border-color单独使用是不起作用的,必须得先使用border-style来设置边框样式。

单独设置各边样式-border-style

在CSS中,可以指定不同的侧面不同的边框:

border-top-style:dotted;
border-right-style:solid;
border-bottom-style:dotted;
border-left-style:solid;

border-style属性可以有1-4个值:

border-style:dotted solid double dashed;
上边框是 dotted
右边框是 solid
底边框是 double
左边框是 dashed

border-style:dotted solid double;
上边框是 dotted
左、右边框是 solid
底边框是 double

border-style:dotted solid;
上、底边框是 dotted
右、左边框是 solid

border-style:dotted;
四面边框是 dotted

*也可以和border-width 、 border-color一起使用。

边框-简写属性
border:5px solid red;

border其他属性

盒模型构建之padding

定义

padding(填充)是一个简写属性,定义元素边框与元素内容之间的空间,即上下左右的内边距。
padding

用法

padding-top:25px; //上内边距是 25px
padding-bottom:25px; //下内边距是 25px
padding-right:50px; //右内边距是 25px
padding-left:50px; //左内边距是 25px

当然,有更简便的书写方式:

Padding属性,可以有一到四个值。

padding:25px 50px 75px 100px;
上填充为25px
右填充为50px
下填充为75px
左填充为100px
	
padding:25px 50px 75px;
上填充为25px
左右填充为50px
下填充为75px
	
padding:25px 50px;
上下填充为25px
左右填充为50px
	
padding:25px;
所有的填充都是25px

*padding属性不允许使用负值。
*padding属性可以定义一个固定的填充(像素, pt, em,等),也可以使用%,用百分比值定义一个填充。

盒模型构建之content

用width、height来进行设置…

浏览器的兼容性问题

根据 W3C 的规范,元素内容占据的空间是由 width 属性设置的,而内容周围的 padding 和 border 值是另外计算的。不幸的是,IE5.X 和 6 在怪异模式中使用自己的非标准模型。这些浏览器的 width 属性不是内容的宽度,而是内容、内边距和边框的宽度的总和。

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

IE8 及更早IE版本不支持设置填充的宽度和边框的宽度属性。

解决IE8及更早版本不兼容问题可以在HTML页面声明 即可。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值