CSS: Placing divs left/center/right inside header

后端 未结 6 1321
-上瘾入骨i
-上瘾入骨i 2020-12-28 16:31

I\'ve been trying to create a site with the following structure:

But I can\'t seem to get the header correct (e1 left, e2 centered, e3 right). I want the three

相关标签:
6条回答
  • 2020-12-28 16:48

    Utilize the Magic of Overflow: Hidden

    If you can swap the html position of 2 & 3 like so:

    <div id="header-e1">
        1 is wider
    </div>
    <div id="header-e3">
        3 is also
    </div>
    <div id="header-e2">
        2 conforms
    </div>
    

    Then you can set this css which will cause 2 to "fill" the available space because of the overlow: hidden on it. So if 1 & 3 expand, 2 narrows (shrink window down to see what happens at really small size).

    #header-e1 {float: left;}
    #header-e2 {overflow: hidden;}
    #header-e3 {float: right;}
    

    Technically, you could keep your current html order and your float: left on both 1 & 2 and make 3 the flex div with overflow: hidden. You could do the same with 1 by reversing the order of the html completely and setting 2 & 3 to float: right with 1 having overflow: hidden. To me it would seem best to have the middle flex, but you know your application better than I.

    0 讨论(0)
  • 2020-12-28 16:49

    You need to give the divs in your header a width, and float header-e3 left.

    Note: They all have the same CSS properties, so just give them the same class like .headerDivs and then you don't have repeating code

    Edit: here is a working jsfiddle: http://jsfiddle.net/eNDPG/

    0 讨论(0)
  • 2020-12-28 16:53

    If you are trying to make the site with a responsive width, you can try the following (33% is roughly one-third):

    #header-e1 {
        float: left;
        width:33%;
        border: 1px solid black;
    }
    
    #header-e2 {
        float: left;
        width:33%;
        border: 1px solid black;
    }
    
    #header-e3 {
        float: left;
        width:33%;
        border: 1px solid black;
    }
    

    You could also used fixed widths for the divs. If you want the further from each other you can play with their left/right margins etc. Hope that helps!

    Here is an edit for no widths:

    #wrapper {
        position:relative; (add to wrapper)
    }
    
    #header-e1 {
        position:absolute;
        left:0;
        border:1px solid black;
    }
    
    #header-e2 {
        position:absolute;
        left:50%;
        border:1px solid black;
    }
    
    #header-e3 {
        position:absolute;
        right:0;
        border: 1px solid black;
    }
    
    0 讨论(0)
  • 2020-12-28 16:59
                            <style type="text/css">
                            body {
                            margin:0;
                            }
                            #header {
                            width:100%;
                            **strong text**margin:auto;
                            height:10%;
                            background-color:red;
                            }
                            #left {
                            width:20%;
                            float:left;
                            #margin:auto auto auto auto;
                            height:100%;
                            background-color:blue;
                            }
                            #right {
                            float:right;
                            width:20%;
                            #margin:auto auto auto auto;
                            height:100%;
                            background-color:green;
                            }
                            #middle {
                            position:relative;
                            left:0;
                            right:0;
                            margin:auto;
                            height:80%;
                            background-color:yellow;
                            width:100%;
                            }
                            #middle1 {
                            width: 80%;
                            margin:auto;
                            height:45%;
                            background-color:black;
                            }
                            #middle2 {
                            width: 80%;
                            margin:auto;
                            height:40%;
                            background-color:brown;
                            }
                            #middle3 {
                            width: 80%;
                            margin:auto;
                            height:15%;
                            background-color:orange;
                            }
                            #midmain {
                            width: auto;
                            margin:auto;
                            height:100%;
                            background-color:white;
                            }
                            #footer {
                            width:100%;
                            margin:auto;
                            height:10%;
                            background-color:red;
                            }
                            </style>
    
    now check comment for html design.
    
    0 讨论(0)
  • 2020-12-28 17:00

    I'm using a similar idea to what RevCocnept suggested with the width: 33%, except using display: inline-block instead of float: left. This is to avoid removing the div elements inside #header from the flow of the page and causing the height of #header to become zero.

    #header > div {
        display: inline-block;
        width: 31%;
        margin: 5px 1%;
    }
    

    Demo

    0 讨论(0)
  • 2020-12-28 17:01

    You can do something like this:

    HTML

    <div>
        <div id="left">Left</div>
        <div id="right">Right</div>
        <div id="center">Center</div>
    </div>
    

    CSS

    #left {
      float: left;
      border: 1px solid red;
    }
    
    #right {
      float: right;
      border: 1px solid blue;
    }
    
    #center {
      margin-left: 50px;
      margin-right: 50px;
      border: 1px solid green;
      text-align: center;
    }
    

    The centered <div> must come as the last one in the HTML code.

    Here's a JS Bin to test: http://jsbin.com/evagat/2/edit

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