html - 甚至带有文本填充的列?

标签 html css

我是网站 build 的新手,我遇到了第一个更大的 CSS 问题。我有一个简单的 3 列拆分,如下所示:

HTML

<div class="featureSingle">Lorem ipsum dolor sit...</div>
<div class="featureSingle">Lorem ipsum dolor sit...</div>
<div class="featureSingle">Lorem ipsum dolor sit...</div>

CSS

.featureSingle {
    float: left;
    width: 33%;
    padding-right: 5px; 
} 

问题在于右填充(无论如何我都喜欢左填充和右填充),基本上它搞砸了布局并将第三列移到下方(它太大了)。我认为填充会改变容器内的文本对齐方式,它不应该让它“变大”吗?我该如何解决这个问题?

最佳答案

添加box-sizing: border-box;:

.featureSingle
{
    float: left;
    width: 33%;
    padding-right: 5px;
    -webkit-box-sizing: border-box;
       -moz-box-sizing: border-box;
         -o-box-sizing: border-box;
            box-sizing: border-box;
} 

固定在 fiddle 中:http://jsfiddle.net/y9Jw2/

默认的盒子模型会考虑到您添加的 padding-right,因此最终结果是宽度为 33% + padding 的 5px。这使得您的列占用的空间总量超过浏览器窗口的 100%;所以它不适合所有在一条线上。通过将框模型更改为 border-box,它允许 33% 的宽度将填充考虑在内,从而使总数达到 100%,并允许所有内容都适合。

这是 CSS Tricks 的一篇很棒的文章,可以更详细地解释它:http://css-tricks.com/the-css-box-model/ .

关于html - 甚至带有文本填充的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21517863/

相关文章:

jquery - 使用 jquery 检查所有复选框

javascript - 如何设置事件标签

css - Firefox 输入占位符填充问题

javascript - 网站上的分享按钮会在处理下一篇之前跳过一篇文章

css - 将文本保留在 div 的左侧和中间,而不是中心

javascript - 如何在变量的切换中保存开关条件

html - 如何改变html符号的宽度和高度?

javascript 过滤器功能在 IE 11 中不起作用,但在 Chrome 和 Mozilla 中运行良好

javascript - 重置内容可编辑的插入符号位置

html - 如何在没有js的情况下选中复选框时切换栏