理解 boxsizing
理解boxsizing
什么是css盒模型?css盒模型包括如下属性:内容(content),填充(padding),边框(border),边界(margin).
这些东西我们可以拿日常生活中的列子来打比方,比如我现在在京东买了一台显示器,那么就会以盒子打包过来,那么显示器就是我们说的内容(content),而填充(padding)就是怕盒子里面的显示器损坏而添加的泡沫或者其他坑震的辅料,边框(border)就是盒子本身了,至于边界(margin)则是盒子摆放的时候不能全部堆在一起,要留一定的空隙保持通风。比如如下:

因此 盒子的宽度 = width + padding(left, right) + border(left, right)
盒子的高度 = height + padding(top, bottom) + border(top, bottom)
注意:当我们想设置盒子的宽度为200px的时候会出现一个问题是:css设置的宽度仅仅是内容区的宽度,而不是盒子的宽度,所以当我们使用css设置width=200px的时候,是设置内容的宽度为200px,而不是盒子的宽度,因此盒子的宽度还需要加上padding和border,因此导致盒子的宽度会大于200px。因此当我们设置盒子的宽度的时候,需要使用css的计算的宽度 减去 padding - border ,
最后就是内容的宽度,使用css设置内容的宽度了。但是使用 css3中的 box-sizing, 它会帮我们解决这个问题。
box-sizing的属性如下:
border-box, content-box, inherit
box-sizing: border-box 的理解:可以这么理解,当我们使用css设置元素的宽度的时候,并且使用了 box-sizing:border-box 这个属性的时候,那么css设置的宽度就是盒子的宽度,
当padding和border发生变化的时候,content(内容区)的宽度会自适应。
box-sizing: content-box的理解;使用了 box-sizing: content-box的时候,当我们使用css设置元素宽度的时候,实际就是内容(content)的宽度,当我们增加padding和border的时候
,会使盒子的宽度变大,导致布局不能自适应。
box-sizing: inherit的理解:继承 父元素 box-sizing属性的值, 其实效果和 box-sizing: content-box 类似。
浏览器支持程度;IE8及以上版本支持该属性,Firefox 需要加上浏览器厂商前缀-moz-,对于低版本的IOS和Android浏览器也需要加上-webkit-, 因此可以如下定义:
*, *:before, *:after {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
实列demo如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
<meta content="yes" name="apple-mobile-web-app-capable">
<meta content="black" name="apple-mobile-web-app-status-bar-style">
<meta content="telephone=no" name="format-detection">
<meta content="email=no" name="format-detection">
<title>标题</title>
<link rel="shortcut icon" href="/favicon.ico">
<style>
.container { width: 100%; margin-bottom: 40px; overflow: hidden;}
.left, .content, .right { float: left; }
.left { width: 20%; background-color: red;}
.content { width: 60%; background-color: yellow; box-sizing: border-box; padding: 0 20px;}
.right {width: 20%; background-color: blue; } .left2, .content2, .right2 { float: left; }
.left2 { width: 20%; background-color: red;}
.content2 { width: 60%; background-color: yellow; box-sizing: content-box; padding: 0 20px;}
.right2 {width: 20%; background-color: blue; } .left3, .content3, .right3 { float: left; }
.left3 { width: 20%; background-color: red;}
.content3 { width: 60%; background-color: yellow; box-sizing: inherit; padding: 0 20px;}
.right3 {width: 20%; background-color: blue; } </style>
</head>
<body>
<h2>box-sizing: border-box 的demo</h2>
<div class='container'>
<div class="left">left</div>
<div class="content">content</div>
<div class="right">right</div>
</div>
<h2>box-sizing: content-box 的demo</h2>
<div class='container'>
<div class="left2">left</div>
<div class="content2">content</div>
<div class="right2">right</div>
</div> <h2>box-sizing: inherit 的demo</h2>
<div class='container'>
<div class="left3">left</div>
<div class="content3">content</div>
<div class="right3">right</div>
</div> </body>
</html>
理解 boxsizing的更多相关文章
- 如何理解Box-sizing模型?
CSS3 box-sizing 属性 http://www.w3school.com.cn/tiy/t.asp?f=css3_box-sizing <style> div.containe ...
- content-box和border-box
理解box-sizing属性border-box,content-box,其实也是理解正常盒模型与异常盒模型. 如果不做特殊说明,我们日常所用的div都是正常盒子模型. 正常盒子模型 正常盒子模型,是 ...
- 不用bootstrap,只用CSS创建网格布局
本文译自[http://j4n.co/blog/Creating-your-own-css-grid-system],英语好的,可直接查看原网页,不需要FQ. 翻译拿不准的地方会有英文原文,方便大家理 ...
- content-box与border-box区别
理解box-sizing属性border-box,content-box,其实也是理解正常盒模型与异常盒模型. 正常盒模型 正常盒模型,是指块元素box-sizing属性为content-box的盒模 ...
- 关于box-sizing的理解
---恢复内容开始--- box-sizing 属性允许您以特定的方式定义匹配某个区域的特定元素. 例如,假如您需要并排放置两个带边框的框,可通过将 box-sizing 设置为 "bord ...
- 理解标准盒模型和怪异模式&box-sizing属性
盒子模型 主要有两种,w3c标准盒模型,IE下的怪异盒模型,其实还有就是弹性盒模型(上篇文章我们用他很好的解决了对齐问题) DTD规范 盒模型分为:标准w3c盒模型.IE盒模型.以及css中的伸缩盒模 ...
- 理解Margin边距塌陷与box-sizing的问题
父与子塌陷问题 子盒子与父盒子相互影响,margin值会重叠,谁大听谁的 运行结果: box-sizing box-sizing 原始属性值: content-box,该属性对于盒子尺寸来说,并不会让 ...
- CSS3教程:box-sizing属性的理解
说到 IE 的 bug,一个臭名昭著的例子是它对于“盒模型”的错误解释:在 IE5.x 以及 Quirks 模式的 IE6/7 中,将 border 与 padding 都包含在 width 之内.这 ...
- 盒子模型简单理解(box-sizing)
普通解析: 概念图示和公式: html结构 <div class="num1"></div> 1.只写 width.height(写背景是为了区分) .nu ...
随机推荐
- (2)Microsoft office Word 2013版本操作入门_快速选中
1.快速选中一行 .一段文字: 1.1光标在一行内,双击会选中一个词组.快速点击三下会选中一段, 1.2 鼠标移动到行首,单击击会选中一行,双击选中一段. 1.3 选择全部内容 Ctrl+A , 1 ...
- 【Java并发编程】21、线程池ThreadPoolExecutor源码解析
一.前言 JUC这部分还有线程池这一块没有分析,需要抓紧时间分析,下面开始ThreadPoolExecutor,其是线程池的基础,分析完了这个类会简化之后的分析,线程池可以解决两个不同问题:由于减少了 ...
- C++ enum的使用
enum day {Sun,Mon,Tue,Wed,Thu,Fri,Sat}; 默认情况下,枚举符的值从0开始,其后值总是前面一个+1. 即Sun=0,Mon=1,Tue=2,Wed=3,Thu= ...
- Python基础二字符串和变量
了解一下Python中的字符串和变量,和Java,c还是有点区别的,别的不多说,上今天学习的代码 Python中没有自增自减这一项,在转义字符那一块,\n,\r\n都是表示回车,但是对于不同的操作系统 ...
- JS模拟实现数组的map方法
昨天使用map方法的时候,突然感觉一直在直接用,也没有试试是怎么实现的,本来想直接搜一篇文章盘一下子,结果没搜到合适的,好吧,那就自己来写一下子吧 今天就来实现一个简单的map方法 首先我们来看一下m ...
- PL/SQL Developer使用小技巧
1.PL/SQL Developer记住登陆密码 在使用PL/SQL Developer时,为了工作方便希望PL/SQL Developer记住登录Oracle的用户名和密码: ...
- 二层协议--STP协议总结
生成树协议的技术实现与配置注意点 一.stp协议的用途 二.stp协议的运行机制 三.stp协议规范
- 使用Twitter异常检测框架遇到的坑
在Github上搜索“Anomaly Detection”,Twitter的异常检测框架(基于R语言)高居榜首,可见效果应该不错: 但是活跃度并不高,3-4年没人维护了: 因此在使用时难免会遇到一些坑 ...
- MySQL四种隔离级别和MVCC
事务在一个数据库中的地位尤为重要,尤其是高并发的场合.保证数据库操作的原子性和错误出现情况下的回滚,对数据的安全性和可靠性提供了保障.事务有四大原则,即ACID原则.网上关于这个问题的文章有很多,读者 ...
- RabbitMQ延迟消息学习
准备做一个禁言自动解除的功能,立马想到了订单的超时自动解除,刚好最近在看RabbitMQ的实现,于是想用它实现,查询了相关文档发现确实可以实现,动手编写了这篇短文. 准备工作 1.Erlang安装请参 ...