Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

li with {display: table-cell; position: relative;} with absolutely positioned div inside behaves differently in (FF4, WebKit) vs (Opera, IE9)

Here is a complete test case:

<!DOCTYPE html>
<html>
<head>
  <title>test</title>

  <style type="text/css">

    html, body, ul, li, div, span {
        padding: 0;
        margin: 0;
    }

    ul.container {
        display: table;
        list-style-type: none;
        margin-right: 24px;
        position: relative;
    }

    ul.container li {
        display: table-cell;
        position: relative;
    }

    ul.container div, ul.container span {
        border: 1px dotted #000;
    }

    ul.container div {
        width: 40px;
        height: 40px;
        position: absolute;
        left: 0;
        top: 40px;
        background-color: #008000;
    }

    ul.container span {
        display: block;
        width: 40px;
        height: 40px;
        background-color: #9acd32;
    }

  </style>
</head>
<body>

<ul class="container">
  <li>
    <span>Alice</span>
    <div>Alice</div>
  </li>
  <li>
    <span>Bob</span>
    <div>Bob</div>
  </li>
</ul>

</body>
</html>

Absolutely positioned div has li as offsetParent in IE9 and Opera, while WebKit and Firefox set offsetParent to body.

IE9, Opera

result in IE9 and Opera

Firefox 4, WebKit

result in Firefox 4 and WebKit

My question is: what is the correct behavior?

like image 341
yatskevich Avatar asked May 12 '11 13:05

yatskevich


1 Answers

Because ul.container div has position: absolute;left: 0; I think that Firefox and Webkit have the correct behavior. I don't know what you need to achieve, if the appearance of IE9 and Opera is the correct then I suggest you to remove position: absolute;left: 0;

Example: http://jsfiddle.net/6yXwb/

like image 179
Sotiris Avatar answered Nov 08 '22 14:11

Sotiris