box-sizing: content-box|border-box|inherit;
描述
content-box

这是由 CSS2.1 规定的宽度高度行为。

宽度和高度分别应用到元素的内容框。

在宽度和高度之外绘制元素的内边距和边框。

border-box

为元素设定的宽度和高度决定了元素的边框盒。

就是说,为元素指定的任何内边距和边框都将在已设定的宽度和高度内进行绘制。

通过从已设定的宽度和高度分别减去边框和内边距才能得到内容的宽度和高度。

inherit 规定应从父元素继承 box-sizing 属性的值。

这里头的问题在于,CSS2.1规定默认是content-box,即W3C标准模型,另一种为IE传统模型也叫怪异模型border-box

当然现实是很残酷的,看看现在的Bootstrap或Foundation,都又使用了border-box模式,这说明什么?说明IE一开始干对了,W3C把这事给搞错了。遵循W3C的布局,带来了很多潜在问题,这是一个巨大的灾难,虽然没有人指出这一点。

这两者的差异主要是,W3C的Width(Height)计算,不包含Padding和Border,Border-box模式,Width包括内容,Padding,Border。

后者的好处是非常明显的,比如我定义一个Width:200px的DIV,后来我又要给加个1px边框,这下好了,W3C标准下,布局乱了,要不就得重新调整Width等,变成了

Width:199px;border:1px,计算起来相当麻烦,这在多个嵌套DIV里,加边框及改变Padding的时候尤其麻烦。

使用传统模式:就明显的分布了盒内和盒外,外边就是Margin,里边就是Width,这样计算起来简单多了。

另一个问题是Form表单元素多使用border-box模式。

那么,使用border-box模式来布局,就需要注意浏览器兼容性,考虑到Bootstrap等的应用,及移动应用,应该选择全站border-box模式。

遗憾的是,现在的绝大多数网站使用了默认的content-box模式,而新型的Bootstrap等使用了全局的border-box模式。

如何修复两者的不兼容?

当然全部改正也是应该的,但不想大改的情况下,在引入Bootstrap等框架后,把原来布局出错的部分,加上:box-sizing:content-box属性。

更详细的参考此文:

http://www.w3cplus.com/content/css3-box-sizing

CSS基本知识3-CSS盒模型的更多相关文章

  1. Web前端篇:CSS常用格式化排版、盒模型、浮动、定位、背景边框属性

    目录 Web前端篇:CSS常用格式化排版.盒模型.浮动.定位.背景边框属性 1.常用格式化排版 2.CSS盒模型 3.浮动 4.定位 5.背景属性和边框属性 6.网页中规范和错误问题 7.显示方式 W ...

  2. css学习の第三弹—盒模型的创建和使用

    一.css盒模型: 元素分类: 块状元素.内联元素(又叫行内元素)和内联块状元素. >>常用的块状元素有: <div>.<p>.<h1>...<h ...

  3. CSS选择器、样式、盒模型

    一.CSS基础选择器 # 1.*(通配选择器):html,body以及body下用于显示的标签 #html和body颜色会被改变,但是div标签不会发生改变,由于不同的选择器具有优先级 # 语法:* ...

  4. 第一章入门篇CSS样式的分类、盒模型

    1.CSS样式的分类 CSS样式分为一项4种: 1.内联样式表,直接写在元素style属性里面的样式,如 <p style="color:red;">内联样式</ ...

  5. CSS(二) 颜色 盒模型 文字相关 border

    一.颜色 rgb(r,g,b)  rgb取值 0-255   分别是 色光三元色  red green blue rgba(r,g,b,a) rgb同上  a 是 alpha  代表透明度 colot ...

  6. 笔记《精通css》第3章 盒模型,定位,浮动,清理

    第3章    盒模型,定位,浮动,清理 1.盒模型用到的属性width,height,padding,border,margin 普通文档流的上下垂直margin会叠加 2.块级框 与 行内框, 利用 ...

  7. 前端学习 -- Css -- 内联元素的盒模型

    内联元素不能设置width和height: 设置水平内边距,内联元素可以设置水平方向的内边距:padding-left,padding-right: 垂直方向内边距,内联元素可以设置垂直方向内边距,但 ...

  8. CSS学习(8)盒模型

    box:盒子,每个元素在页面中都会生成一个矩形区域(盒子) 盒子类型: 1.行盒,display属性=inline的元素,不换行(默认值) 2.块盒,display属性=block的元素,换行 浏览器 ...

  9. 深入css布局篇(1) — 盒模型 & 元素分类

    深入css布局(1)-- 盒模型 & 元素分类     " 在css知识体系中,除了css选择器,样式属性等基础知识外,css布局相关的知识才是css比较核心和重要的点.今天我们来深 ...

  10. IE浏览器和CSS盒模型【转】

    总结:css盒模型在不同浏览器之间(例如:ie和其他浏览器 如火狐)的差异只存在于ie6之前的版本中,如ie5.在ie6下, Internet Explorer 在标准模式下渲染时使用了 CSS 规范 ...

随机推荐

  1. js去掉字符串的空格

    //去左空格; function ltrim(s){ return s.replace(/(^s*)/g, ""); } //去右空格; function rtrim(s){ re ...

  2. Linux安全基础:grep命令的使用

    grep (缩写来自Globally search a Regular Expression and Print)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.Unix的 ...

  3. RecyclerView-------MyAdapter代码

    package com.example.administrator.recyclerview; import android.content.Context; import android.suppo ...

  4. Android客户端与Eclipse服务器端的Socket通信

    Server端代码 用来实现客户端socket的监听 package MyServer; import java.io.BufferedReader; import java.io.BufferedW ...

  5. get_locked_objects_rpt.sql

    在metalink上看到一个脚本(get_locked_objects_rpt.sql),非常不错,如下所示 /*------------------------------------------- ...

  6. SQL Server:触发器详解

    1. 概述 触发器是一种特殊的存储过程,它不能被显式地调用,而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活. 所以触发器可以用来实现对表实施复杂的完整性约束. 2. 触发器的分类 SQL S ...

  7. css3【语法要点】

    语法要点 display: -webkit-box; /* 老版本语法: Safari, iOS, Android browser, older WebKit browsers. */ display ...

  8. 设计模式C#实现(十三)——享元模式(蝇量模式)

    意图 0 适用性 1 结构 2 实现 3 效果 4 参考 5 意图 运用共享技术有效地支持大量细粒度的对象. 适用性 当以下情况都成立时使用: 一个程序使用了大量的对象 完全由于使用大量对象造成很大存 ...

  9. C++STL - 函数模板

    模板主要是为了泛型编程,做到与类型无关 模板有函数模板和类模板,本文主要整理的是函数模板 1.函数模板定义 template<typename 类型形参1,typename 类型形参2,...& ...

  10. centos 进度条卡死

    CentOS 6.7 系统 在执行完删除更新包的全部操作之后, yum remove -y Deployment_Guide-en-US finger cups-libs cups ypbind &a ...