我有这个HTML:
<div id="container">
<article></article>
<article></article>
<article></article>
<article></article>
<article></article>
</div>
和这个CSS:
#container {
overflow: hidden
}
article {
float:left;
height: 200px;
width: 200px;
background-color: red;
margin: 5px;
}
我想在不指定宽度的情况下居中#container。有可能吗?
这是Fiddle。
编辑: 我需要改变#container的宽度以适应文章。如果主体宽度为450px,则每行将有两个文章,因此容器的宽度应为400px aprox。如果主体宽度为1100px,则每行将有5个物品,因此容器的宽度应为1000px aprox。
答案 0 :(得分:4)
您可以尝试这样的事情(jsfiddle):
HTML:
<html>
<body>
<div id="container">
<article></article>
<article></article>
<article></article>
<article></article>
<article></article>
</div>
</body>
</html>
CSS:
html, body { margin: 0; padding: 0; }
body { text-align: center; }
#container {
overflow: hidden;
margin: 0 auto;
width: 90%;
text-align: left;
}
article {
display:inline-block;
height: 200px;
width: 200px;
background-color: red;
margin: 5px;
}
答案 1 :(得分:4)
我注意到之前的设置存在轻微问题。因为保持第一个占位符内的文章可以使利润率翻倍。在每个文章包装点调整页面大小时,这会导致轻微的不一致。
这个更新的小提琴摆脱了这些问题:
然而,如今这种布局很可能通过Flexbox以更好的方式实现。
https://css-tricks.com/snippets/css/a-guide-to-flexbox/
以下方法有效,但有点疯狂。令人讨厌的是,这不是CSS可以轻松处理的事情:
此方法适用于Nick发布的基本思想,并使用此方法然后定位左浮动系统...这解决了问题,即您总是在居中容器中使用中心对齐元素。
所以而不是:
[][][][]
[][]
你得到:
[][][][]
[][]
需要以下规定:
inline-block
相关的空白问题,font-size
和line-height
被清零,这意味着必须为文章再次手动设置它们。你可以通过从css中删除这些归零属性来解决这个问题,并确保你的占位符标记没有任何空格。#container
元素上设置固定的高度标记
<div class="container">
<div class="placeholder">
<div class="position">
<article>a</article>
<article>b</article>
<article>c</article>
<article>d</article>
<article>e</article>
</div>
</div>
<div class="placeholder"></div>
<div class="placeholder"></div>
<div class="placeholder"></div>
<div class="placeholder"></div>
</div>
<强> CSS 强>
.container {
font-size: 0;
line-height: 0;
text-align: center;
}
.placeholder {
display: inline-block;
width: 200px;
margin-left: 5px;
margin-right: 5px;
height: 0px;
}
.position {
position: absolute;
}
article {
font-size: 12pt;
line-height: 1.2em;
float: left;
margin: 5px;
width: 200px;
height: 100px;
background: red;
}
答案 2 :(得分:1)
您的意思是将物品放在容器中心,同时让它们仍然包裹?在这种情况下(jsfiddle):
#container {
text-align: center;
}
article {
display:inline-block;
height: 200px;
width: 200px;
background-color: red;
margin: 5px;
}
答案 3 :(得分:1)
在考虑了几个选项后,我发现使用媒体查询是更简单的方法。
在这种情况下,它将是这样的:
@media (max-width: 420px) {
#container {
width: 210px;
}
}
@media (min-width: 420px) and (max-width: 630px) {
#container {
width: 420px;
}
}
@media (min-width: 630px){
#container {
width: 630px;
}
}
这是fiddle。
答案 4 :(得分:0)
取出float: left;
并添加margin:auto;