Il s'avère que j'ai déjà rencontré un comportement anormal dans la liste UL au travail.
De plus, j'ai vu hier le post http://bbs.blueidea.com/thread-2984871-1-1.html , j'ai donc testé divers attributs du style de liste et découvert un phénomène intéressant.
Jetons d'abord un coup d'œil à l'explication du style de liste dans le manuel CSS.
Définition et utilisation
L'attribut raccourci de style liste définit toutes les propriétés de liste dans une seule déclaration.
illustrer
Cette propriété est une propriété abrégée qui couvre toutes les autres propriétés de style de liste. Puisqu'il s'applique à tous les éléments avec un affichage d'élément de liste, il ne peut être utilisé que sur les éléments li en HTML et XHTML normaux, mais en fait, il peut être appliqué à n'importe quel élément et est hérité par l'élément d'élément de liste.
Les propriétés suivantes peuvent être définies dans l'ordre :
• type de style de liste
• position-style-liste
• image-style-liste
Il n'est pas nécessaire de définir l'une des valeurs. Par exemple, "list-style:circle inside;" est également autorisé. Les propriétés qui ne sont pas définies utilisent leurs valeurs par défaut.
Valeur par défaut : disque extérieur aucun
Dans le travail quotidien, il est souvent nécessaire d'effectuer une réinitialisation CSS sur ul et li pour masquer les symboles de la liste.
La manière d'écrire la plus couramment utilisée est Ul,li,ol{list-style:none;} (certaines personnes utilisent également ul,li,ol{list-style-type:none;})
Boîte de code d'exécution
[Ctrl+A Sélectionner tous les conseils : vous pouvez d'abord modifier une partie du code, puis appuyer sur Exécuter]
Il n'y a aucun problème avec cette page dans IE6, 7, 8 et FF.
Mais ce que nous ne pouvons pas ignorer, c'est que list-style: contient trois attributs :
type de style de liste
position-style-liste
liste-style-img
Si vous ne faites pas attention à ces trois attributs, le style de liste posera parfois des problèmes.
Par exemple, lorsque ul, après avoir flottant, a besoin de display:inline pour résoudre le problème de double marge dans IE6, quelque chose d'étrange se produit :
Boîte de code d'exécution
[Ctrl+A Sélectionner tous les conseils : vous pouvez d'abord modifier une partie du code, puis appuyer sur Exécuter]
.ul01{float:left;display:inline;}
.ul01,.ul01 li{list-style:aucun;}
La page ci-dessus est toujours normale dans IE8 et ff, mais dans IE6 et 7, il y a une distance entre l'intérieur de ul et li.
On peut voir que lorsque nous définissons list-style:none, bien que le symbole de liste n'apparaisse pas, sa position est toujours laissée dans IE6 et 7.
Découvrez les attributs de cet UL dans FF
Comme le montre l'image, lorsque list-style:none est défini en CSS, cela n'a aucun effet sur la position du style de liste. Il s'agit toujours du paramètre par défaut du navigateur FF et la valeur est extérieure.
Dans IE6 et 7, list-style-position: inside est probablement la valeur par défaut
Pour confirmer cela, j'ai changé list-style:none en list-style:none à l'intérieur de none et je l'ai testé à nouveau
Boîte de code d'exécution
[Ctrl+A Sélectionner tous les conseils : vous pouvez d'abord modifier une partie du code, puis appuyer sur Exécuter]
Après l'avoir exécuté, vous constaterez que dans IE6 et 7, il se comporte exactement de la même manière que list-style:none.
Je suppose donc que dans IE6 et 7, lorsque UL a les attributs float:left et display:inline et que list-style:none est défini, list-style-position est également par défaut à l'intérieur ;
Donc la conclusion à laquelle je suis arrivé est que sous IE6 et 7, quand UL n'a pas float:left;display:inline;:
Qu'il existe ou non l'attribut list-style:none, les symboles de liste sont masqués et n'occupent pas d'espace (5, 6 dans le code ci-dessous)
Lorsque UL a l'attribut float:left;display:inline;
list-style:none, le symbole de la liste est masqué, mais la position est toujours à gauche (list-style-position:inside (UL1, ul3 dans le code ci-dessous) ;
list-style:none n'est pas défini ; le caractère de liste est masqué et n'occupe pas de position (list-style-position:outside) (code UL4)
UL02 a relativement bien fonctionné dans tous les navigateurs participant au test.
Ce dernier morceau de code compare les performances du style liste dans diverses circonstances, notamment les performances de 4, 5 et 6 sous IE6 et 7.
Boîte de code d'exécution
[Ctrl+A Sélectionner tous les conseils : vous pouvez d'abord modifier une partie du code, puis appuyer sur Exécuter]
En comparant les résultats de performances du code ci-dessus, je pense :
Dans Firefox, tant que list-style-type est none, quelle que soit la valeur de list-stype-position à l'extérieur ou à l'intérieur, list-style peut être bien masqué. Dans IE6 et 7, seul list-style:none est défini. , ne suffit pas à résoudre tous les problèmes, je pense donc qu'il est préférable d'utiliser list-style:none en dehors de none lors de la réinitialisation CSS.