2010-12-04 3 views
23

CSS permet à un élément HTML d'avoir plusieurs classes:CSS: Y a-t-il une limite au nombre de classes qu'un élément HTML peut avoir?

<div class="cat persian happy big"> Nibbles </div> 

Mais est-il une limite sur le nombre classes sont autorisées par article?

+7

En général, avec toute question limite, * si vous devez demander, vous faites quelque chose de mal *. À moins que ce ne soit juste une curiosité oiseuse :-) –

+1

Je stocke l'état d'un élément dans l'attribut 'class', donc je peux traiter l'affichage uniquement via CSS - il y a jusqu'à 32 drapeaux d'état possibles. –

+3

À moins que vos drapeaux soient exceptionnellement longs, ça devrait aller. Rappelez-vous que vos cours ne peuvent pas être numériques. ils doivent commencer par une lettre. '32' est invalide alors que' f32' est valide. – meagar

Répondre

17

Vous n'êtes limité que par la longueur maximale de la valeur d'un attribut (X) HTML, ce qui est bien couvert par this answer. Les navigateurs sont souvent très tolérants aux violations de normes, de sorte que les navigateurs individuels peuvent autoriser des attributs de classe beaucoup plus longs. De plus, vous êtes probablement capable d'ajouter un nombre pratiquement infini de classes à un élément DOM via JavaScript, limité par la quantité de mémoire disponible pour le navigateur.

Pour toutes fins utiles, il n'y a aucune limite. Je suppose que vous demandez par curiosité; Il va sans dire que si vous craignez sérieusement d'atteindre cette limite, vous avez fait quelque chose de très mal.

-1

Non,

Il n'y aura pas de limite.

+0

Pouvez-vous inclure une source pour votre assertion? – meagar

+0

@meager, je ne rencontre jamais une telle limite ... // – kobe

+3

@gov Juste parce que vous n'avez jamais atteint la limite ne signifie pas que ce n'est pas là. Avec quelle rigueur avez-vous testé cette assertion? Avez-vous déjà * essayé * d'atteindre la limite?Je ne peux pas voter pour une telle réponse parce que c'est pire qu'inutile pour une référence comme SO. – meagar

5

Non, je ne pense pas, j'ai jamais rencontré une telle limite/

EDIT: Désolé pour la remarque anodine.
Selon les spécifications, il n'y a pas de limite mais quelqu'un a essayé d'atteindre cette limite et il semble que la limite pour Opera, Safari supporte bien plus de 4000 classes, et Firefox au moins 2000 classes!
Source: http://kilianvalkhof.com/2008/css-xhtml/maximum-number-of-supported-classes-per-element/

+4

"Je ne pense pas" est un commentaire plus approprié qu'une réponse. Votre réponse est effectivement "je ne sais pas". – meagar

+4

+1 excellente addition – meagar

+2

A moi curieux. Je ne suis pas entièrement d'accord avec ses méthodes de test; Il ajoute des classes en nombres exponentiels pour une raison étrange, ce qui détruit l'exactitude de son test - plus il court, plus les résultats sont imprécis. J'ai écrit un test différent qui montre que FF accepte plus de 10 000 classes. – meagar

0

Il n'y a pas de limite technique (sauf la quantité de mémoire du navigateur consommeraient), mais on devrait fortement envisager d'avoir des charges de cours sur tout élément que le navigateur devra analyser toutes les classes, appliquer ces styles et rendre la page. De plus, si vous avez besoin de rechercher dans le DOM des éléments d'une classe particulière et que des éléments contiennent des charges de classes, vous risquez de voir un problème de performance si l'interpréteur JavaScript doit analyser des charges de classes.

Questions connexes