开发者

IE7 UL Nav, want to underline each link, bottom border only as long as txt length

Greetings,

Okay so i came across an issue that is driving me crazy and I am guessing it is because I am just going about it the wrong way.

  1. I have a nav setup in a normal UL.
  2. With css I set the "li" element to have a bottom border.
  3. The bottom border only extends enough to underline the contents inside the "li" tag.

  4. I tried giving the li tag a width of 100% and a width of auto.

  5. Because certain pages have different links, the UL for the nav is set to automatically size the width based on the dynamic contents inside. So the UL is always the correct width.

But the li is only the width of the content in the li, causing some links to have a wider bottom border. I want all the links in the list to have a bottom border with the width of the ul and not the li.

A. Should i just nix the u开发者_Go百科l list, and use divs for each item or am i looking at this all wrong?

B. How can I set the width of the li to always be the width of the UL?

=======

Below is a sample of how I am able to replicate the issue. It is a snippet of the css I am using with a jquery script but the code below is enough to duplicate the issue.

  1. The issue only happens with IE7
  2. If I remove "height: 20px;" from the ".sub ul li" class, it fixes the issue.... However I am not sure why it fixes the issue or why height causes the issue in the first place...

  3. On my page I need the height in the ".sub ul li" because that UL is nested inside another "UL" which has a taller "li" height than the one I want to use in ".sub ul li"

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Untitled Document</title>
    </head>
    <style type="text/css">
    .sub ul li.section_header{
        border-bottom:1px solid #ccc;
        margin-bottom:10px;
        padding-bottom:5px;
    }
    
    .sub ul{
        list-style: none;
        margin: 0; padding: 0;
        width:auto;
        float: left;
    }
    
    .sub ul li {
        width: auto; /*--Override parent list item--*/
        color: #ccc;
        padding-left:10px;
        padding-right:10px;
        display:block;
        float:none;
        height:20px;
    }
    
    </style>
    
    <body>
        <div  class="sub">    
            <ul>
                <li class="section_header">test</li>
                <li class="section_header">test 2</li>
                <li class="section_header">test 123</li>
                <li class="section_header">test 12345</li>
                <li class="section_header">test 123456789</li>
            </ul>
        </div>
    </body>
    </html>
    

Thank you in advance for any comments and insight !!!


Found the answer with the assistance of someone on another site.

Their answer:

Yes this is a bug in IE7 and when you apply the height to the list element you force haslayout (http://www.satzansatz.de/cssd/onhavinglayout.html) on the list element and IE7 (and 6) have a lot of bugs when list items hav a layout.

The only solution is remove the height and use either padding or line-height to make the height you need. You can negate the inherited height and turn off haslayout at the same time by using height:auto.

I was unable to get the li items to increase their height with a line-height(no matter what value I used it didn't change).. but was able to achieve the results with a bottom padding.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜