tags:

views:

24502

answers:

5

I need two divs to look a bit like this:

    |               |
 ---|    LOGO       |------------------------
|   |_______________|  LINKS                |
|             CONTENT                       |

What's the neatest/most elegant way of making them overlap neatly? The logo will have a fixed height and width and will be touching the top edge of the page.

A: 

With absolute or relative positioning, you can do all sorts of overlapping. You've probably want the logo to be styled as such:

div#logo {
  position: absolute;
  left: 100px; // or whatever
}

Note: absolute position has its eccentricities. You'll probably have to experiment a little, but it shouldn't be too hard to do what you want.

sblundy
Would that cause the logo to overlap the text where links is though? Or would it push the links over to the side?
No, absolute effectively removes the tag from the flow. It would be as if it weren't there.
sblundy
A: 

Using CSS, you set the logo div to position absolute, and set the z-order to be above the second div.

#logo
{
    position: absolute:
    z-index: 2000;
    left: 100px;
    width: 100px;
    height: 50px;
}
FlySwat
+5  A: 

i might approach it like so:

CSS:

html, body {
  margin: 0px;
}

#logo {
  position: absolute; // reposition logo from the natural layout
  left: 75px;
  top: 0px;
  width: 300px;
  height: 200px;
  z-index: 2;
}

#content {
  margin-top: 100px; // provide buffer for logo
}

#links {
  height: 75px;
  margin-left: 400px; // flush links (with a 25px "padding") right of logo
}

HTML:

<div id="logo"><img src="logo.jpg" /></div>
<div id="content">
  <div id="links"></div>
</div>
Owen
is there any way to make content just avoid the space used by the logo?
Javier
hmm can you clarify? i take that to mean you just want the logo above the content? if so that's just a normal flow of divs (so remove left, top, position from #logo). i have a feeling you mean something else though! :)
Owen
I think what was meant was to have the content (text) wrap around the logo
Davy8
ah hmm, i'm pretty sure not. the problem being an element can be floated, or positioned, but not both. until they develop some sort of float: center idea...
Owen
+2  A: 

Just use negative margins, in the second div say:

<div style="margin-top: -25px;">

And make sure to set the z-layer property to get the layering you want.

TravisO
A: 

If you want the logo to take space, you are probably better of floating it left and then moving down the content using margin, sort of like this:

#logo {
    float: left;
    margin: 0 10px 10px 20px;
}

#content {
    margin: 10px 0 0 10px;
}

or whatever margin you want.

jishi