最近工作中有机会复习一下css的基本知识,那么先从css的盒模型开始吧,因为这是当时进现在这家公司笔试的第一题:怎么把IE盒模型变成标准盒模型?
盒模型
包括content-内容,padding-内边距,border-边框,margin-外边距。具体参见链接描述
常见的css盒模型分两类:怪异(IE)盒模型和标准盒模型,两种盒模型有着很大的不同。
提出组织 | 元素宽度计算方式(高度计算类比宽度) | |
---|---|---|
标准盒模型 | w3c | content宽度 |
怪异(IE)盒模型 | IE | content宽度 + padding值 + border值 |
用图片表示可能更形象一点:
上文说过,有办法让这两种盒模型互相转换,那就是通过box-sizing这个属性:
box-sizing就是告诉浏览器怎么去计算一个元素的宽高。
有两个取值:content-box和border-box,分别对应两种计算方式。
content-box只包含元素内容的宽度。如果给设置了border或者padding,元素的总宽度就要加上border和padding值。
border-box包含元素内容的宽度,padding和border值。
实例如下:
<!DOCTYPE html>
<html lang="en">
<head>
<title></title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="css/style.css" rel="stylesheet">
<style>
div{
width: 200px;
height: 200px;
background: grey;
padding: 50px;
border: 30px solid pink;
text-align: center;
}
.content-box{
/* 标准模型 默认的box-sizing: content-box; */
}
.border-box{
/* IE模型 */
box-sizing: border-box;
margin-left: 30px;
}
</style>
</head>
<body>
<div class="content-box">标准模型Content Box</div>
<p style="height: 30px;"></p>
<div class="border-box">IE模型Border Box</div>
</body>
</html>
结果如下:
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。