Tengo un conjunto de cuatro colores y quiero aplicarlos a los div anidados, por lo que cada próximo hijo tiene un color diferente. Si hay un quinto nivel de anidamiento, quiero comenzar de nuevo con el primer color y tenerlo en curso, incluso si tengo niveles infinitos de anidamiento . ¿Es posible hacerlo solo con selectores CSS y evitar JavaScript ?
Actualmente estoy atascado en el siguiente código, como puede ver, el rosa se sigue aplicando a todos los div anidados después del 4to.
div {
border: 1px solid black;
font-weight: bold;
padding: 30px;
}
div {
color: red;
}
div>div {
color: blue;
}
div>div>div {
color: green;
}
div>div>div>div {
color: pink;
}
<div>
1
<div>
2
<div>
3
<div>
4
<div>
1
<div>
2
<div>
3
<div>
4
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
html
css
css-selectors
easwee
fuente
fuente
section
o nombre de clase para los superiores a continuación, sus selectores deben estar contenidassection > div
Respuestas:
Podemos usar
hue-rotate
para dar el efecto deseado. Al configurar el filtro90deg
, se repetirá cada 4 niños. Al especificar el color inicial como azul y girando el tono 90 grados, obtenemos rojo.¿No creo que sea posible especificar cuatro colores diferentes en la forma en que pregunta utilizando CSS puro a menos que esté dispuesto a repetir
div > div > ...
para un nido máximo teórico?Ejemplo con texto lorem ipsum:
Mostrar fragmento de código
fuente
saturate
. Al aumentar la saturación parasaturate(3)
obtener exactamente los mismos colores en cada bucle, pero he notado una especie de sombra o sangrado cuando presiono la saturación tan alto que hace que sea MUY difícil leer los caracteres. Aumenté la saturación en mis ejemplos de código a 2.5 para reducir la diferencia entre colores por bucle.Aquí hay una idea de solución basada en algún truco de fondo. Es más una aproximación que una solución sólida, ya que consideraré el hecho de que solo tendrá una línea de texto en cada nivel.
fuente