Альтернативные цвета фона для элементов списка

У меня есть список, и каждый элемент связан. Можно ли изменить цвет фона для каждого элемента?

<ul>
    <li><a href = "link">Link 1</a></li>
    <li><a href = "link">Link 2</a></li>
    <li><a href = "link">Link 3</a></li>
    <li><a href = "link">Link 4</a></li>
    <li><a href = "link">Link 5</a></li>
</ul>

это также известно как "тигровая полоса", и нет, я не шучу

Jeff Atwood 11.12.2008 10:42
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
104
1
132 327
9
Перейти к ответу Данный вопрос помечен как решенный

Ответы 9

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

li, li + li + li, li + li + li + li + li {
  background-color: black;
}

li + li, li + li + li + li {
  background-color: white;
}

Это огромная заноза в заднице, и она не работает в IE6 :(

nickf 11.12.2008 06:23

@nickf Ага. Я думаю, что «правильный» способ предполагает использование CSS3, и почти ничто не поддерживает это.

sblundy 11.12.2008 06:27

Вы можете добиться этого, добавив чередующиеся классы стилей к каждому элементу списка.

<ul>
    <li class = "odd"><a href = "link">Link 1</a></li>
    <li><a href = "link">Link 2</a></li>
    <li class = "odd"><a href = "link">Link 2</a></li>
    <li><a href = "link">Link 2</a></li>
</ul>

А затем стилизовать его как

li { backgorund:white; }
li.odd { background:silver; }

Вы можете дополнительно автоматизировать этот процесс с помощью javascript (пример jQuery ниже)

$(document).ready(function() {
  $('table tbody tr:odd').addClass('odd');
});

Поскольку вы используете стандартный HTML, вам нужно будет определить отдельный класс и вручную установить строки для классов.

Это и тот факт, что вы можете сделать это автоматически с помощью javascript после эффекта, как говорится в принятом ответе. Я просто хотел поставить вам +1 за правильный ответ.

Karl 11.12.2008 07:28

Вы можете сделать это, указав чередующиеся имена классов в строках. Я предпочитаю использовать row0 и row1, а это значит, что вы можете легко добавить их, если список строится программно:

for ($i = 0; $i < 10; ++$i) {
    echo '<tr class = "row' . ($i % 2) . '">...</tr>';
}

Другой способ - использовать javascript. В этом примере используется jQuery:

$('table tr:odd').addClass('row1');

Обновлено: Я не знаю, почему я привел примеры с использованием строк таблицы ... замените tr на li и table на ul, и это применимо к вашему примеру

Если вы хотите сделать это исключительно в CSS, у вас будет класс, который вы назначаете каждому альтернативному элементу списка. Например.

<ul>
    <li class = "alternate"><a href = "link">Link 1</a></li>
    <li><a href = "link">Link 2</a></li>
    <li class = "alternate"><a href = "link">Link 3</a></li>
    <li><a href = "link">Link 4</a></li>
    <li class = "alternate"><a href = "link">Link 5</a></li>
</ul>

Если ваш список генерируется динамически, эта задача будет намного проще.

Если вы не хотите каждый раз обновлять этот контент вручную, вы можете использовать библиотеку jQuery и поочередно применять стиль к каждому элементу <li> в вашем списке:

<ul id = "myList">
    <li><a href = "link">Link 1</a></li>
    <li><a href = "link">Link 2</a></li>
    <li><a href = "link">Link 3</a></li>
    <li><a href = "link">Link 4</a></li>
    <li><a href = "link">Link 5</a></li>
</ul>

И ваш код jQuery:

$(document).ready(function(){
  $('#myList li:nth-child(odd)').addClass('alternate');
});

Попробуйте добавить пару атрибутов класса, скажем, «четный» и «нечетный», к чередующимся элементам списка, например

<ul>
    <li class = "even"><a href = "link">Link 1</a></li>
    <li class = "odd"><a href = "link">Link 2</a></li>
    <li class = "even"><a href = "link">Link 3</a></li>
    <li class = "odd"><a href = "link">Link 4</a></li>
    <li class = "even"><a href = "link">Link 5</a></li>
</ul>

В разделе <style> страницы HTML или в связанной таблице стилей вы должны определить те же классы, указав желаемые цвета фона:

li.even { background-color: red; }
li.odd { background-color: blue; }

Возможно, вы захотите использовать библиотеку шаблонов по мере развития ваших потребностей, чтобы предоставить вам большую гибкость и сократить набор текста. Зачем набирать все эти элементы списка вручную?

Ответ принят как подходящий

Как насчет прекрасного CSS3?

li { background: green; }
li:nth-child(odd) { background: red; }

@Adam C: Можете ли вы предложить способ применить это к динамическому списку? Когда я попробовал это с динамическим списком, когда данные поступали из веб-службы, это не сработало!

SKT 31.10.2012 19:02

Есть ли у кого-нибудь пример этого, который хорошо работает с вложенными списками? То есть цвет фона первого элемента во вложенном списке будет иметь цвет, противоположный цвету фона элемента списка непосредственно перед вложенным списком. Кроме того, цвет фона следующего элемента списка в родительском списке противоположен цвету фона последнего элемента списка во вложенном списке.

Mr. Lance E Sloan 30.04.2014 17:59

Можно опустить первый оператор, чтобы использовать существующий цвет фона.

xilef 10.11.2014 13:06

Если вы используете решение jQuery, это будет работать в IE8:

jQuery

$(document).ready(function(){
$('#myList li:nth-child(odd)').addClass('alternate');
});

CSS

.alternate {
background: black;
}

Если вы используете решение CSS, это не будет работать в IE8:

li:nth-child(odd) {
    background: black;
}

Это устанавливает цвет фона для четного и нечетного li:

  li:nth-child(odd) { background: #ffffff; }
  li:nth-child(even) { background: #80808030; }

Другие вопросы по теме