Псевдоклассы для списка li - PullRequest
1 голос
/ 17 июля 2011

Я экспериментирую здесь с псевдоклассами и пытаюсь что-то сделать, что обычно делаю с классом стиля. У меня есть неупорядоченный список с несколькими неупорядоченными подчиненными списками и т. Д.

Я хочу убедиться, что первый уровень тегов li установлен влево. Вот мой HTML

<body>
<div id="MainMenu">
    <ul id="nav">
        <li><a href="#">Home</a></li>
        <li>
            <a href="#">About</a>
            <ul>
                <li><a href="#">The Product</a></li>
                <li><a href="#">Meet The Team</a></li>
            </ul>
        </li>
        <li>
            <a href="#">Contact</a>
            <ul>
                <li>
                    <a href="#">Business Hours</a>
                    <ul>
                        <li><a href="#">Week Days</a></li>
                        <li><a href="#">Weekends</a></li>
                    </ul>
                </li>
                <li><a href="#">Directions</a></li>
            </ul>
        </li>
    </ul>
</div>
</body>

Я попробовал такой стиль.

body {
    font: 13px/160% Trebuchet MS,Arial,Helvetica,Sans-Serif;
    margin:0;
    padding:0
}

#nav{
    list-style:none;
    font-weight:bold;
    width:100%;

}

#nav li{
    float:left;
    margin-right:40px;
    position:relative;
}

Проблема с этим заключается в том, что все ли потомки id nav имеют плавающий левый угол. Теперь я хочу, чтобы теги li первого уровня плавали влево, а все остальные теги уровня li игнорировались. Пожалуйста, не отвечайте, говоря, используйте имя класса для всех тегов li верхнего уровня. Я уже знаю, что могу подойти к этому так. Я хочу узнать некоторые из псевдоклассов и узнать, как они могут помочь мне в этом подходе.

Например, мне нужно что-то вроде #nav li: first-child {....} Но это только даст мне первый li в верхнем списке ul. Я хочу, чтобы все дети верхнего уровня в списке ul и игнорировали теги li второго уровня и так далее. Есть ли псевдоклассы, которые могут этого достичь.

Спасибо

Ответы [ 3 ]

3 голосов
/ 17 июля 2011

вы можете использовать #nav > li, это соответствует всем элементам, которые являются непосредственными li дочерними элементами #nav.

Подробнее здесь и здесь .

Демонстрация: http://jsfiddle.net/9M6p2/

1 голос
/ 17 июля 2011

Хороший подход будет:

#nav li { float: left; }
#nav li li { float: none; }
0 голосов
/ 17 июля 2011

Вы можете использовать #nav li, как вы уже делаете, и #nav li ul или #nav li ul li для стилизации элементов LI второго уровня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...