我想在一个页面上创建 3 列,我想给每列一个 20px 的填充,给第 1 列和第 2 列一个 20px 的边距,我现在的问题是如何计算给定页面的每一列的宽度宽度为 960 像素?我是网络新手,想知道如何正确计算宽度?填充是否会增加页面的宽度?边界呢?
提前致谢。
我推荐阅读这篇 CSS 技巧文章。深入了解盒子模型:
在 CSS 中,每个 [元素] 都使用标准的盒子模型来描述。该模型描述了元素占用的空间内容。每个框有四个边缘:外边距边缘、边框边缘、填充边缘和内容边缘。
所以,基本上:
宽度 = 宽度 + 左填充 + 右填充 + 左边框 + 右边框
阅读并理解这一点,以及 CSS 定位的基础知识。然后你可以考虑设置box-sizing
其他东西(你会看到border-box
很多,特别是在响应式设计中。它(可以说)是一种更合乎逻辑的方法,但如果你愿意,正确掌握标准模型很重要根本没有进展。IE7(如果它甚至在你的雷达上)不支持box-sizing
.
Firebug 和/或 Chrome 开发工具是你目前最好的朋友。
有多个层被添加到一个元素中(参见Box-Model)。
通常在设置宽度时,添加填充会改变元素的大小,这有点不直观。然而,大多数浏览器都支持 css-attribute box-sizing
,它改变了计算宽度(和高度)的方式:
价值观:
box-sizing: content-box;
width = content
box-sizing: padding-box;
width = content + padding (added to the spec later, less support)
box-sizing: border-box;
width = content + padding + border (easiest to understand, recommended)
box-sizing: margin-box;
width = content + padding + margin (quite useless)
正如我所说,在大多数项目中,我强烈推荐box-sizing: border-box;
它,因为它受到广泛支持且最直观。您可能需要为其添加前缀。我会这样做(霰弹枪方法):
* {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
}
请参阅w3c School以获取完整的文档和caniuse以了解浏览器支持的概述。
填充和边框宽度都添加到元素(您的列)的宽度。边距不会影响列的宽度,但会包含在您的一般页面宽度中。
您可以在此处阅读有关盒子模型的信息
在你的情况下,
column 1: 20 + X + 20
column 2: 20 + x + 20
column 3: 20 + X + 20
1 和 2 后的边距:20 + 20
所以...
8*20 + 3X = 960
x = 266.6666...(您的列宽)