CSS并排div的自动等宽

Fai*_*nia 47 css

<div id="wrapper" style="width:90%;height:100px;background-color:Gray;">
    <div id="one" style="height:100px;background-color:Green;float:left;"></div>
    <div id="two" style="height:100px;background-color:blue;float:left;"></div>
    <div id="three" style="height:100px;background-color:Red;float:left;"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

我有一个父div,它将包含2或3个子div.我希望子div自动采用相等的宽度.

谢谢

thi*_*dot 97

这不是不可能的.使用时,它甚至不是特别难display: table.

此解决方案适用于现代浏览器.它不适用于IE7.

http://jsfiddle.net/g4dGz/ (三个divs)
http://jsfiddle.net/g4dGz/1/ (两个divs)

CSS:

#wrapper {
    display: table;
    table-layout: fixed;

    width:90%;
    height:100px;
    background-color:Gray;
}
#wrapper div {
    display: table-cell;
    height:100px;
}
Run Code Online (Sandbox Code Playgroud)

HTML:

<div id="wrapper">
    <div id="one">one one one one one one one one one one one one one one one one one one one one one</div>
    <div id="two">two two two two two two</div>
    <div id="three">three</div>
</div>
Run Code Online (Sandbox Code Playgroud)

  • 如何在最佳实践中查看此方法?当内容不是表格数据时,使用`display:table`是否可以? (2认同)
  • @Rikki:是的,没关系.表格的耻辱是在HTML中使用`<table>`来保存非表格数据,从语义的角度来看这是不好的.使用`display:table-cell`与使用`float:left`来定位一些东西没有什么不同. (2认同)

paj*_*ooh 35

在现代浏览器中,您可以使用flexbox

三个div的例子

两个div的例子

CSS:

#wrapper {
display: flex;    
width:90%;
height:100px;
background-color:Gray;
}
#wrapper div {
flex-basis: 100%;
}
Run Code Online (Sandbox Code Playgroud)

HTML:

<div id="wrapper">
<div id="one">one one one one one one one one one one one one one one one one one one one one one</div>
<div id="two">two two two two two two</div>
Run Code Online (Sandbox Code Playgroud)