当前位置: 首页 > news >正文

CSS盒模型深入

CSS盒模型

标准模型IE模型

标准模型width表示content的宽度,IE模型width表示border+padding+content的宽度。

设置这两种模型可使用:

box-sizing: content-box;   /*浏览器默认*/
box-sizing: border-box;

获取宽高

dom.style.width/height

只有通过内联样式设置的宽高才能获取到,用<link>标签引入的css获取不到。

dom.currentStyle.width/height  //IE
window.computedStyle(dom).width/height  //标准

无论样式是什么类型,都可以获取到宽高,且是渲染后的实际宽高。

dom.getBoundingClientRect().width/height

获取元素的宽高,和相对于视口的lfet top

边距重叠

子元素的外边距会反应在父元素上,相邻元素外边距会取较大值,空元素上下外边距会取较大值。

BFC

BFC指块级格式化上下文,是一个有特别规则的区域,规定内部元素如何布局,与外部元素无关。

1.BFC有一下几个规则:

  • 内部上下相邻元素外边距会重叠。
  • BFC块不会与浮动元素重叠。
  • 内部浮动元素也参与BFC高度的计算。

2.BFC的触发:

  • float属性不为none;
  • position: absolute/fixed;
  • overflow: auto/hidden;
  • display: inline-block、table-cells、table-captions、或inline-flex

BFC应用

1.解决边距重叠问题

<style>
    div { overflow: auto; }
    p { margin: 5px auto 10px; }
</style>
<div>
    <p></p>
</div>
使 div触发 BFC,内部元素外边距不会反映到父级元素上。
<style>
    .wrap { overflow: auto; }
    p { margin: 5px auto 10px; }
    .bfc { overflow: auto; }
</style>
<div class='wrap'>
    <p></p>
    <div class='bfc'>
        <p></p>
    </div>
</div>
两个 <p>标签都有上下外边距,给 <p>标签加父级,且触发 BFC,外边距不会在重叠。

2.清除浮动

<style>
    div { overflow: auto; }
    p { float: left; }
</style>
<div>
    <p></p>
</div>
使 div触发 BFC,内部浮动元素元素也参与高度计算。

相关文章:

  • ASP.NET MVC 学习笔记-3.面向对象设计原则
  • 干货分享:MySQL之化险为夷的【钻石】抢购风暴
  • Canon背后的故事
  • Linux 搭建私有软件仓库
  • Blockchain钱包全方位支持比特币现金(BCH)
  • 量子通信能否跨越“死亡之谷”?2017年市场化的量子通信产品可能产生
  • 奇异量子物理系统:它既在“绝对零度”之下,又在“绝对高温”之上
  • leetcode-594-Longest Harmonious Subsequence
  • 在龙芯小本上安装Debain8.10
  • 数据智能创建能源领域“智能助手”
  • 数据库基础常用知识
  • “阿里架构师”的JVM之GC详解
  • 干货云集 WOT2016峰会揭密大数据背后的技术难点
  • 收藏好这篇,别再只说“数据劫持”了
  • input框限制只能输入正整数、字母、小数、汉字
  • 4. 路由到控制器 - Laravel从零开始教程
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • E-HPC支持多队列管理和自动伸缩
  • java中具有继承关系的类及其对象初始化顺序
  • JS基础之数据类型、对象、原型、原型链、继承
  • laravel with 查询列表限制条数
  • Material Design
  • passportjs 源码分析
  • Spring-boot 启动时碰到的错误
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • 模型微调
  • 三分钟教你同步 Visual Studio Code 设置
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 学习笔记:对象,原型和继承(1)
  •  一套莫尔斯电报听写、翻译系统
  • 追踪解析 FutureTask 源码
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • 阿里云重庆大学大数据训练营落地分享
  • !$boo在php中什么意思,php前戏
  • #Lua:Lua调用C++生成的DLL库
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • (转)我也是一只IT小小鸟
  • (转载)OpenStack Hacker养成指南
  • .NET 指南:抽象化实现的基类
  • .NET的数据绑定
  • .so文件(linux系统)
  • [Angular] 笔记 16:模板驱动表单 - 选择框与选项
  • [bug总结]: Feign调用GET请求找不到请求体实体类
  • [BZOJ 4129]Haruna’s Breakfast(树上带修改莫队)
  • [C/C++] -- 二叉树
  • [C++]运行时,如何确保一个对象是只读的
  • [Codeforces1137D]Cooperative Game