2012-06-10 1 views
5

Je suis un étudiant (théorique) en informatique, et en tant que tel l'étude de la sémantique des langages de programmation est l'un des sujets de mon étude (wikipedia).Sémantique formelle du positionnement de la boîte CSS

J'ai beaucoup joué avec CSS et j'ai une compréhension raisonnable des règles de positionnement de la boîte. (Si vous me dites de créer une page avec une certaine mise en page, je peux souvent penser à la bonne approche et aux règles CSS applicables.)

Il serait cool d'avoir une sorte de sémantique formelle pour les règles de positionnement de la boîte CSS, mais après avoir cherché sur le net pendant un moment, je ne pouvais pas vraiment trouver quelque chose d'utile. Je finis simplement simplement aux spécifications CSS, qui sont formatées en tant que longs textes avec des pseudo-algorithmes (pas le plus grand sujet de lecture --- je n'ai pas lu toutes ces spécifications avec beaucoup d'effort pour le moment).

Est-ce que personne n'a essayé de formaliser cette théorie “ ” dans un modèle mathématique, plus rigoureux que ce que les spécifications ont à offrir? Je ne cherche pas quelque chose de complet ou définitif, mais il serait sûr (et utile!) Si, au moins, la façon dont les boîtes devraient être positionnées pourrait être modélisée de façon formelle.

Quelqu'un connaît-il une telle recherche?

+0

il y a un bon article: http://www.brainjar.com/css/positioning/ – gandil

+0

Je ne suis pas sûr de ce que vous entendez par "formel", mais la spécification elle-même est ** la ** définition formelle pour ces choses. C'est la * spécification *, après tout. Voici la [table des matières] (http://www.w3.org/TR/CSS21/cover.html#toc). Vous voudrez vous concentrer sur les sections 8, 9 et 10 qui couvrent le modèle de formatage en profondeur. – BoltClock

+0

@Bolt formelle dans le sens mathématique; les spécifications du W3C ne sont pas formelles dans ce sens. –

Répondre

2

Ce n'est pas une réponse!Ceci est un exemple d'une formalisation possible d'un cas très simplifié (voir mon commentaire ci-dessus).

Disons, par exemple, nous travaillons dans un monde avec (1) une largeur de l'écran connu enter image description here, (2) une liste ordonnée de boîtes enter image description hereenter image description here qui ne sont pas imbriquées, ont des frontières de pas de marges/remplissage/, sont flottantes à gauche et dont on connaît la hauteur (2.1) et la largeur (2.2) via les fonctions mathématiques w et h.

Nous allons définir les fonctions enter image description here et enter image description here, qui indiquent les coordonnées du coin supérieur gauche de chaque boîte.

Nous définirons/en utilisant les relations "enter image description here Starts enter image description here" et "enter image description here a une hauteur enter image description here".

Tout d'abord, la ligne 0. enter image description here commence

Ensuite, si enter image description here Starts l, et en outre, si pour certains m in N

enter image description here

...nous concluons que:

  1. box heights in certain line
  2. box widths in certain line
  3. l a une hauteur lineheight
  4. bm+1 Starts l +1 ssi m le N

Ces règles définissent les positions des boîtes données dans un formel manière. Ce n'est qu'une façon de le faire, bien sûr, et probablement pas la plus intelligente (juste pensée rapidement), mais elle formalise correctement le fonctionnement des flotteurs (modulo typos, je ne l'ai pas vérifié assez bien). En ce qui concerne les langages de programmation, on peut choisir plusieurs de ces formalismes, chacun inventé à des fins particulières (voir wikipedia).

Je suis simplement intéressé si quelqu'un a déjà essayé de trouver une formalisation pour le positionnement des boîtes CSS. Bien sûr, les spécifications vont un long chemin, mais ils ne sont tout simplement pas aussi rigoureux que la façon mathématique vous oblige à être.