Overlaying one div over another, but not knowing the size of the div

I'm trying to lay one div over another. This is really simple if you know the dimensions of the div.

Solved here: How to overlay one div over another div

So, here is my HTML:

<div class="container">
  <div class="overlay"></div>
  <div class="content"></div>
</div>

In my case, I don't know the exact dimensions of the "content" or "container" div. This is because I don't have control over any of the content in the div (we are making our app extensible for 3rd party developers).

See my example on jsFiddle The overlay should cover the content entirely. Width 100% and Height 100%. However, this does not work because in my example I positioned the overlay absolutely.

One solution is to use JavaScript to get the size of the content div and then set the size of the overlay. I don't like this solution much since if image sizes are not specified, you need to wait until images are loaded and recalculate the size of the div.

Is there any way of solving this problem in CSS?


You could set the position to absolute and then set all 4 positioning values to 0px which will make the box expand. See a demo here: http://jsfiddle.net/6g6dy/

This way you dont have to worry about recalculating things if you want padding on the overlay or the container (like you would if you used actual height and width values), because its always going to be adjusted to the outer dimensions of the box.


It's not possible to do this because:

  • The overlay is not contained by anything to restrict it's size (since there is no height/width applied to the container).
  • The size of the content div can change as content loads (since it has no fixed width/height).
  • I solved this by using JavaScript*. Eg.

    function resizeOverlay() {
      $('.overlay').css({
        width: $('.content').width()
        height: $('.content').height()
      });
    }
    $('.content').find('img').on('load', resizeOverlay);
    

    *Code not tested.


    Hey are you looking like this : http://tinkerbin.com/Vc4RkGgQ

    CSS

    .container {
    position:relative;
    background:blue;
      color:white;
    }
    
    .content {
    position:absolute;
    top:0;
    left:15px;
    background:red;
    color:yellow;
    }
    
    链接地址: http://www.djcxy.com/p/75858.html

    上一篇: 用css覆盖另一个div

    下一篇: 将一个div覆盖在另一个div上,但不知道div的大小