How to place two divs next to each other?

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

Consider the following code:

相关标签:
13条回答
  • 2020-11-22 06:11

    #wrapper {
    width: 1200;
    border: 1px solid black;
    position: relative;
    float: left;
    }
    #first {
    width: 300px;
    border: 1px solid red;
    position: relative;
    float: left;
    }
    #second {
    border: 1px solid green;
    position: relative;
    float: left;
    width: 500px;
    }
    <div id="wrapper">
        <div id="first">Stack Overflow is for professional and enthusiast programmers, people who write code because they love it.</div>
        <div id="second">When you post a new question, other users will almost immediately see it and try to provide good answers. This often happens in a matter of minutes, so be sure to check back frequently when your question is still new for the best response.</div>
    </div>

    0 讨论(0)
  • 2020-11-22 06:12

    Try to use below code changes to place two divs in front of each other

    #wrapper {
      width: 500px;
      border: 1px solid black;
      display:flex;
    }
    

    JSFiddle link

    0 讨论(0)
  • 2020-11-22 06:13

    here is the solution:

    #wrapper {
        width: 500px;
        border: 1px solid black;
        overflow: auto; /* so the size of the wrapper is alway the size of the longest content */
    }
    #first {
        float: left;
        width: 300px;
        border: 1px solid red;
    }
    #second {
        border: 1px solid green;
        margin: 0 0 0 302px; /* considering the border you need to use a margin so the content does not float under the first div*/
    }
    

    your demo updated;

    http://jsfiddle.net/dqC8t/1/

    0 讨论(0)
  • 2020-11-22 06:15

    This is the right CSS3 answer. Hope this helps you somehow now :D I really recommend you to read the book: https://www.amazon.com/Book-CSS3-Developers-Future-Design/dp/1593272863 Actually I have made this solution from reading this book now. :D

    #wrapper{
      display: flex;
      flex-direction: row;
      border: 1px solid black;
    }
    #first{
      width: 300px;
      border: 1px solid red;
    }
    #second{
      border: 1px solid green;
    }
    <div id="wrapper">
        <div id="first">Stack Overflow is for professional and enthusiast programmers, people who write code because they love it.</div>
        <div id="second">When you post a new question, other users will almost immediately see it and try to provide good answers. This often happens in a matter of minutes, so be sure to check back frequently when your question is still new for the best response.</div>
    </div>

    0 讨论(0)
  • 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 <div id="wrapper"> 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 <div id="wrapper"> element to make child elements absolutely position to the <div id="wrapper"> 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

    0 讨论(0)
  • 2020-11-22 06:19

    In material UI and react.js you can use the grid

    <Grid
      container
      direction="row"
      justify="center"
      alignItems="center"
    >
        <Grid item xs>
          <Paper className={classes.paper}>xs</Paper>
        </Grid>
        <Grid item xs>
          <Paper className={classes.paper}>xs</Paper>
        </Grid>
        <Grid item xs>
          <Paper className={classes.paper}>xs</Paper>
        </Grid>
    
    </Grid>
    
    0 讨论(0)
提交回复
热议问题