2012-06-10 5 views
5

Sono uno studente di scienze (teorico), e come tale l'indagine sulla semantica dei linguaggi di programmazione è uno degli argomenti del mio studio (wikipedia).Semantica formale del posizionamento della scatola CSS

Ho giocato molto con i CSS e ho una ragionevole comprensione delle regole di posizionamento della scatola. (Se mi dici di creare una pagina con un determinato layout, posso spesso pensare all'approccio corretto e alle regole CSS applicabili.)

Sarebbe bello avere una sorta di semantica formale per le regole di posizionamento della scatola CSS, ma dopo aver cercato la rete per un po ', non sono riuscito a trovare nulla di utile.

Per la maggior parte mi baso semplicemente sulle specifiche CSS, che sono formattate come testi lunghi con pseudo-algoritmi (non il più grande argomento di lettura --- non ho ancora letto nessuna di queste specifiche con molto sforzo).

Nessuno ha provato a formalizzare questa teoria “ ” in un modello matematico, più rigoroso di quello che le specifiche hanno da offrire? Non sto cercando qualcosa di completo o definitivo, ma sicuramente sarebbe pulito (e utile!) Se, almeno, il modo in cui le scatole dovrebbero essere posizionate potrebbe essere modellato in modo formale.

Qualcuno sa di tale ricerca?

+0

c'è un buon articolo: http://www.brainjar.com/css/positioning/ – gandil

+0

Non sono sicuro di cosa intendi per "formale", ma la specifica stessa è ** la ** definizione formale per queste cose. È la * specifica *, dopo tutto. Ecco il [indice] (http://www.w3.org/TR/CSS21/cover.html#toc). Ti consigliamo di concentrarti sulle sezioni 8, 9 e 10 che trattano il modello di formattazione in modo approfondito. – BoltClock

+0

@Bolt formale in senso matematico; le specifiche del W3C non sono formali in questo senso. –

risposta

2

Non una risposta!Questo è un esempio di una possibile formalizzazione di un caso molto semplificato (vedere il mio commento sopra).

Supponiamo, ad esempio, stiamo lavorando in un mondo con (1) larghezza uno schermo noto enter image description here, (2) un elenco ordinato di enter image description here scatole enter image description here che non sono annidati, non hanno margini/di padding/confini , sono flottanti a sinistra e di cui conosciamo la loro altezza (2.1) e (2.2) larghezza tramite le funzioni matematiche w e h.

Definiremo le funzioni enter image description here e enter image description here, che indicano le coordinate dell'angolo superiore sinistro di ciascuna casella.

Saremo definendo/utilizzando le relazioni "enter image description here inizia schiereranno enter image description here" e "enter image description here dispone altezza enter image description here".

Prima di tutto, enter image description here inizia Riga 0.

Poi, se si avvia enter image description here linea l, e, inoltre, se per certi m in N

enter image description here

...concludiamo che:

  1. box heights in certain line
  2. box widths in certain line
  3. l ha altezza lineheight
  4. bm+1 inizia allineano l +1 sse m le N

Queste regole definiscono le posizioni indicate scatole in un formale maniera. È solo un modo per farlo, ovviamente, e probabilmente non è il più intelligente (l'ho pensato rapidamente), ma formalizza correttamente il modo in cui i float funzionano (errori di formattazione del modulo, non l'ho controllato abbastanza bene).

Quando si tratta di linguaggi di programmazione, è possibile scegliere molti di questi formalismi, ciascuno inventato per scopi particolari (vedere wikipedia).

Sono solo interessato se qualcuno ha mai provato a venire con alcune formalizzazioni per il posizionamento della scatola CSS. Ovviamente le specifiche sono molto importanti, ma non sono altrettanto rigorose quanto il modo matematico che ti costringe ad essere.