9

C'est une question assez académique. Je me demande comment le navigateur est implémenté comme dans quelle structure de données ou algorithme est utilisé pour mapper un sélecteur CSS à un élément DOM particulier. Est-ce accompli à travers une table de hachage? Comment le noeud enfant DOM sait-il que le style appliqué au parent s'applique aussi à lui-même, etc. J'ai regardé le centre de développement Mozilla et je n'ai rien trouvé. Toute documentation ou livre sur le sujet serait très apprécié ... merci!Comment CSS et DOM sont implémentés dans le navigateur?

Répondre

9

Les réponses aux questions de la question «quels sélecteurs correspondent au nœud donné», et non «quels nœuds correspondent à un sélecteur». Cela vous permet simplement d'évaluer chaque partie d'un sélecteur par rapport au nœud actuel (comparer le nom/l'ID/la classe du nœud). Le combinateur et l'héritage des déposants sont effectués via l'analyse des nœuds parents.

Si vous êtes intéressé ce qui se passe à côté, le blog de WebKit y avait une belle série: WebCore rendering basics

1

Vous mentionnez Mozilla. Il est certainement plus facile de répondre à votre question dans le contexte d'une implémentation concrète particulière, plutôt que de la notion abstraite de toutes les implémentations possibles. [L] a structure de données ou un algorithme est-il utilisé pour mapper un sélecteur CSS à un élément DOM particulier ... est-il accompli par l'intermédiaire d'une table de hachage? Je suppose que la réponse directe à votre question, pour FF2, est probablement dans le style directory du code source de Firefox. Une recherche dans ce répertoire pour "hashtable" donne 111 résultats dans 7 fichiers.

Je suis convaincu que les hashtables sont largement associés à certains des processus impliqués dans le rendu des styles CSS. Donc, la réponse courte à votre question est: "Oui, mais il y a plus que des tables de hachage."

2

Voici donc les rares documents:

De votre question, il semble que vous devriez d'abord en apprendre davantage sur la façon dont CSS est censé fonctionner (par exemple, ce qui est spécificité de la règle, style calculé).

+1

Je suis très au courant de la façon dont fonctionne CSS en ce qui concerne gouverner Spécificty, style calculé. Je me suis intéressé aux détails d'implémentation réels du (des) moteur (s) de rendu. Votre réponse ne fait aucune lumière sur cet aspect. – Jlam

+0

@Jlam: Merci de revenir 3.5 ans plus tard pour me le dire! Je suis désolé si je vous ai offensé, mais votre question n'a pas été très claire et vous devez vraiment connaître CSS avant de vous lancer dans la mise en œuvre. FWIW, j'ai appris les bases du fonctionnement du système de style de mozilla en lisant ces pages, puis à travers l'implémentation liée à la réponse d'Ewan. – Nickolay

Questions connexes