美文网首页
CSS 盒模型总结

CSS 盒模型总结

作者: Jassi | 来源:发表于2018-02-14 14:22 被阅读0次

概念

CSS盒模型 包含:content padding border margin

类型

CSS盒模型分为 标准模型和IE模型,二者的差别在于width、height的计算

标准模型中width = content 相当于box-sizing:content-box

IE模型中width = content + padding + border 相当于box-sizing:border-box

如何获取盒模型的宽度

例如

HTML 代码
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
<div id="box" style="width:200px">
this is a css box
</div>
</body>
</html>
css 代码
#box{
width:100px;
}
对于内联样式:
var box=document.getElementById('box');
var width=box.style.width;
console.log(width)/200px/
适用于内联样式也适用于外联样式
var box=document.getElementById('box');
var width=window.getComputedStyle(box).width;
console.log(width)/200px/
适用于内联样式也适用于外联样式
var box=document.getElementById('box');
var width=box.getBoundingClientRect().width;
console.log(width)

盒模型边距重叠问题

边距重叠是指 父子元素 兄弟元素之间 相邻的margin不会叠加 而是重叠取大值

例如

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
<div id="box">
<div id=child1>child1</div>
<div id=child2>child2</div>
</div>
</body>
</html>

当子元素上的margin 并没有参与到父元素的大小计算

解决方式:在父元素上添加overflow:auto(是一种BFC方案,会取消边距重叠效果)

/*父子元素*/
#box{
width:100px;
background:yellow;
/*overflow:auto;*/
}
#child1{
background:green;
margin-top:10px;
}
#child2{
background:red;
}

连个相邻的兄弟元素 竖直方向上margin 会重叠 只显示较大值作为margin

解决方式:将每一个子元素外面套一个父元素,并在父元素上添加overflow属性

/*兄弟元素*/
#box{
width:100px;
background:yellow;
overflow:auto;
}
#child1{
background:green;
margin-bottom:10px;
}
#child2{
background:red;
margin-top:10px;
}

边距重叠的解决方案

BFC(块级格式化上下文 block foramting content)是一种解决边距重叠的方式,具体实现方式入下:

  • overflow: auto/hidden、scroll
  • position:不为static、relative
  • float:不为none
  • display: inline-block/table-cell/table-caption
  • HTML根元素

BFC的工作原理

形成一个封闭的空间,里面和外面的元素互不影响,具体表现有:

  • 消除margin重叠
  • 消除float的影响

相关文章

  • 前端面试之CSS

    资料来源于 50道css基础面试题进行一些扩充和总结 CSS盒模型 标准盒模型:content + padding...

  • 6.3盒模式

    盒模型 什么是CSS盒模型? CSS盒模型仅仅是一个形象的比喻, HTML中的标签都是盒模型 CSS盒模型指那些可...

  • 盒模型

    什么是CSS盒模型? CSS盒模型仅仅是一个形象的比喻, HTML中的标签都是盒模型 CSS盒模型指那些可以设置宽...

  • 10分钟复习CSS盒模型与BFC

    css盒模型与BFC 本文为收集整理总结网上资源 旨在系统复习css盒模型与bfc 节省复习时间 阅读10分钟 什...

  • CSS盒模型

    CSS盒模型的认识 标准模型 和 IE模型 CSS盒模型包括content,padding,border,marg...

  • Css盒模型以及Bfc的应用场景

    CSS盒模型: 一 基本概念: 分为标准模型+IE模型。 二 标准盒模型和IE盒模型的区别。CSS如何设置这两种盒...

  • CSS 盒模型总结

    概念 CSS盒模型 包含:content padding border margin 类型 CSS盒模型分为 标准...

  • HTML/CSS 04-css盒模型

    css盒模型的组成部分,css margin,css padding,css盒子的实际大小 目录: 一、盒模型的组...

  • html+css 12

    开篇十二章 1、css布局模型 清楚了CSS 盒模型的基本概念、 盒模型类型,...

  • 1.CSS盒模型

    css盒模型 css中,Box Model叫盒子模型;盒模型规定了 元素内容(content)、内边距(paddi...

网友评论

      本文标题:CSS 盒模型总结

      本文链接:https://www.haomeiwen.com/subject/fqketftx.html