Навигация по поплавку не работает в IE6 - PullRequest
1 голос
/ 18 июня 2011

Навигация по моему сайту корректно отображается в других браузерах, кроме IE6.

Проблема

Вместо списка, который выглядит следующим образом: Главная | О | Службы, каждая из которых отображается в новой строке, например:

Home
About
Services
Community Pages

и тег <a> в <li> заполняет всю ширину страницы.

Я не дал <li> фиксированную ширину, потому что: длина навигационных элементов различна, и я хочу занимать пробелы относительно их длины.

Мой HTML

<div id="nav">
    <ul>
        <li class="top1space2"><a href="index.php" title="Go To Our Home Page" class="top1space3">Home</a></li>
        <li class="top1space2"><a href="#" title="More Jobs on Ngcareers">More Jobs</a>
            <ul>
            <?php $count=count($c_id);for ($i=0;$i<$count;$i++){ ?>
            <li><b><a href="category/<?php echo $c_slug[$i];?>" >&raquo; <?php echo $c_name[$i];?></a></b></li>
            <?php } ?>
            <li class="clearfloat">&nbsp;</li>
            </ul>
        </li>
        <li class="top1space2"><a href="graduatejobs.php">Graduate Jobs</a></li>
        <li class="top1space2"><a href="vacancy.php">Post A Job</a></li>
        <li class="top1space2"><a href="month.php" >Jobs This Month</a></li>
        <li class="top1space2"><a href="jobalert.php" >GSM Job Alert</a></li>
        <li class="top1space2"><a href="employers.php" >Employers</a></li>
        <li class="top1space2"><a href="submitcv.php"> Submit CV</a></li>
        <li class="top1space2"><a href="subscribe.php" >Subscribe</a></li>
        <li class="top1space2"><a href="advertise.php">Advertise</a></li>
        <li class="top1space2"><a href="/about/contact-us">Contact</a></li>
      </ul>
</div>

Мой CSS:

#nav ul {
    padding: 0px;
    width: 1020px;
    margin-top: 0px;
    margin-right: auto;
    margin-bottom: 0px;
    margin-left: auto;
    list-style-type: none;
    font-family: Verdana, Geneva, sans-serif;
    font-size: 12px;
    height: 32px;
}
#nav ul li {
    float: left;
    display: block;
}
.top1space2 {
    background-color: #086DA1;
    background-image: url(../pics/slice1.jpg);
    background-repeat: repeat-x;
    display: block;
    height: 36px;
}
.top1space3 {
    color: #000;
    font-weight: bold;
    background-color: #F93;
    background-image: url(../pics/slice2.jpg);
    background-repeat: repeat-x;
}
#top1space3 {
    color: #FFF;
    font-weight: bold;
    background-color: #111;
    background-image: url(../pics/btnbg.jpg);
    background-repeat: repeat-x;
}
#nav ul .top1space2 a {
    color: #FFC;
    text-decoration: none;
    font-weight: bold;
    font-size: 12px;
    display: block;
    height: 36px;
    line-height: 36px;
    text-align: center;
    padding-right: 10px;
    padding-left: 10px;
    border-right-width: 1px;
    border-right-style: solid;
    border-right-color: #9CF;
}
#nav ul .top1space2 a:hover {
    color: #000;
    text-decoration: none;
    cursor: pointer;
    background-color: #F93;
    background-image: url(../pics/slice2.jpg);
    background-repeat: repeat-x;
}
#nav ul .top1space2:hover {
    cursor: pointer;
}

Пожалуйста, как я могу это исправить в IE6, не назначая элементам фиксированную ширину?

Ответы [ 2 ]

1 голос
/ 18 июня 2011

Сделайте ваши элементы li встроенными (удалите все поплавки из любого элемента) и удалите display: block из ваших ссылок.Я создал jsfiddle, чтобы показать, как это работает.Нужно иметь в виду одну вещь: удалив все поплавки и просто отобразив все встроенное, вы получите разрыв между элементами ссылки в списке.Есть способ избавиться от этого (который я показываю в jsfiddle), но он требует удаления любого пробела, включая разрывы строк, между элементами li.Это делает вашу разметку немного запутанной, но я полагаю, что это вопрос того, насколько вы заботитесь об этом по сравнению с тем, насколько вы заботитесь о том, чтобы продолжать поддерживать IE6.

http://jsfiddle.net/WEmv9/4/

Я такжемного очищено объявлений css - там было много повторяющихся правил и ненужной разметки - очевидно, это ваш выбор, но это сделало стили, применяемые намного более понятными для grok.

edit обновлен jsfiddle, чтобы сделать ссылку 'home' нужного цвета

1 голос
/ 18 июня 2011

Определенно ошибка IE.IE6 (и, как мне кажется, IE7) рендерит плавающие элементы с width:auto как width:100%.

. Вы можете использовать это правило для IE6 / 7, чтобы исправить макет.

#nav ul li {
    float: left;
    display: block;
    width:0;
    white-space:nowrap;
}

и либо используйте условный комментарий , чтобы применить его только к IE6 / 7, либо, более просто, переопределите к width:auto, используя селектор, который IE6 / 7 не понимает, например:

#nav ul li {
    float: left;
    display: block;
    width:0;
    white-space:nowrap;
}
#nav ul > li {
    width:auto;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...