CSS盒子定位的形式语义

时间:2012-06-10 00:03:22

标签: css formal-methods formal-semantics

我是一名(理论)计算机科学专业的学生,​​因此研究编程语言的语义是我研究的主题之一(wikipedia)。

我使用CSS玩了很多,并且对盒子定位规则有了合理的理解。 (如果你告诉我创建一个具有特定布局的页面,我通常会想到正确的方法和适用的CSS规则。)

对于CSS盒子定位规则有一些形式语义会很酷,但是在搜索网络一段时间之后,我找不到任何有用的东西。

我大多只是简单地使用CSS规范,这些规范被格式化为带有伪算法的长文本(不是最大的读物 - 我还没有花很多精力阅读这些规范)。

没有人试图将这个“理论”形式化为某种数学模型,比规范提供的更严格吗?我不是在寻找完整或确定的东西,但如果至少应该以正式方式对盒子的定位方式进行建模,那么它肯定会很整洁(而且很有用!)。

有谁知道这样的研究?

1 个答案:

答案 0 :(得分:2)

不是答案! 这是一个非常简化案例可能形式化的示例(请参阅上面的评论)。

比如说,我们正在一个以(1)已知屏幕宽度enter image description here,(2)enter image description hereenter image description here的有序列表为特征的世界中工作。嵌套,没有边距/填充/边框,向左浮动,我们通过数学函数wh知道它们的(2.1)高度和(2.2)宽度。

我们将定义函数enter image description hereenter image description here,它们说明每个框左上角的坐标。

我们将定义/使用关系“enter image description here开始行enter image description here”和“enter image description here有高度enter image description here”。

首先,enter image description here从第0行开始。

然后,如果enter image description here开始行l,那么如果某个m in N

enter image description here

......我们得出结论:

  1. box heights in certain line
  2. box widths in certain line
  3. l的身高为lineheight
  4. bm+1开始行l + 1 iff m le N
  5. 这些规则以正式方式定义给定方框的位置。当然,这只是一种方法,而且可能不是最聪明的(只是快速思考),但它确实正确地形成了浮点数的工作方式(模数错别字,我还没有很好地检查它)。

    在处理编程语言时,可以选择许多这些形式,每种形式都是出于特定目的而发明的(见wikipedia)。

    我只是感兴趣,如果有人试图想出一些CSS盒子定位的形式化。当然,规范还有很长的路要走,但它们并不像数学方式那样严格,而是强迫你做。