Ответ 1
Как насчет какого-нибудь прекрасного CSS3?
li { background: green; }
li:nth-child(odd) { background: red; }
У меня есть список, и каждый элемент связан, есть ли способ, которым я могу чередовать цвета фона для каждого элемента?
<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>
Как насчет какого-нибудь прекрасного CSS3?
li { background: green; }
li:nth-child(odd) { background: red; }
Если вы хотите сделать это исключительно в 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="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');
});
Попробуйте добавить пару атрибутов класса, например "четный" и "нечетный", к чередующимся элементам списка, например.
<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; }
Возможно, вы захотите использовать библиотеку шаблонов по мере того, как ваши потребности будут развиваться, чтобы обеспечить вам большую гибкость и сократить печатание. Зачем вводить все эти элементы списка вручную?
Поскольку вы используете стандартный HTML, вам нужно будет определить отдельный класс для и вручную установить строки в классы.
Вы можете сделать это, указав переменные имена классов в строках. Я предпочитаю использовать 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
и применим к вашему примеру
Если вы используете решение jQuery, оно будет работать в IE8:
JQuery
$(document).ready(function(){
$('#myList li:nth-child(odd)').addClass('alternate');
});
CSS
.alternate {
background: black;
}
Если вы используете CSS soloution, он не будет работать в IE8:
li:nth-child(odd) {
background: black;
}
Это установить цвет фона на четных и нечетных li:
li:nth-child(odd) { background: #ffffff; }
li:nth-child(even) { background: #80808030; }
li: nth-child {фон: красный; }
Вы можете жестко кодировать последовательность, например:
li, li + li + li, li + li + li + li + li {
background-color: black;
}
li + li, li + li + li + li {
background-color: white;
}