Box model小心得
最近在研究css~当设置一个元素width后~有时候也会对他设定padding,margin,border值,
每次这样我就心里琢磨,那这个元素的width会变吗,js获取元素的宽度width()指的是哪个宽度,还有innerWidth()?outerWidth()?outerWidth(true)?
还有CSS中Box model是分为两种,第一种是W3C的标准模型,另一种是IE的传统模型。
他们相同之处都是对元素计算尺寸的模型,具体说就是对元素的width,height,padding,border以及元素实际尺寸的计算关系,那他们的不同呢?
各种问题纠结在了一起,为了解决这个困惑,我做了如下调试:
测试环境 :ie6 ie7 ie8 chrome firefox
俗语(自己设定):元素:此例子中的div[class='con'] 内容宽度:元素中的内容,例子中的“抢火车票啦”~ 最近公司最疯狂的事情咕~~(╯﹏╰)
/******很简单的一个demo*********/
<style>
*{margin:0;padding:0}
.con{width:300px;height:200px;margin:0 auto;background:#6c6eff;padding:50px;margin-top:10px;border:4px #FFFF00 dashed}
.log{width:300px;border:1px red solid;height:100px;margin:0 auto}
</style>
<script>
$(function(){
var ss=[];
ss.push("width:");
ss.push($(".con").width()+"<br>");
ss.push("innerWidth:"+$(".con").innerWidth()+"<br>");
ss.push("outerWidth:"+$(".con").outerWidth()+"<br>");
ss.push("outerWidth(true):"+$(".con").outerWidth(true));
$(".log").html(ss.join("")) })
</script>
</head>
<body>
<div class="con">抢火车票啦</div>
<div class="log"></div>
</body>
得出结论:
1:在ie6及ie6以上版本还有谷歌,火狐中他们都遵循的都是w3c盒子模型,估计只有ie6以下版本是遵循传统盒子模型吧~ ps:那什么是w3c盒子模型呢?我就白话文加上个人的理解解说下
con设定width:300px;padding:50px;margin-top:10px;border-width:4px;
con的页面实际展示宽度是:300+50*2+4*2 = 408
我想大家应当有所领悟了吧,width(300px)是指的内容宽度,当设置padding值时,con向外扩张, 设置border宽度同理;
$(".con").width():300px;其实就是我们经常说的con宽度width多少,我觉得这个说法有点误解,应当说这个元素的内容宽度才对味嘛
$(".con").innerWidth():400px;元素的内容宽度+内距padding值
$(".con").outerWidth():408px;元素的内容宽度+内距padding值+边框boderWidth,这个说成是元素的宽度才对嘛,你觉得呢?
$(".con").outerWidth(true):元素的内容宽度+内距padding值+边框boderWidth+margin(在chrome才有效),其他浏览器里同上面的那个值一样;
配图:
ie6 ie7 ie8 firefox
chrome:
2:说说ie跟firefox的调试工具的区别
大家看图说话吧~有点时候我会搞混,ie的这个408其实是指outerWidth,而不是里面那个方框的宽度哦,里面的那个是300哦
ie:firefox:
![]()
终于搞清楚了,虽然很简单,但之前老是听别人讲,我还以为很麻烦呢,原来也还好。
学css最重要的就是兼容性了,我以后会把我碰到的一些兼容问题总结出来。
我一定要把css+div学的很精通~!
Box model小心得的更多相关文章
- CSS3与页面布局学习总结(二)——Box Model、边距折叠、内联与块标签、CSSReset
一.盒子模型(Box Model) 盒子模型也有人称为框模型,HTML中的多数元素都会在浏览器中生成一个矩形的区域,每个区域包含四个组成部分,从外向内依次是:外边距(Margin).边框(Border ...
- Box Model,边距折叠,内联和块标签,CSSReset
一.盒子模型(Box Model) 1.1.宽度测试 1.2.溢出测试 1.3.box-sizing属性 1.4.利用CSS画图 二.边距折叠 2.1.概要 2.2.垂直方向外边距合并计算 三.内联与 ...
- CSS3与页面布局学习笔记(二)——盒子模型(Box Model)、边距折叠、内联与块标签、CSSReset
一.盒子模型(Box Model) 盒子模型也有人称为框模型,HTML中的多数元素都会在浏览器中生成一个矩形的区域,每个区域包含四个组成部分,从外向内依次是:外边距(Margin).边框(Border ...
- 盒子模型(Box Model)
盒子模型(Box Model) ■ 盒子模型——概念 在网页设计中常用的属性名:内容(content),填充(padding),边框(border),边界(margin),CSS 盒子模式都具备这些属 ...
- CSS魔法堂:小结一下Box Model与Positioning Scheme
前言 对于Box Model和Positioning Scheme中3种定位模式的细节,已经通过以下几篇文章记录了我对其的理解和思考. <CSS魔法堂:重新认识Box Model.IFC.B ...
- CSS魔法堂:重新认识Box Model、IFC、BFC和Collapsing margins
前言 盒子模型作为CSS基础中的基础,曾一度以为掌握了IE和W3C标准下的块级盒子模型即可,但近日在学习行级盒子模型时发现原来当初是如此幼稚可笑.本文尝试全面叙述块级.行级盒子模型的特性.作为近日 ...
- CSS3与页面布局学习总结——Box Model、边距折叠、内联与块标签、CSSReset
目录 一.盒子模型(Box Model) 1.1.宽度测试 1.2.溢出测试 1.3.box-sizing属性 1.4.利用CSS画图 二.边距折叠 2.1.概要 2.2.垂直方向外边距合并计算 三. ...
- CSS 笔记三(Tables/Box Model/Outline)
CSS Tables border border: border-width border-style border-color|initial|inherit; border-width borde ...
- 重新认识Box Model、IFC、BFC和Collapsing margins
尊重原创,转载自: http://www.cnblogs.com/fsjohnhuang/p/5259121.html 肥子John^_^ 前言 盒子模型作为CSS基础中的基础,曾一度以为掌握了I ...
随机推荐
- Open vSwitch源码阅读【转】及自己的理解【稍后更新】
http://blog.chinaunix.net/uid-24485075-id-2240075.html
- jquery序列化form表单使用ajax提交后处理返回的json数据
1.返回json字符串: /** 将一个字符串输出到浏览器 */ protected void writeJson(String json) { PrintWriter pw = null; try ...
- POJ1321 棋盘问题(dfs)
题目链接. 分析: 用 dfs 一行一行的搜索,col记录当前列是否已经放置. AC代码如下: #include <iostream> #include <cstdio> #i ...
- -_-#【React】
React Native 用于构建用户界面的JAVASCRIPT库 | ReactReact 入门实例教程颠覆式前端UI开发框架:Reactzhihu1zhihu2 React.js编程思想 < ...
- 【动态规划】XMU 1583 Sequence
题目链接: http://acm.xmu.edu.cn/JudgeOnline/problem.php?id=1583 题目大意: T组数据,对于n(n<=6000)给定序列Xn(Xn<= ...
- spring-mvc.xml配置文件出错
在整合ssm三大框架的时候,配置spring-mvc.xml的文件的 <mvc:default-servlet-handler/> <mvc:annotation-driven /& ...
- 【深入了解cocos2d-x 3.x】定时器(scheduler)的使用和原理探究(3)
上篇文章分析到了定时器的定义.这篇的重点就是定时器是怎样执行起来的. 1.从main中寻找定时器的回调 讲定时器的执行,就不得不触及到cocos2dx的main函数了,由于定时器是主线程上执行的.并非 ...
- setWillNotDraw和setFillViewport
Romain Guy write a little info about a ScrollView attribute that is missing from documentation : An ...
- 使用glob()查找文件(转)
大部分PHP函数的函数名从字面上都可以理解其用途,但是当你看到 glob() 的时候,你也许并不知道这是用来做什么的,其实glob()和scandir() 一样,可以用来查找文件,请看下面的用法: ...
- atitit。浏览器缓存机制 and 微信浏览器防止缓存的设计 attilax 总结
atitit.浏览器缓存机制 and 微信浏览器防止缓存的设计 attilax 总结 1. 缓存的一些机制 1 1.1. http 304 1 1.2. 浏览器刷新的处理机制 1 1.3. Expir ...
firefox: