How to place two divs next to each other?

后端 未结 13 2118
孤独总比滥情好
孤独总比滥情好 2020-11-22 05:44

Consider the following code:

13条回答
  •  暖寄归人
    2020-11-22 06:17

    Option 1

    Use float:left on both div elements and set a % width for both div elements with a combined total width of 100%.

    Use box-sizing: border-box; on the floating div elements. The value border-box forces the padding and borders into the width and height instead of expanding it.

    Use clearfix on the

    to clear the floating child elements which will make the wrapper div scale to the correct height.

    .clearfix:after {
       content: " "; 
       visibility: hidden;
       display: block;
       height: 0;
       clear: both;
    }
    
    #first, #second{
      box-sizing: border-box;
      -moz-box-sizing: border-box;
      -webkit-box-sizing: border-box;
    }
    
    #wrapper {
        width: 500px;
        border: 1px solid black;
    }
    #first {
        border: 1px solid red;
        float:left;
        width:50%;
    }
    #second {
        border: 1px solid green;
        float:left;
        width:50%;
    }
    

    http://jsfiddle.net/dqC8t/3381/

    Option 2

    Use position:absolute on one element and a fixed width on the other element.

    Add position:relative to

    element to make child elements absolutely position to the
    element.

    #wrapper {
        width: 500px;
        border: 1px solid black;
        position:relative;
    }
    #first {
        border: 1px solid red;
        width:100px;
    }
    #second {
        border: 1px solid green;
        position:absolute;
        top:0;
        left:100px;
        right:0;
    }
    

    http://jsfiddle.net/dqC8t/3382/

    Option 3

    Use display:inline-block on both div elements and set a % width for both div elements with a combined total width of 100%.

    And again (same as float:left example) use box-sizing: border-box; on the div elements. The value border-box forces the padding and borders into the width and height instead of expanding it.

    NOTE: inline-block elements can have spacing issues as it is affected by spaces in HTML markup. More information here: https://css-tricks.com/fighting-the-space-between-inline-block-elements/

    #first, #second{
      box-sizing: border-box;
      -moz-box-sizing: border-box;
      -webkit-box-sizing: border-box;
    }
    
    #wrapper {
        width: 500px;
        border: 1px solid black;
        position:relative;
    }
    
    #first {
        width:50%;
        border: 1px solid red;
        display:inline-block;
    }
    
    #second {
        width:50%;
        border: 1px solid green;
        display:inline-block;
    }
    

    http://jsfiddle.net/dqC8t/3383/

    A final option would be to use the new display option named flex, but note that browser compatibility might come in to play:

    http://caniuse.com/#feat=flexbox

    http://www.sketchingwithcss.com/samplechapter/cheatsheet.html

提交回复
热议问题