Подтвердить что ты не робот

Как создать первый и последний ли с CSS или jQuery?

Как я могу создать первый (верхний уровень) li и последний (верхний уровень) li с помощью CSS или jQuery?

Я использую CSS для установки первого стиля li, но он также моделирует первый li на каждом вторичном уровне ul, так как я могу заставить его стиль только li с Main 1 в он и последний с Main 6 в нем?

Вот мой код:

<style>
ul li:first-child
{
width: 800px;
border:1px solid #fc5604; border-top-width:thin; (2px)
}
</style>

и HTML:

<div id="nav">
    <ul>
        <li><a href="#">Main 1</a>
            <ul>
                <li><a href="#">Sub 1a</a></li>
                <li><a href="#">Sub 1b</a></li>
                <li><a href="#">Sub 1c</a></li>
            </ul>
        </li>
        <li><a href="#">Main 2</a>
            <ul>
                <li><a href="#">Sub 2</a></li>
            </ul>
        </li>
        <li><a href="#">Main 3</a>
            <ul>
                <li><a href="#">Sub 3</a></li>
            </ul>
        </li>
        <li><a href="#">Main 4</a>
            <ul>
                <li><a href="#">Sub 4</a></li>
            </ul>
        </li>
        <li><a href="#">Main 5</a></li>
        <li><a href="#">Main 6</a>
            <ul>
                <li><a href="#">Sub 6</a></li>
            </ul>
        </li>
    </ul>   
</div>
4b9b3361

Ответ 1

Вы должны использовать непосредственный селектор для детей:

ul > li:first-child

Это правило повлияет на <li>, которому сразу предшествует <ul>. Это должно относиться как к jQuery, так и к css. Не все браузеры могут использовать псевдо-классы (особенно last-child.

Ответ 2

Первый элемент довольно прост, и я вижу, что у вас уже есть :first-child вниз. :last-child делает то же самое, но имеет ограниченную поддержку в IE. Однако, если количество элементов списка фиксировано (что мне кажется), вы можете на самом деле нацелить последний элемент только с помощью CSS. Обратите внимание!

li + li + li +li + li + li { background:pink; }

Здесь сценарий: http://jsfiddle.net/jgRZQ/1/

Селектор + в основном нацелен на ближайшего следующего брата (если он соответствует вашему типу), поэтому это вопрос подсчета вашего пути до последнего. И да, это работает в IE7.:)

Ответ 3

Дайте имя класса для первого тега ul.

<div id="nav">
    <ul class="list">
        <li><a href="#">Main 1</a>
            <ul>
                <li><a href="#">Sub 1a</a></li>
                <li><a href="#">Sub 1b</a></li>
                <li><a href="#">Sub 1c</a></li>
            </ul>...........
...................................

Затем вы можете использовать следующий CSS:

<style>
ul.list > li:first-child{
width: 800px;
border:1px solid #fc5604; border-top-width:thin; (2px)
}
ul.list > li:last-child{
width: 800px;
border:1px solid #fc5604; border-top-width:thin; (2px)
}
</style>

Ответ 4

<style>
    ul > li:first-child, ul > li:last-child
    {
        width: 800px;
        border:1px solid #fc5604; border-top-width:thin; (2px)
    }
</style>

Ответ 5

Если вы хотите использовать jQuery, вы можете использовать следующее:

$('#nav > ul li').first().css('background-color', 'red');
$('#nav > ul li').last().css('background-color', 'red');

^ должен делать трюк.