2012-06-10 3 views
5

Я (теоретик) студент-информатик, и поэтому исследование семантики языков программирования является одним из предметов моего исследования (wikipedia).Формальная семантика позиционирования CSS-блока

Я много играл с CSS и имел разумное представление о правилах позиционирования коробки. (Если вы скажете мне создать страницу с определенным макетом, я могу часто думать о правильном полевом подходе и применимых правилах CSS.)

Было бы здорово иметь какую-то формальную семантику для правил позиционирования CSS-блока, но после поиска сети некоторое время я не мог найти ничего полезного.

Я в основном просто заканчиваюсь спецификациями CSS, которые отформатированы как длинные тексты с псевдо-алгоритмами (не самое большое чтение). Я еще не прочитал ни одной из этих спецификаций.

Не пробовали ли формализовать эту теорию “ в какой-то математической модели, более строгой, чем спецификации могут предложить? Я не ищу что-то полное или окончательное, но оно было бы аккуратным (и полезным!), Если бы, по крайней мере, способ размещения ящиков мог быть смоделирован формально.

Кто-нибудь знает о таких исследованиях?

+0

есть хорошая статья: http://www.brainjar.com/css/positioning/ – gandil

+0

Я не уверен, что вы подразумеваете под «формальным», но сама спецификация является ** формальным определением для эти вещи. В конце концов, это * спецификация *. Вот [оглавление] (http://www.w3.org/TR/CSS21/cover.html#toc). Вы захотите сосредоточиться на разделах 8, 9 и 10, которые подробно описывают модель форматирования. – BoltClock

+0

@ Болт формальный в математическом смысле; спецификации W3C не являются формальными в этом смысле. –

ответ

2

Не ответ!Это пример возможной формализации очень упрощенного случая (см. Мой комментарий выше).

Скажем, к примеру, мы работаем в мире с участием (1) ширина известный экран enter image description here, (2) упорядоченный список enter image description here коробки enter image description here которые не гнездились, имеют без полей/отступов-х/границ , плавают слева и из которых мы знаем их высоту (2.1) и ширину (2.2) через математические функции w и h.

Мы будем определять функции enter image description here и enter 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 тогда и только тогда m le N

Эти правила определяют положение заданных коробками в формальном манера. Это единственный способ сделать это, конечно, и, вероятно, не самый умный (просто подумал об этом быстро), но он правильно оформляет способ работы float (по модулю опечаток, я не проверил его достаточно хорошо).

При работе с языками программирования можно выбрать многие из этих формализмов, каждый из которых придуман для конкретных целей (см. wikipedia).

Мне просто интересно, если кто-нибудь когда-либо пытался придумать некоторую формализацию для позиционирования блока CSS. Разумеется, спецификации проделали долгий путь, но они не так уж строги, как математический способ.

Смежные вопросы