Ne pouvez pas remplacer le css de l'élément
J'ai un site web avec un modèle global qui contient partielle des modèles, mais maintenant je suis coincé avec un simple CSS problème:
HTML
<div id="context"> <!-- this is part of global template -->
<!-- this is rendered by partial template -->
<select id="test">
<option>[Select a value]</option>
</select>
</div>
Global CSS
Dans une feuille de style par défaut de la largeur de toutes les <select>
éléments à l'intérieur de #context
est défini:
div#context select
{
width: 500px;
}
Partielle CSS
Maintenant pour la partie du modèle (ce qui rend le contenu à l'intérieur de #context
), j'ai besoin de remplacer la valeur par défaut de la largeur de <select>
. Je pensais que ce serait aussi simple que:
select#test
{
width: 150px;
}
Mais j'ai eu tort, il ne fonctionne pas. Et je suppose que c'est parce que css pense div#context select
est un meilleur match pour l'élément, parce qu'il fonctionne lorsque je change la partielle template css comme ceci:
div#context select#test
{
width: 150px;
}
Bien sûr, ce n'est pas ce que je veux faire, parce que la partielle modèle ne doit pas savoir dans quel nœud, il est rendu à l'intérieur du modèle global.
Des idées sur comment je peut surcharger le style pour la partie du modèle, sans spécification d'un élément à partir du modèle global?
Voir jsFiddle
!important
à surmonter cela?Essayez de style en ligne
OriginalL'auteur huysentruitw | 2013-08-25
Vous devez vous connecter pour publier un commentaire.
Il suffit de faire votre sélection un peu plus forte:
Exemple: http://jsfiddle.net/XvZSz/2/
De W3 - Sélecteurs CSS:
Donc,
div#context select
est 1 ID et 2 éléments: 0/1/2Mais:
select#test
est 1 ID et 1 élément (0/1/1) - pas aussi forte.Plus d'infos:
div#context select
eh bien, puisqu'il n'est pas
<body>
élément dans mon partiel de modèle, je préfère ne pas l'utiliser partielle css.CSS n'est pas appliquée à des modèles, il est appliqué à la page. Mais encore, c'est juste un exemple: tous changement à faire: vous pouvez ajouter une classe, par exemple.
comme pour
!important
- qu'allez-vous faire lorsque vous voulez remplacer une!important
règle? Faire de la nouvelle règle plus spécifique.ne savais pas que
specificity
formule. C'est drôle:select#test[id=test]
remplace trop, car il en résulte 111.OriginalL'auteur Kobi
Essayez ceci :
Une règle qui a le !important propriété sera toujours appliqué n'importe où que la règle s'affiche dans le document CSS. Donc si vous voulez assurez-vous que la propriété toujours appliqué, vous devez ajouter la !important propriété de la balise.
!important
. Donc, je pense que je vais rester avec Kobi solution et essayer de faire de la partielle css un peu plus fort.OriginalL'auteur Mandeep Pasbola
!important
remplacera votre cssdémo
que faire si votre global css a
!important
Vous pouvez ensuite appeler
body select#test{/*call your css*/}
OriginalL'auteur Bhojendra Rauniyar
Il n'est pas question de "meilleur match" la règle de spécificité plus élevée de la valeur
veuillez vérifier cette lien
Je recommande d'éviter l'utilisation de la !important
Vous pouvez lire à ce sujet ici.
Ici, plusieurs points saillants pourquoi pas à utiliser !important:
1.Encourage bâclée, mal pensé code
2.Crée un code qui est moins facile à gérer
3.Remplace les styles déclarés dans l'utilisateur de feuilles de style, dégradant ainsi l'accessibilité
OriginalL'auteur Tomzan
!important remplace n'importe quel style.
OriginalL'auteur gp.