【发布时间】:2013-05-24 05:39:58
【问题描述】:
我希望一些 div 从其内容中获取宽度。 Display:inline-block 可以做到这一点,但我也希望 div 在彼此下方,而不是像浮动一样彼此相邻。
使用 float:left 而不是 inline-block 可以做到这一点,但我希望 div 居中对齐,而不是左对齐。我该怎么做?
【问题讨论】:
标签: css
我希望一些 div 从其内容中获取宽度。 Display:inline-block 可以做到这一点,但我也希望 div 在彼此下方,而不是像浮动一样彼此相邻。
使用 float:left 而不是 inline-block 可以做到这一点,但我希望 div 居中对齐,而不是左对齐。我该怎么做?
【问题讨论】:
标签: css
html是
<div>
abc <div style="margin:4px auto;width:100px;">div1</div><br/>
abc <div style="margin:4px auto;width:100px;">div1</div><br/>
abc <div style="margin:4px auto;width:100px;">div1</div><br/>
abc <div style="margin:4px auto;width:100px;">div1</div><br/>
</div>
样式表是
div{
border:1px solid;
padding:10px;
display:inline-block;
}
【讨论】:
在父 div 上放置 white-space: pre-line; 在子 div 上添加 clear : both
#wrapper{ text-align: center; white-space: pre-line; }
#div1, #div2{
display: inline-block;
clear: both;
border: 1px solid grey;
margin: 3px auto 3px auto;
width: auto;
}
<div id="wrapper">
<div id="div1" class="clearfix">some content here that is bigger</div>
<div id="div2" class="clearfix">some content here</div>
</div>
【讨论】:
pre-line 会使 HTML 标记保持清晰,例如,如果您在 div1 和 div2 标记之间插入一些空行,则视图将是有害的.看到这个jsFiddle。
考虑以下标记:
<div class="container">
<div class="text">apple</div>
<div class="text">banana</div>
<div class="text">kiwi</div>
<div class="text">orange</div>
</div>
因为你想align你的元素,你必须使用inline,然后我们将打破
他们与:after:
.container {
text-align: center;
}
.text {
background: yellow;
display: inline;
}
.text:after {
content: '';
display: block;
}
【讨论】:
;)。
span 放入您的divs 并设置样式,检查此jsFiddle。
正如in this thread所提到的,这个问题也有弹性解决方案:
#container > p {
border-bottom: 2px solid black;
}
#container {
display: flex;
flex-flow: column;
align-items: flex-start;
}
<div id="container">
<p>A text</p>
<p>A text</p>
<p>A longer text</p>
</div>
【讨论】: