我试图在我的html文档中创建两行.column
元素。现在我有一行列,后面是页脚下面的另一行。
第一行似乎按照我的意愿行事,但当我尝试使用相同的规则创建另一行列时,它会垂直对齐而不是水平对齐。我如何更改CSS以使第二行的列像第一行一样运行?
这是HTML:
<div id="columns">
<div class="left column">
<p>left column</p>
</div>
<div class="middle column">
<p>middle column.</p>
</div>
<div class="right column">
<p>right column.</p>
</div>
</div>
<div class="footer">
<div class="left column">
<p>left column</p>
</div>
<div class="middle column">
<p>middle column.</p>
</div>
<div class="right column">
<p>right column.</p>
</div>
</div>
这是CSS:
#columns {
width: 960px;
padding-top: 50px;
margin-bottom: 0px;
}
#columns .column {
position: relative;
width: 300px;
padding: 1%;
border: solid 1px #000;
}
#columns .left {
float: left;
}
#columns .middle {
float: left;
}
#columns .right {
float: right;
}
#container #col1 {
width: 320px;
float: left;
}
这是我的jsFiddle
答案 0 :(得分:0)
考虑到你的要求,我相信你想要创造以下内容:
----------------------------------------------------------------
| left column | middle column | right column |
----------------------------------------------------------------
| left column | middle column | right column |
----------------------------------------------------------------
为了做到这一点,你实际上并不需要像你创建的那样复杂的系统。您可以简单地执行以下操作:
<div id="container">
<div class="column">left column</div>
<div class="column">middle column</div>
<div class="column">right column</div>
<div class="footer">
<div class="column">left column</div>
<div class="column">middle column</div>
<div class="column">right column</div>
</div>
</div>
然后是CSS:
#container {
width: 960px; /* Provides a container with width = 3 columns + 2 paddings */
padding: 30px; /* Provides left, right, top and bottom padding of 30px */
margin: 0; /* No margin around the bounding box */
}
#container .column {
border: solid 1px #000; /* The border you were using */
box-sizing: border-box; /* This forces width/height specs to set the size of
the column's edge, INCLUDING border/padding */
float: left; /* Allows each column element to stack left */
padding: 1%; /* Provides the padding you wanted */
width: 300px; /* Sets a width */
}
我在CSS中注意到为什么每件作品都很重要。
但关键是属性box-sizing: border-box;
。如果没有这个,添加到.column
元素的边框和填充实际上会使300px
+ 1%
+ 2px
(1px
向左,{{1} }右) - 这使得3列比你想要的宽得多。通过应用1px
,它会强制box-sizing: border-box;
元素适合.column
填充以及1%
边框在指定的solid 1px #000
宽度内。
换句话说 - 300px
的3列实际上= 300px
。当您在900px
内左右添加30px
时,它仍然符合#container
的{{1}}宽度。