Чередование цветов в строке на div с использованием только css
Я хочу знать, возможно ли это с помощью только CSS:
Black White
White Black
Black White
White Black
имя представляет цвет фона, который я хочу. В этом jsfiddle, Я жестко закодировал его, чтобы показать, что именно я хочу, но количество divs будет динамическим, поэтому я не знаю, сколько их будет.
как этого достичь?
1 ответов
вам понадобится :nth-child
псевдо-класс здесь.
Вариант 1
этот первый вариант требует использования 2 селекторов
первый обрабатывает стиль divs в левом столбце сетки. Нумерация этих дает нам 1,5,9,13,... который вы можете выразить как 4n-3
(4*1-3=1, 4*2-3=5, 4*3-3=9, 4*4-3=13, ...). Это также может быть выражено как 4n+1
, если вы предпочитать.
второй селектор, для обработки стиля divs в правой колонке, является более простым, так как это просто каждый четвертый div
, который может быть выражен как 4n
(4*1=4, 4*2=8, 4*3=12, 4*4=16, ...).
div{
background:#fff;
display:inline-block;
height:100px;
width:50%;
}
div:nth-child(4n-3),div:nth-child(4n){
background:#000;
}
<div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div>
вариант 2
этот второй вариант достигает того же результата с помощью одного селектора с помощью отрицание псевдо класс :not()
.
обратный выбор к этому в варианте можно выразить используя 4n-1
и 4n-2
(или 4n+3
и 4n+2
) поэтому мы выберем все divs, за исключением тех, которые соответствуют этим выражениям.
div{
background:#fff;
display:inline-block;
height:100px;
width:50%;
}
div:not(:nth-child(4n-1)):not(:nth-child(4n-2)){
background:#000;
}
<div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div>
FURHTER ЧТЕНИЕ НА MDN
- обзор псевдоклассов CSS
- дополнительная информация о the
:nth-child
псевдо-класс - дополнительная информация о псевдоклассе отрицания
в сторону
я изо всех сил пытался придумать одно выражение CSS в соответствии с этим, но не смог. Если кто-нибудь добьется успеха в этом, пожалуйста, дайте мне знать. Последовательность, которую мы ищем, чтобы соответствовать:1,4,5,8,9,12,13,16,17,20,...,2n-(n%2)