CSS équivalent à un selecteur "OU"
Comme vous le savez, en CSS, le seul "ou" qui existe est la virgule et ne s'utilise qu'en début d'une chaîne de sélecteurs.
Par exemple on pourrait avoir les déclarations CSS suivantes :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| .Animal .Mamifere .Felin .Chat .Nez
, .Animal .Mamifere .Felin .Tigre .Nez
, .Animal .Mamifere .Felin .Lion .Nez {
background-image: url('museau-felin-01.jpg')
}
.Animal .Mamifere .Felin .Lynx .Nez {
background-image: url('museau-felin-02.jpg')
}
.Animal .Mamifere .Canin .Chien .Nez
, .Animal .Mamifere .Canin .Loup .Nez {
background-image: url('museau-canin.jpg')
} |
C'est un peu lourd et on peut donc regretter de ne pas pouvoir utiliser un "ou" au sein de la chaîne de sélecteurs
Code:
1 2 3 4 5 6 7
| .Animal .Mamifere .Felin (.Chat ou .Tigre ou .Lion) .Nez {
background-image: url('museau-felin-01.jpg')
}
.Animal .Mamifere .Canin (.Chien ou .Loup) .Nez {
background-image: url('museau-canin.jpg')
} |
Mais il est possible d'arriver au résultat d'un ou grâce au selecteur ":not". En effet en combinant le "et" naturel du CSS et le ":not" on peut obtenir l'équivalent logique d'un "ou".
Code:
1 2 3 4 5 6 7
| .Animal .Mamifere .Felin :not(:not(.Chat):not(.Tigre):not(.Lion)) .Nez {
background-image: url('museau-felin-01.jpg')
}
.Animal .Mamifere .Canin :not(:not(.Chien):not(.Loup)) .Nez {
background-image: url('museau-canin.jpg')
} |
Code:
!(!x && !y) <=> x || y