Split Div Into 2 Columns Using CSS

后端 未结 14 1755
故里飘歌
故里飘歌 2020-11-29 18:01

I have been attempting to split a div into two columns using CSS, but I have not managed to get it working yet. My basic structure is as follows:

相关标签:
14条回答
  • 2020-11-29 18:51

    Another way to do this is to add overflow:hidden; to the parent element of the floated elements.

    overflow:hidden will make the element grow to fit in floated elements.

    This way, it can all be done in css rather than adding another html element.

    0 讨论(0)
  • 2020-11-29 18:52

    You can use flexbox to control the layout of your div element:

    * { box-sizing: border-box; }
    
    #content {
      background-color: rgba(210, 210, 210, 0.5);
      border: 1px solid #000;
      padding: 0.5rem;
      display: flex;
    }
    
    #left,
    #right {
      background-color: rgba(10, 10, 10, 0.5);
      border: 1px solid #fff;
      padding: 0.5rem;
      flex-grow: 1;
      color: #fff;
    }
    <div id="content">
      <div id="left">
         <div id="object1">lorem ipsum</div>
         <div id="object2">dolor site amet</div>
      </div>
    
      <div id="right">
         <div id="object3">lorem ipsum</div>
         <div id="object4">dolor site amet</div>
      </div>
    </div>

    0 讨论(0)
  • 2020-11-29 18:54

    Make children divs inline-block and they will position side by side:

    #content {
       width: 500px;
       height: 500px;
    }
    
    #left, #right {
        display: inline-block;
        width: 45%;
        height: 100%;
    }
    

    See Demo

    0 讨论(0)
  • 2020-11-29 18:57

    This works good for me. I have divided the screen into two halfs: 20% and 80%:

    <div style="width: 20%; float:left">
       #left content in here
    </div>
    
    <div style="width: 80%; float:right">
       #right content in there
    </div>
    
    0 讨论(0)
  • 2020-11-29 18:57

    The most flexible way to do this:

    #content::after {
      display:block;
      content:"";
      clear:both;
    }
    

    This acts exactly the same as appending the element to #content:

    <br style="clear:both;"/>
    

    but without actually adding an element. ::after is called a pseudo element. The only reason this is better than adding overflow:hidden; to #content is that you can have absolute positioned child elements overflow and still be visible. Also it will allow box-shadow's to still be visible.

    0 讨论(0)
  • 2020-11-29 18:57

    Floats don't affect the flow. What I tend to do is add a

    <p class="extro" style="clear: both">possibly some content</p>
    

    at the end of the 'wrapping div' (in this case content). I can justify this on a semantic basis by saying that such a paragraph might be needed. Another approach is to use a clearfix CSS:

    #content:after {
      content: ".";
      display: block;
      height: 0;
      clear: both;
      visibility: hidden;
    }
    
    #content {
      display: inline-block;
    }
    /*  \*/
    * html #content {
      height: 1%;
    }
    
    #content {
      display: block;
    }
    /*  */
    

    The trickery with the comments is for cross-browser compatibility.

    0 讨论(0)
提交回复
热议问题