盒模型的组成,由里向外分别是content,padding,border,margin

盒子模型在页面中占的实际宽度是:(margin+padding+border)*2 + width,高度同理。

盒模型有标准盒模型和ie盒模型,二者的区别是

标准盒模型的内容大小就是content的大小,而ie盒模型的大小则是content+padding+border总的大小。

通过设置 box-sizing:content-box(W3C)/border-box(IE)就可以达到自由切换的效果。

js如何获取和设置box的宽高呢?

法一:dom.style.width    可以获取到行内设置的样式值,返回的是字符串,带单位

法二:在IE下可以使用obj.currentStyle[name]获取,Chrome,火狐下可以使用getComputedStyle(obj)[name]来获取,获取的宽高是计算后的样式,只包含content的宽高,返回的是带单位的

如果想要兼容浏览器,可以封装一个函数:

function getCss(obj,name) {    //用此方法获得样式包含px,获得的是一个字符串if (obj.currentStyle) {return obj.currentStyle[name];}else{return getComputedStyle(obj)[name];}}

以上两种方法只能获取元素的css 大小,无法获取元素本身实际大小,比如内边距、滚动条、边框之类。返回的是带单位的字符串

法三:obj.offsetWidth    可以获取元素的实际大小,包括content,padding,border,返回的是不带单位的值。

法四:obj.clientWidth     可以获取元素的可视区的大小,包括content,padding,返回的是不带单位的值。

offsetLeft可以获得元素距离body的左边距,如果设置了父级position为相对定位,obj为绝对定位,那得到的就是相对于父级的左边距。

margin的小性子:

一、第一个子级设置margin-top会在特定情况下穿透父级

解决方案:1、给父级加边框

2、给父级加overflow:hidden

3、不使用子级的margin-top,而用父级的padding-top代替

二、同一个BFC下外边距会发生折叠

<head>
div{width: 100px;height: 100px;background: lightblue;margin: 100px;
}
</head>
<body><div></div><div></div>
</body>

此时,因为两个div元素在同一个BFC容器下,所以第一个div的下边距和第二个div的上边距发生了重叠,所以两个盒子之间的距离只有100px,而不是200px。如果想要避免外边距的重叠,可以将其放在不同的BFC容器中

<div class="container"><p></p>
</div>
<div class="container"><p></p>
</div>
.container {overflow: hidden;
}
p {width: 100px;height: 100px;background: lightblue;margin: 100px;
}

这时候,两个盒子的距离就是200px了

常见定位方案

1、普通流

在普通流中,元素按照其在 HTML 中的先后位置至上而下布局,在这个过程中,行内元素水平排列,直到当行被占满然后换行,块级元素则会被渲染为完整的一个新行,除非另外指定,否则所有元素默认都是普通流定位,也可以说,普通流中元素的位置由该元素在 HTML 文档中的位置决定。

2、浮动

在浮动布局中,元素首先按照普通流的位置出现,然后根据浮动的方向尽可能的向左边或右边偏移,其效果与印刷排版中的文本环绕相似。

3、绝对定位

在绝对定位布局中,元素会整体脱离普通流,因此绝对定位元素不会对其兄弟元素造成影响,而元素具体的位置由绝对定位的坐标决定。

什么是BFC?

BFC:Block Fromtting Context,块级格式化上下文,是一个独立的布局环境,其中的元素布局是不受外界影响。

具有BFC特性的元素可以看做是隔离了的独立容器,容器里面的元素不会在布局上影响到外面的元素。

如何触发BFC?

  • 浮动元素:float 除 none 以外的值
  • 绝对定位元素:position (absolute、fixed)
  • display 为 inline-block、table-cells、flex
  • overflow 除了 visible 以外的值 (hidden、auto、scroll)

虽然添加上述的任意一条都能创建BFC,但会有一些副作用:

1、display: table 可能引发响应性问题
2、overflow: scroll 可能产生多余的滚动条
3、float: left 将把元素移至左侧,并被其他元素环绕
4、overflow: hidden 将裁切溢出元素

因而无论什么时候需要创建BFC,都要基于自身的需要来考虑。

BFC特性及应用

1、同一个BFC下外边距会发生重叠

2、BFC可以包含浮动元素(清除浮动)

3、BFC可以阻止元素被浮动元素覆盖

<div style="height: 100px;width: 100px;float: left;background: lightblue">我是一个左浮动的元素</div>
<div style="width: 200px; height: 200px;background: #eee">我是一个没有设置浮动,
也没有触发 BFC 元素, width: 200px; height:200px; background: #eee;</div>

这时候其实第二个元素有部分被浮动元素所覆盖,(但是文本信息不会被浮动元素所覆盖) 如果想避免元素被覆盖,可触第二个元素的 BFC 特性,在第二个元素中加入 overflow: hidden,就会变成:

标准盒模型和IE盒模型相关推荐

  1. 标准盒模型和 IE 盒模型

    对于标准盒模型和 IE 盒模型你了解多少? 盒模型讲解 我们今天只会提到 标准盒模型,和 IE 盒模型,两种盒模型模式讲解.首先来看标准盒模型. 只要是盒模型都会有这四个属性 margin, bord ...

  2. 标准事件模型和IE事件模型

    前言:在上一篇博客中总结了0级DOM事件模型和2级DOM事件模型,打铁趁热就在谈谈标准事件模型和IE事件模型的区别吧. 一. 标准事件模型 在JavaScript中把标准事件模型的执行分为三个阶段,即 ...

  3. Css盒模型有哪几部分,标准盒模型和IE盒模型有哪些区别

    首先介绍Css的盒模型也就是标准盒模型(BOX Model) 包含了 内容(content) 内边距(padding) 边框(border) 外边框(margin) 这是大家经常用到的,也是现在的标准 ...

  4. 前端面试题 | 标准盒模型和IE盒模型的区别?

    两者的区别在于content的不同,IE盒模型的content包含border,padding W3C盒子模型(又称之为标准盒模型)的范围包括margin.border.padding.content ...

  5. 详解OSI七层模型和TCP/IP模型

    详解OSI七层模型 1. 详解OSI七层模型 1.1 详解每层结构 1.2 交换机和路由器的区别 1.3 集线器与路由器在功能上有什么不同 2. 详解TCP/IP模型 2.1 详解每层结构 2.2 O ...

  6. OSI 七层模型和TCP/IP模型及对应协议

    OSI 七层模型和TCP/IP模型及对应协议图: 完成中继功能的节点通常称为中继系统.在OSI七层模型中,处于不同层的中继系统具有不同的名称. 一个设备工作在哪一层,关键看它工作时利用哪一层的数据头部 ...

  7. 李奎元:说说那些征信模型(Z计分模型、巴萨利模型和A值模型)

    李奎元称:根据企业信用管理理论,5C原则是指考察客户信用价值的5个因素,即品行(character).能力(capacity).资本(capital).担保品(collateral)和环境状况(con ...

  8. OSI 七层模型和TCP/IP模型及对应协议(详解)

    OSI 七层模型和TCP/IP模型及对应协议(详解) 查看全文 http://www.taodudu.cc/news/show-6185847.html 相关文章: OSI7层网络模型协议精析 OSI ...

  9. OSI模型和TCP/IP模型

    OSI模型 开放式系统互联通信参考模型(英语:Open System Interconnection Reference Model,缩写为 OSI),简称为OSI模型(OSI model),一种概念 ...

  10. 基于JVM原理、JMM模型和CPU缓存模型深入理解Java并发编程

    许多以Java多线程开发为主题的技术书籍,都会把对Java虚拟机和Java内存模型的讲解,作为讲授Java并发编程开发的主要内容,有的还深入到计算机系统的内存.CPU.缓存等予以说明.实际上,在实际的 ...

最新文章

  1. Day4--Scrapy基本使用
  2. 在VC++中创建DLL文件并加载
  3. “63个国外优秀测试站点链接”和其他相关资料,排除了目前已失效的网站和资料链接。...
  4. Common Number(奇偶二分+找规律)
  5. HALCON示例程序optical_flow.hdev如何使用optical_flow_mg计算图像序列中的光流以及如何分割光流。
  6. Microsoft C 运行时库 (CRT) 参考
  7. 解决wordpress无法离线发布(远程发布)的故障
  8. 卷积码主要是对抗_【零基础学会LTE】【3】LTE 36.212 咬尾卷积码详解
  9. java keytool 使用总结(转)
  10. 1600802047 android 第三次作业(音乐播放器)
  11. python linux脚本加密解密,用Python解密Chrome Linux BLOB加密的cookie
  12. 计算机英语emulated,【英语词汇】 imitate、mimic、mock、 simulate、emulate 这组词都有...
  13. 适配器模式和桥接模式
  14. python 识别二维码内容
  15. 网络不可用怎么办?无法访问互联网怎么办?网络故障原因大起底
  16. [转帖]地理上的济南,是个怎样的城市?
  17. 〖Python 数据库开发实战 - Python与Redis交互篇⑮〗- 综合案例 - 新闻管理系统 - 更新所编辑新闻状态(根据输入内容进行保存操作)
  18. 【目标跟踪 SOT】SiamFC -用于对象跟踪的全卷积孪生网络
  19. 很好的源码软件列表,有助于学习提高
  20. 「近世代數概論」(Garrett Birkhoff,Saunders Mac Lane) 3.1.1 引理1

热门文章

  1. 移动硬盘 RAW修复
  2. 查看英伟达NVIDIA显卡型号
  3. android_98_自定义DragLayout
  4. 如何提高学习效率,三大法则,五大步骤
  5. mASK调制在AWGN信道下的可达信息速率的积分计算法
  6. 计算机CPU四大体系架构
  7. 61家公司入选“2021年大中华区最佳职场”榜单;针对“奥密克戎”!云顶新耀与加拿大生物技术公司研发新型疫苗 | 美通社头条...
  8. 20155218 《Java程序设计》实验二(Java面向对象程序设计)实验报告
  9. 计算机 管理 被停用,任务管理器已被系统管理员停用,详细教您任务管理器已被系统管理员停用怎么办...
  10. 2022-2027年中国玩偶行业市场全景评估及发展战略规划报告