Можно покрасить фон элемента в зависимости от его индекса в последовательности?

0

У меня есть div, и в div есть много элементов H3.

Для каждого элемента H3 (есть произвольная величина) фоновый цвет должен быть X-оттенками светлее H3 перед ним.

Я застрял на двух вещах.

1: Как я сделал бы это только с помощью CSS (возможно, можно было бы разработать хакерский способ сделать это в jQuery). 2: Как бы я увеличил/уменьшил цвет (для простоты предположим, что первый H3 будет черным и все остальные светлые оттенки серого).

Теги:
styling
selector

1 ответ

2
Лучший ответ

К сожалению, нет никакого способа сделать что-то в CSS (вы могли бы что-то сделать с nth-of-type), но это будет работать, только если только те элементы <h3> на странице находятся в одном и том же родительском элементе, и если вы знаете заранее, сколько будет, или, по крайней мере, сколько max)

Но в JavaScript это довольно просто:

var h3s = document.getElementsByTagName('h3'), l = h3s.length, den = Math.max(l-1,1),
    darkest = [0,0,0], lightest = [255,255,255], // R,G,B - adjust as needed
    step = [
        (lightest[0]-darkest[0])/den,
        (lightest[1]-darkest[1])/den,
        (lightest[2]-darkest[2])/den
    ], i;
for( i=0; i<l; i++) {
    h3s[i].style.color = "rgb("
        +Math.round(darkest[0]+step[0]*i)+","
        +Math.round(darkest[1]+step[1]*i)+","
        +Math.round(darkest[2]+step[2]*i)
    +")";
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню