css中box-sizing简单说明(标准盒式模型和怪异盒式模型)
今天写程序做布局的时候,遇到关于css中盒式模型的问题,百度了下这属性的解释,脑大啊,文字太绕看不懂。怎么办,于是自己动动手写了段程序测试,嗯,不错,一看效果就恍然大明白了。这里简单说明下,也可能说得比较粗浅。不过希望可以帮到一些前端的朋友。
首先说下box-sizing的取值问题,box-sizing的可选值有三个,inheirt,content-box(标准盒式模型)和border-box(ie6等非标准浏览器的怪异盒式模型);
首先说第一个取值content-box,content-box是box-sizing的默认值。意思是:元素实际占用的空间宽度=我们设置的宽度(width)+边框+内间距。假设我们设置一个div的宽度为100px,如果再给这个div设置边框和间距内的话,边框和间距是向外扩展的。导致实际div的实际宽度大于100px。上代码和图一目了然。
首先定义一个宽和高为100px的div,设置box-sizing为content-box,背景为红色。为了突出显示我们把它放在一张蓝色背景上;
<div id="bx1" style="width:300px;height:300px;background:blue;">
<div id="bx2" style="width:100px;height:100px;background:red;margin:0px auto;box-sizing:content-box;"></div>
</div>
显示如下:

为了便于比较我们添加一个新的div,与上一个div的唯一区别就是增加了10px的黄色边框;
<div id="bx1" style="width:300px;height:300px;background:blue;">
<div id="bx2" style="width:100px;height:100px;background:red;margin:0px auto;box-sizing:content-box;"></div>
<div id="bx3" style="width:100px;height:100px;background:red;margin:10px auto; box-sizing:content-box;border:10px solid yellow"></div>
</div>
结果如图:border是在div的外面扩展的。

我们在为新增加的div添加一个10像素的内边距,结果如图内边距也是向外扩展,为什么说内边距是向外扩展的,可以注意“hello”的位置。
#bx3{padding:10px;}

好吧,讲完一个属性了,现在开始另一个属性,border-box。修改原来的div的box-sizing为border-box。
border-box是向内扩展的。 如果设置box-sizing成了border-box,元素实际占用的空间的宽度就等于我们设置的宽度,如果设置边框和间距,边框和间距就向内扩展。原先的例子再走一遍吧。(请原谅我是强迫症患者而且我还追求完美)
<div id="bx1" style="width:300px;height:300px;background:blue;">
<div id="bx2" style="width:100px;height:100px;background:red;margin:0px auto;color:white;box-sizing:border-box;">hello</div>
</div>
没有边框和间距的初始图:

现在新增一个div用于对比,与原来的div的唯一区别就是多了10px宽的黄色的边框;
<div id="bx1" style="width:300px;height:300px;background:blue;">
<div id="bx2" style="width:100px;height:100px;background:red;margin:0px auto;color:white;box-sizing:border-box;">hello</div>
<div id="bx3" style="width:100px;height:100px;background:red;margin:0px auto;color:white;box-sizing:border-box;border:10px solid yellow">hello</div>
</div>
结果如图:边框向内扩展

接着我们在为div添加10px的内边距;
#bx3{padding:10px;}
结果如图:内边距向内扩展,注意“hello”的位置。

我想到这里对这两个属性大家都和清楚了吧。
现在总结下,box-sizing取值有三个context-box,border-box和inherit,content-box是box-sizing的默认值,意思是元素实际占用的空间宽度=我们设置的宽度(width)+边框+内间距,我们设置div的宽度后,再加边框和间距,边框和间距是向外扩展的。border-box元素实际占用的空间的宽度就等于我们设置的宽度,如果设置边框和间距,边框和间距就向内扩展。至于inherit属性,应该大家都知道,它爹是什么属性,它就继承什么。
本来一件很小的事情,竟然啰嗦这么久,最后请求这个世界原来完美主义者和强迫症患者,我们是无辜的
css中box-sizing简单说明(标准盒式模型和怪异盒式模型)的更多相关文章
- padding标准盒模型和怪异盒子模型
我们都知道padding是为块级元素设置内边距 但是在使用过程中,我们却会遇到一些问题.padding的标准盒模型和怪异盒模型 padding盒子模型 我们通过demo来讲这个问题,用文字干讲第一没意 ...
- 标准盒模型、怪异盒模型(box-sizing)
CSS中Box model是分为两种: W3C标准(标准盒模型) 和 IE标准盒子模型(怪异盒模型).大多数浏览器采用W3C标准模型,而IE中则采用Microsoft自己的标准. 重要的一个属性是bo ...
- CSS盒子模型与怪异盒模型
盒子模型(Box Modle)可以用来对元素进行布局,包括内边距,边框,外边距,和实际内容这几个部分. 盒子模型分为两种 第一种是W3c标准的盒子模型(标准盒模型) .第二种IE标准 ...
- css中的em 简单教程 -- 转
先附上原作的地址: https://www.w3cplus.com/css/px-to-em 习惯性的复制一遍~~~~ -------------------------------我是分界线---- ...
- CSS3_标准盒子模型和怪异盒子模型
#box{ width: 200px; height: 200px; background-color: pink; } 标准盒子模型 box-sizing: content-box; padding ...
- div的标准盒模型和怪异盒模型
(1)标准盒模型 标准盒模型宽高不会被padding和margin撑开 (2)怪异盒模型 怪异盒模型宽高会被padding和margin撑开
- css中 repeat-x 的简单用法
问repeat-x 00 中: 0 0 是 什么意思,如果改为0 -50呢,不写话默认是什么(不写话和0 0 的效果不一样)- ------<html><head><s ...
- 怪异盒模型和标准盒模型--CSS
一,原理 css 属性:Box Moel分为两种:W3C标准和IE标准盒子模型. 大多数浏览器采用W3C标准模型,而IE中采用Microsoft自己的标准. 怪异模式是“部分浏览器在支持W3C标准的同 ...
- CSS中box-sizing属性的作用
今天在项目中看到box-sizing这个属性,以前用过,但是不常用!注意,它是CSS3里的属性喔! W3C 盒子模型:标准盒模型,是指块元素box-sizing属性为content-box的盒模型.一 ...
随机推荐
- C单链表操作
#include <stdio.h> #include <stdlib.h> #define ElemType int #define Status int #define O ...
- XStream将XML转javaben,出现多余的tag,导致出错
今天在测试银联无卡快捷支付的案例时,多了一个多tag兼容性测试,它是指银联的XML报文中会出现多余的tag,如果我们用XStream解析的时候,没有Javabean的字段可以对应上,就会报错!提示: ...
- PHP学习笔记(二)
1.表单 PHP 的 $_GET和 $_POST用于检索表单中的值,比如用户输入. $_GET和$_POST变量分别用于收集来自 method="get" 和method=&quo ...
- Python压缩文件夹 tar.gz .zip
打包压缩生成 XXX.tar.gz 文件 import os import tarfile if os.path.exists(outputFileName): with tarfile.open(o ...
- Partition Equal Subset Sum
Given a non-empty array containing only positive integers, find if the array can be partitioned into ...
- m序列c语言实现
演示,不是算法 void m4() { int a[4]={1,0,0,1}; int m[15]; int temp; for(int i=0;i<15;i++){ m[i] = a[0]; ...
- javabean为什么需要序列化
无论用hibernate或者mybatis结合spring做开发还是其他,系统里持久类往往要实现序列化, implements Serializable.我还是比较好奇,为什么要这样做呢?一直只知道个 ...
- OneZero第三周——预完成功能点统计
本周OneZero将完成“摇一摇”功能. 功能点统计如下: 1.点击主页面“摇一摇”按钮,进入摇一摇界面. 2.摇一摇界面布局(上,中,下). 3.摇动手机,在摇一摇界面中显示一条消费记录. 4.继续 ...
- Linux下进行程序设计时,关于库的使用:
一.gcc/g++命令中关于库的参数: -shared: 该选项指定生成动态连接库: -fPIC:表示编译为位置独立(地址无关)的代码,不用此选项的话,编译后的代码是位置相关的,所以动态载入时,是通过 ...
- 2019.01.04 洛谷 P4721 【模板】分治 FFT
传送门 如同题目所描述的一样,这是一道板题. 题意简述:给你一个数组g1,2,...ng_{1,2,...n}g1,2,...n并定义f0=1,fi=∑j=1ifi−jgjf_0=1,f_i=\su ...