Inline-block Dropdown Final Version

This examples is using inline-block with relative ul and li's that only appear absolute on hover, allowing a dynamic width to be set by the longest li

by ponyspy

HTML

<div class="before">
    An example of two inline, absolutely positioned dropdown menus that assume the width of their first element but expand in-place on hover to take the width of the largest element. 
</div>
<div class="wrapper">
    <div>Two lists: </div>
    <div class="dropdown first">
        <ul>
            <li>Short 1st element</li>
            <li>A bit longer 2nd element</li>
        </ul>
    </div>
    <div>and</div>
    <div class="dropdown second" style="z-index:1">
        <ul>
            <li>A longer 1st element</li>
            <li>Short 2nd</li>
        </ul>
    </div>
</div>
<div class="after">
    Removing the `white-space:nowrap` on the  will prevent the dropdowns from expanding on hover, but any li in the list that is longer then the first will be wrapped. 
</div>

CSS

.wrapper div{
    display: inline-block;
    vertical-align: top;
    margin: 0 0.25em 0 0; 
    padding: 0.25em 0;
}
    .wrapper div.dropdown{
        position:relative;
        padding: 0;
    }
    .wrapper div.dropdown.first{
        z-index: 10;
    }
    .wrapper div.dropdown ul{   
        background-color: white;
        border: 1px solid #ddd;
        white-space: nowrap;
    }
        .wrapper div.dropdown ul:hover{
            position: absolute;
        }
        .wrapper div.dropdown ul li{
            display: none;
            cursor: pointer; 
            padding: 0.25em 0.5em;
            border-top: 1px dashed #ddd;
        }
            .wrapper div.dropdown ul li:first-child:hover{
                background-color: white;
            }
            .wrapper div.dropdown ul li:hover{
                background-color: #f8f8f8;
            }
        .wrapper div.dropdown ul:hover li,
        .wrapper div.dropdown ul li:first-child{
            display: block;
        }
        .wrapper div.dropdown ul li:first-child{
            border-top: none;
        }
                
.before, .after, .wrapper{
    margin: 0.25em;
    padding: 0.5em 0.75em;
    border: 1px dashed #eee;  
}