精通css 高级web标准解决方案——可视化格式模型

1-盒模型的两种标准:

IE :width 和 height属性 是包括padding和border在内的。

w3c:width 和 height 属性,就是单纯的内容的宽高,padding 是内容之外的附加值。

IE标准盒模型 w3c标准盒模型

我发现我以前总是记得有点混乱。现在绝对不会忘记了。box-sizing属性可以定义要使用哪种盒模型

解决这个问题分方法1:不要给元素添加具有指定宽度的内边距,尝试将内边距或者外边距添加到元素的父元素或者子元素。

方法2:待补充??

2-对box-sizing进一步了解:

box-sizing:content-box | border-box  (默认值为:content-box)

不具有继承性,适用于所有可以用属性width 和 height 的元素

content-box:padding和border不被包含在定义的width和height之内。对象的实际宽度等于设置的width值和border、padding之和,即 ( Element width = width + border + padding )此属性表现为标准模式下的盒模型。就是上面的w3c标准的盒模型。

border-box:padding和border被包含在定义的width和height之内。对象的实际宽度就等于设置的width值,即使定义有border和padding也不会改变对象的实际宽度,即 ( Element width = width )此属性表现为怪异模式下的盒模型。 同上面IE 标准的盒模型。

插入一下标准和怪异盒模型的实例代码和盒模型:

标准 怪异

.test1{
    box-sizing:content-box;
    width:200px;
    padding:10px;
    border:15px solid #eee;
}

.test1{
    box-sizing:border-box;
    width:200px;
    padding:10px;
    border:15px solid #eee;
}

box-sizing的兼容性如下:

3-外边距叠加

概念:当两个或者是更多个垂直外边距相遇时,他们将形成一个外边距,这个外边距的高度等于两个发生叠加的外边距的高度重视的较大者。(当一个元素位于另一个元素上方时,第一个元素的底外边距会和第二个元素的顶外边距发生叠加。)

测试如下:

代码

<!DOCTYPE html>
<html>
    <head>
        <title>css bug 测试</title>
        <meta charset = "utf-8">
        <style type="text/css">
            .box-top{
                width: 50px;
                height: 50px;
                background-color: red;
                margin: 30px;
            }
            .box-bottom{
                width: 50px;
                height: 50px;
                background-color: green;
                margin: 20px;
            }
        </style>
    </head>
    <body>
        <div class="box-top"></div>
        <div class="box-bottom"></div>
    </body>
</html>

 图片结果


外边距的叠加问题在水平方向是没有问题的。

当两个元素为父子元素时,并且没有边框或者内边距将两个外边距分隔开,他们的顶和底外边距也会发生叠加。

如下例子所示:

代码

<!DOCTYPE html>
<html>
    <head>
        <title>css bug 测试</title>
        <meta charset = "utf-8">
        <style type="text/css">
            .box-top{
                width: 50px;
                height: 50px;
                background-color: red;
                margin: 30px;
            }
            .box-bottom{
                width: 30px;
                height: 30px;
                background-color: green;
                margin-top: 20px;
                border: 1px solid red;
            }
        </style>
    </head>
    <body>
        <div class="box-top">
            <div class="box-bottom"></div>
        </div>

    </body>
</html>

示例图1

示例图2

tips:之前在写代码的时候,会发现这样的问题。却不知道是什么问题。理所应当的认为第一个div是相对浏览器定位的,而第二个div是相对第一个的,因为它是它的子元素。但是变化div2的外边距却怎么也不对。查了资料才知道是外边距叠加。要解决这个问题的方法为:

触发block formatting context即可,触发的方法:
1. float不为none
2. overflow不为visible
3. display设为‘table-cell’, ‘table-caption’, 或‘inline-block’
4. position既不是static也不是relative
5. zoom:1, IE的hasLayout特性会建立一个新的block formatting context

(作者:张克军
链接:http://www.zhihu.com/question/19823139/answer/13079933
来源:知乎)

注:只有普通文档流中块框的垂直外边距才会叠加,行内框,浮动框和绝对定位框之间的外边距是不会叠加的!

时间: 2024-12-25 23:32:40

精通css 高级web标准解决方案——可视化格式模型的相关文章

精通css 高级web标准解决方案——可视化格式模型-定位模型

CSS 中有三种定位机制:普通流.浮动.绝对定位.(默认为普通流) 改变文档流:display: inline-block; (支持到ie8及以上) 1-匿名块框: <div> 你好! <p>廖阿丽!</p> </div> 这一块中的“你好”,属于匿名块框,因为它没有与专门定义的元素想关联. 2-相对定位 元素相对定位就是相对于它本来的位置来定位的. <!DOCTYPE html> <html> <head> <ti

近期读精通CSS高级Web标准解决方案(第2版)的小心情

首先,我想说,我真的为这本书着迷.近期读这本书,就像在和一位智者对话,又或者像是在和一个志同道合的朋友聊天,它耐心的把我在学习和实践的过程中所积攒的疑惑和思考的问题一 一解答.这本书不是一本CSS入门书,建议有CSS基础的同学阅读,相信你会和我一样,惊喜的发现这本书里蕴藏的宝藏.由于第二版是2010年出版的,那个时候CSS3还没有得到各大浏览器很好的支持,所以有些内容现在已经不适用了,但是,这本书更多的是教会我了解技术发展的历史,了解在那个技术受限的年代,作者是如何去思考和解决问题的.就像大漠老

《精通CSS高级web标准解决方案》——第一章、第二章(为样式找到应用目标)即选择器

2015-04-16 08:49:35 1.“多类症”:classitis.   “多div”:症. 第二章 为样式找到应用目标(选择器) 1.有效且结构良好的文档为你要应用的样式提供了一个框架. 2.选择器:1.类型选择器(即元素选择器) 2.后代选择器 3.类选择器 4.ID选择器 3.不要给这些元素指定不同的类,而应将一个类货ID应用于他们的祖先,然后使用后代选择器来定位他们. 4.有时我们需要根据文档结构之外的其他条件对元素应用样式,例如表单元素或链接的状态.这要使用伪类选择器来完成.

读《精通css》--第三章可视化格式模型

一. 盒模型: 1. IE 和 盒模型: 非标准盒模型 2. 外边距叠加:什么情况下外边距会叠加? 1)两个垂直的块元素 2)两个包含关系的块元素并且之间没有padding和border隔开 3)外边距与自身发生叠加,空元素,没有padding和border 4)空元素的外边距碰到另一个空元素的外边距. 解决办法:行内元素.浮动元素.绝对定位元素的外边距不会叠加.如果是包含关系的话,加上padding或者border. 二. 3种可视化格式模型: 1. 普通流:块级元素和行内元素. 1)块级框从

读《精通CSS:高级Web标准解决方案》

因为最近在看<精通CSS:高级Web标准解决方案>,做了一些记录. 因为很多开发人员对于XHTML2的开发不满,于是出现了WHATWG和W3C的分裂,WHATWG决定开发自己的规范,也就是HTML5,而W3C的XHTML2标准已被放弃,HTML5成为了W3C的正式标准.XHTML和HTML的区别就是XHTML严格遵守XML编码规定,浏览器会依据文档的MIME类型来解析文档,如果不遵循规范会导致错误,而HTML却是很宽松的. Doctype类型和浏览器模式,DTD(文档定义类型)是一组机器可读的

《精通CSS:高级Web标准解决方案》学习笔记01

对我来说,CSS算得上是一个很难的东西.因为它不像JavaScript那么有趣,对记忆的要求太高,而我对浏览器兼容性.各种CSS Hack真的一点都不感冒.琐碎的.非理论化的知识,真的很烦人呐~ 鉴于国产CSS书籍基本都是辣鸡的现状,我在半年前动用某工作室的购书资金采购了一些技术书籍,这本广受好评的<精通CSS>也在其中.但是在阅读过后我深深的感觉到,如果说CSS本来已经是一种很琐碎的布局知识集合的话,那这本书只能说是更加琐碎了,因为这只是一本纯纯的经验分享.而且随着前端技术的快速发展,明显能

《精通CSS-高级Web标准解决方案》阅读计划

第一周     第1章 基础知识 1 第2章 为样式找到应用目标 1 第3章 可视化格式模型 1 第4章 背景图像效果 1       第二周     第5章 对链接应用样式 1 第6章 对列表应用样式和创建导航条 1 第7章 对表单和数据表格应用样式 1 第8章 布局 1       第三周     第9章 bug和修复bug 1 第10章 实例研究:Roma Italia 2 第11章 实例研究:Climb the Mountains 2

精通CSS:高级Web标准解决方案(第2版)--第一章 基础知识

“人们几乎不会先去读完整的CSS规范,这些规范能把任何人送入梦乡.” “学习CSS最好的一种方式是直接开始使用它.” “先从博客上看到了一些出色的效果,于是通过查看源代码研究它们是如何实现的,然后就在自己的个人网站是大胆尝试.” 一.首先,从开始就应注意基本的问题,养成好的习惯: 1.良好的文档结构 不要过于依赖可视化的编辑器:糟糕的代码结构可能让你宁愿从头编写页面而不想去寻找bug: 2.有意义的标记 HTML 4 目前可使用的语义化标签并不全面,至少没有像header.navigation.

精通CSS:高级Web标准解决方案(第2版)--前言

一 这是我的第一本也是现在仅有的关于CSS纸质书,2013-08-06 购自某东,对于患有拖延症的我来说,260多页现在还没看完也不足为奇.期间拾起放下多次,每次都是从头来过,想想都要悲哀一下,最大的收获是我深刻体会到: 做任何事情,从头来过的成本是很高的. 现在我又来了.大家都说Andy Budd的这本书是好书.既然这样我就带着初学者的心态来拜读学习. 1.书中值得学习的CSS优点:规范.高效.兼容: 2.带有目的地学习和研究:深入.熟练.系统.精通.灵活: 3.自己去创造美的事物. 最后一点