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 elements e1, e2 and e3 to be left, middle and right positioned. This is what I'm trying:
<div id="wrapper"> <div id="header"> <div id="header-e1"> 1 </div> <div id="header-e2"> 2 </div> <div id="header-e3"> 3 </div> </div> <div id="nav"> links </div> <div id="content"> content </div> <div id="footer"> footer </div> </div>
With this css:
#wrapper { width: 95%; margin: 20px auto; border: 1px solid black; } #header { margin: 5px; } #header-e1 { float: left; border: 1px solid black; } #header-e2 { float: left; border: 1px solid black; } #header-e3 { border: 1px solid black; } #nav { margin: 5px; } #content { margin: 5px; } #footer { margin: 5px; }
UPDATE
The code I have above gives me this: But I want the 2 centered and the 3 on the right side. I don't want to set the width to a percent because the content in the elements may vary, meaning it may be 20/60/20 - 10/80/10 - 33/33/33 or something else.
Complete HTML/CSS Course 2022 To set the heading alignment in HTML, use the style attribute. The style attribute specifies an inline style for an element. The attribute is used with the HTML <h1> to <h6> tag, with the CSS property text-align.
Use CSS property to set the height and width of div and use display property to place div in side-by-side format. float:left; This property is used for those elements(div) that will float on left side. float:right; This property is used for those elements(div) that will float on right side.
You can do this by setting the display property to "flex." Then define the align-items and justify-content property to “center.” This will tell the browser to center the flex item (the div within the div) vertically and horizontally.
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.
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; }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With