CSS side by side div's auto equal widths

前端 未结 5 1629
独厮守ぢ
独厮守ぢ 2020-11-28 23:30
相关标签:
5条回答
  • 2020-11-29 00:04

    in modern browsers, you can use flexbox

    three divs example

    two divs example

    CSS:

    #wrapper {
        display: flex;    
        width:90%;
        height:100px;
        background-color:Gray;
    }
    #wrapper div {
        flex-basis: 100%;
    }
    

    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>
    
    0 讨论(0)
  • 2020-11-29 00:12
    .wrapper > div {
      width: 33.3%;
    }
    

    This doesn't work in IE <= 6, so you would better add some common class to child divs and create a CSS-rule for it.

    0 讨论(0)
  • 2020-11-29 00:24

    It's not impossible. It's not even particularly hard, with the use of display: table.

    This solution will work in modern browsers. It won't work in IE7.

    http://jsfiddle.net/g4dGz/ (three divs)
    http://jsfiddle.net/g4dGz/1/ (two divs)

    CSS:

    #wrapper {
        display: table;
        table-layout: fixed;
    
        width:90%;
        height:100px;
        background-color:Gray;
    }
    #wrapper div {
        display: table-cell;
        height:100px;
    }
    

    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>
    
    0 讨论(0)
  • 2020-11-29 00:26

    Have you tried using width:33%?

    0 讨论(0)
  • 2020-11-29 00:28

    For the sake of older browser compatibility, here's a solution that works.

    html:

    <div class="parent">
        <div></div>
        <div></div>
        <div></div>
    </div>
    

    css:

    .parent{
        height: 200px;
        background: #f00;
    }
    .parent > div{
        width: calc(100%/3);
        height: 100%;
        float: left;
        background: #fff;
    }
    

    However, to make it dynamic, since you'd know if it'd be 2 or 3 columns, you can put the count in a variable and do internal / inline css:

    //$count = 2 or 3

    Internal CSS (recommended)

    ...
    <style>
        .parent > div{
            width: calc(100%/<?=$count;?>);
        }
    </style>
    <body>
    ...
    

    Inline CSS:

    <div class="parent">
        <div style="calc(100%/<?=$count;?>)"></div>
        <div style="calc(100%/<?=$count;?>)"></div>
        <div style="calc(100%/<?=$count;?>)"></div>
    </div>
    
    0 讨论(0)
提交回复
热议问题