分类 HTML/CSS 下的文章

CSS 框模型(Box Model)

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

CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:边距,边框,填充,和实际内容。

盒模型允许我们在其它元素和周围元素边框之间的空间放置元素。

下面的图片说明了框模型(Box Model):

CSS 框模型的介绍

术语翻译:

Margin - 清除边框区域。Margin没有背景颜色,它是完全透明

Border - 边框周围的填充和内容。边框是受到盒子的背景颜色影响

Padding - 清除内容周围的区域。会受到框中填充的背景颜色影响

Content - 盒子的内容,显示文本和图像

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

元素的宽度和高度

重要: 当您指定一个CSS元素的宽度和高度属性时,你只是设置内容区域的宽度和高度。要知道,完全大小的元素,你还必须添加填充,边框和边距。.

下面的例子中的元素的总宽度为300px:


width:250px;padding:10px;border:5px solid gray;margin:10px;

让我们自己算算:

250px (宽)
+ 20px (left + 右填充)
+ 10px (left + 右边框)
+ 20px (left + 右边距)
= 300px

试想一下,你只有250像素的空间。让我们设置总宽度为250像素的元素:

实例


width:220px;padding:10px;border:5px solid gray;margin:0px;

最终元素的总宽度计算公式是这样的:

总元素的宽度=宽度+左填充+右填充+左边框+右边框+左边距+右边距

元素的总高度最终计算公式是这样的:

总元素的高度=高度+顶部填充+底部填充+上边框+下边框+上边距+下边距

浏览器的兼容性问题

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

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

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

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

HTML编码规范:

  • 使用小写元素名:<session>
  • 关闭所有HTML元素:<p></p>
  • 使用小写属性名:<div class=”menu”>
  • 属性值使用引号:<table class=”table striped”>
  • 图片通常使用alt属性:<img src=”html5.gif” alt=”HTML5″>
  • 等号前少用空格:<link rel=”stylesheet” href=”style.css”>
  • 不要随便添加空行,缩进使用两个空格,不建议使用TAB
  • 布尔型属性不用赋值:<input type=”text” disabled>
  • 尽量避免多余的父元素

HTML属性顺序:

  1. class
  2. id,name
  3. data-*
  4. src,for,type,href
  5. title,alt
  6. aria-*,rolo

CSS编码规范:

  • 用二个空格代替tab
  • 为选择器分组时,将单独的选择器单独放在一行
  • 每个声明块的左花括号前添加一个空格
  • 声明块的右花括号单独成行
  • 每条声明语句的 :后应该插入一个空格
  • 每条声明独占一行
  • 所有声明语句都应当以分号结尾 ;
  • 对于以逗号分隔的属性值,每个逗号后面都应该插入一个空格
  • 对于属性值或颜色参数,省略小于1的小数前面的0
  • 避免为0值指定单位:用margin:0 代替 margin:0px
  • 媒体查询@media放在尽可能相关规则的附近
  • 只包含一条声明的样式,建议将语句放在同一行。
  • 对于通用元素使用class
  • 选择器尽可能短,并且尽量限制组成选择器的元素个数不超过3

CSS max-width(height)属性设置对象的最大宽高

语法:


max-width : none | length
max-height : none | length

参数:

none :  无最大高度限制
length :  由浮点数字和单位标识符组成的长度值 | 或者百分数。不可为负数。

说明:

设置或检索对象的最大宽高度。
max-height属性的值小于min-height属性的值,将会被自动转设为min-height属性的值。
max-width属性的值小于min-width属性的值,将会被自动转设为min-width属性的值。
目前IE5.5尚不支持此属性。
对应的脚本特性为 maxHeight (maxWidth)。

示例:


       p { max-height: 200%; } 

        p { max-width: 200%; } 

定义和用法

max-width 定义元素的最大宽度。
max-height 属性设置元素的最大高度。

说明
该属性值会对元素的宽度设置一个最高限制。因此,元素可以比指定值窄,但不能比其宽。不允许指定负值。
该属性值会对元素的高度设置一个最高限制。因此,元素可以比指定值矮,但不能比其高。不允许指定负值。

注释:max-height 属性不包括外边距、边框和内边距。

可能的值

描述
none 默认。定义对元素的最大宽度没有限制。
length 定义元素的最大宽度值。
% 定义基于包含它的块级对象的百分比最大宽度。
inherit 规定应该从父元素继承 max-width 属性的值。

所有主流浏览器都支持 max-width 和 max-height 属性。

注:任何版本的 Internet Explorer (包括 IE8)都不支持属性值 "inherit"。

CSS min-height(width)属性设置对象的最大高度(宽度)

语法:


min-height : none | length
min-width : none | length

参数:

none :  无最小高度限制
length :  由浮点数字和单位标识符组成的长度值 | 或者百分数。不可为负数。

说明:

设置或检索对象的最小高度。
如果min-height属性的值大于max-height属性的值,将会被自动转设为max-height属性的值。
同样,如果min-width属性的值大于max-width属性的值,将会被自动转设为max-width属性的值
目前IE5.5尚不支持此属性。
对应的脚本特性为 minHeight (minWidth)。

示例:


        p { min-height: 200px; } 

        p { min-width: 200px; } 

定义和用法

min-width 属性设置元素的最小宽度,
min-height 属性设置元素的最小高度。

说明

min-width,该属性值会对元素的宽度设置一个最小限制。因此,元素可以比指定值宽,但不能比其窄。不允许指定负值。
min-height,该属性值会对元素的高度设置一个最低限制。因此,元素可以比指定值高,但不能比其矮。不允许指定负值。

可能的值

描述
length 定义元素的最小高度。默认值是 0。
% 定义基于包含它的块级对象的百分比最小高度。
inherit 规定应该从父元素继承 min-height 属性的值。

所有主流浏览器都支持 min-height 属性。

注:任何版本的 Internet Explorer (包括 IE8)都不支持属性值 "inherit"。

css width 和 height 属性设置对象的宽高度

语法:


height : auto | length
width : auto | length

参数:

auto :  无特殊定位,根据HTML定位规则载文档流中分配
length :  由浮点数字和单位标识符组成的长度值 | 百分数。百分数是基于父对象的高度。不可为负数。

说明:

检索或设置对象的高度或者宽度。
对于img对象来说,仅指定此属性,其width值将根据图片源尺寸等比例缩放。
对应的脚本特性为height或者width。其值为一字符串,所以不可用于脚本(Scripts)中的计算。请使用style对象的posHeight,pixelHeight,以及对象的offsetHeight或者posWidth,pixelWidth,以及对象的offsetWidth等特性。
对应的脚本特性为 height 。

示例:




        div { width: 100px; } 
        div { position:absolute; top:-3px; width:6px; } 

        div { height: 60px; } 
        div { position:absolute; top:-3px; height:6px; }

定义和用法

height 属性设置元素的高度。
width 属性设置元素的宽度。

说明

这个属性定义元素内容区的高度,在内容区外面可以增加内边距、边框和外边距。

行内非替换元素会忽略这个属性。

默认值: auto
继承性: no
版本: CSS1

可能的值

描述
auto 默认。浏览器会计算出实际的高度。
length 使用 px、cm 等单位定义高度。
% 基于包含它的块级对象的百分比高度。
inherit 规定应该从父元素继承 height 属性的值。

注:所有主流浏览器都支持 height 和 width 属性。