Est-il possible de générer des couleurs aléatoires avec du CSS pur et sans utiliser javascript? C'est probablement impossible mais je suis toujours curieux.
J'ai trouvé quelque chose pour vous ici , mais il utilise PHP. Je pense que c'est impossible avec du CSS simple.
Ce n'est pas vraiment possible en CSS pur.
Cependant, l'utilisation d'un pré-processeur tel que SASS ( exemple ) ou LESS ( exemple ) peut générer des couleurs aléatoires pour vous car elles sont construites à l'aide de langages de script.
Une note secondaire qui pourrait aider les lecteurs à l'avenir est la possibilité d'utiliser variables CSS . On peut déclarer une variable CSS en disant
element {
--main-bg-color: brown;
}
et l'utiliser comme ça:
element {
background-color: var(--main-bg-color);
}
Maintenant, nous pouvons le changer en utilisant JS:
// From http://stackoverflow.com/a/5365036/2065702
var randomColor = "#"+((1<<24)*Math.random()|0).toString(16);
document.documentElement.style.setProperty('main-bg-color', randomColor);
Ou vous pouvez utiliser une manière complètement différente de sélectionner une couleur aléatoire (comme la saisie utilisateur). Cela permet des possibilités comme le thème. Une chose que vous devez considérer est support du navigateur parce que ce n'est pas génial en ce moment.
<body style='background-color:<?php printf( "#%06X\n", mt_Rand( 0, 0x222222 )); ?>'>
Utiliser PHP
Pas vraiment. Le dynamisme ne peut être implémenté qu'avec le support des scripts.
selon ce site, http://blog.codepen.io/2013/08/26/random-function-in-sass/ c'est possible mais pas avec du css pur
Pas exactement au hasard mais avec CSS:
Étape 1 - Sélectionnez les arrière-plans interrogés, triez-les en séquence et ajustez la fréquence
@keyframes bgrandom {
0% { background: linear-gradient(90deg, rgba(255,255,255,0.98) 50%, rgba(255,255,255,0.96) 0%); }
50% { background: linear-gradient(90deg, rgba(255,255,255,0.98) 50%, rgba(255,255,255,0.96) 0%); }
55% { background: linear-gradient(90deg, rgba(255,255,255,0.96) 50%, rgba(255,255,255,0.98) 0%); }
80% { background: linear-gradient(90deg, rgba(255,255,255,0.96) 50%, rgba(255,255,255,0.98) 0%); }
85% { background: linear-gradient(90deg, rgba(255,255,255,0.96) 50%, rgba(255,255,255,0.94) 0%); }
100% { background: linear-gradient(90deg, rgba(255,255,255,0.96) 50%, rgba(255,255,255,0.94) 0%); }
}
Étape 2 - Lancez l'animation (longueur animationName repeatMode)
#element{ animation: 1.2s bgrandom infinite; }
Facile à utiliser, à personnaliser et fonctionne très bien. Une technique similaire peut être utilisée pour les curseurs, les filateurs, etc.