Search code examples
csshtml-listsinternet-explorer-7haslayout

How to trigger hasLayout on this li for IE 7 white space bug


Here's the HTML part of it:

<nav id="main-navigation">
<ul>
    <li><a href="#" target="_self">lorem ipsium lorem ipsium lorem</a></li>
    <li><a href="#" target="_self">lorem ipsium lorem lorem</a></li>
    <li><a href="#" target="_self">lorem ipsium lorem ipsium lorem</a></li>
    <li><a href="#" target="_self">lorem ipsium lorem</a></li>                     
</ul>
</nav>

Here's the CSS:

#main-navigation ul li a {    
    display:block;
    font-size: .8em;
    background: lime url("http://www.hpp.moh.gov.sg/HPP/MungoBlobs/636/378/bullets_doctors.gif") no-repeat right center;
    border-top: 1px dotted #ccc;
    color:#000; 
    padding: 2px 0;
}

#main-navigation ul li a.last {
    border-bottom: 1px dotted #ccc;
}


#main-navigation ul li a:hover,
#main-navigation ul li a:focus,
#main-navigation ul li a:active{
    background: red url("http://www.hpp.moh.gov.sg/HPP/MungoBlobs/636/378/bullets_doctors.gif") no-repeat right center;
    color:#fff
}

I wish not to change the html markup.

If you see this on good browsers and then on IE 7, you will see that the LI items on IE7 have a lot of white space between them.

I've tried to apply height:1px; on a on a IE only css related file. No luck.

How can one properly trigger the hasLayout so that the white space bug could go away?


Solution

  • Solution:

    HTML part:

     <!--[if lt IE 9]>
      <link rel="stylesheet" href="badbrowser.css"/>
    <![endif]-->
    

    CSS part of badbrowser.css :

    /* Fix for vertical list LI white space - hasLayout trigger */
    #main-navigation li a {
        display:inline-block;
    }
    
    #main-navigation li a {
        display:block;
    }