Выявление анонимных блоков - PullRequest
0 голосов
/ 25 октября 2018

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

Из спецификации Anonymous Block Boxes , в их примере есть разметка, подобная этой:

<DIV>
  Some text
  <P>More text
</DIV>

И вот их объяснение:

(при условииDIV и P оба имеют «display: block»), DIV, по-видимому, имеет как встроенное содержимое, так и содержимое блока.Чтобы упростить определение форматирования, мы предполагаем, что вокруг «Некоторого текста» есть анонимный блок блока.

Другими словами: если блок контейнера блока (например, сгенерированный для DIV выше) имеетблок уровня блока внутри него (такой как P выше), затем мы заставляем его иметь только блоки уровня блока внутри него.

Сначала, исходя из спецификации, ядумал, что анонимный блок будет применяться только к тексту. Однако в более сложном примере кажется не правильным , как этот:

<div>
    some <em>text</em>
    <p>More text</p>
    and more <em>text</em>
</div>

some нельзя рассматривать как анонимный блок, но всю строку some <em>text</em>.Потому что, если только some считается анонимным блок-блоком, тогда <em>text</em> будет другим;следовательно, эти 2 анонимных блока будут располагаться не в одной строке.То же самое относится и к другому анонимному блоку блоков после блока p, and more <em>text</em>.

Итак, всего имеется 3 блока блоков (2 из них - анонимные блоки блоков):

  1. Поле анонимного блока: some <em>text</em>.
  2. Поле блока: <p>More text<p>.
  3. Поле анонимного блока: and more <em>text</em>.

Что будет выглядеть следующим образом: выявление анонимных блоков уровня блока

Наконец, могу ли я прямо заключить это таким образом?В случае генерации анонимного блока , если контейнер блока имеет блок уровня блока внутри, то этот алгоритм - BoxГенерация будет обрабатывать любые ящики внутри этого блочного контейнера как ящики уровня блока .Таким образом, любые блоки, которые не являются блоками уровня блока , будут внутренне / концептуально рассматриваться как анонимные блоки блоков , которые в основном являются блоками уровня блока В любом случае.

Правильно ли я понимаю эти вещи?Или я совершенно не прав в этом вопросе?

1 Ответ

0 голосов
/ 27 октября 2018

Box Generation будет обрабатывать любые ящики внутри этого блочного контейнера как ящики уровня блока .Таким образом, любые блоки, которые не являются блоками уровня блока , будут внутренне / концептуально рассматриваться как анонимные блоки блоков , которые в основном являются блоками уровня блока в любом случае.

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

Иллюстрация в основном правильная, за исключением того, что основной блок уровня блокане всегда устанавливает контекст форматирования блока.Вы также можете смешивать термины «контекст форматирования блока», «блок уровня блока», «блок контейнера блока» и «блок блока»;см. мои ответы на эти вопросы для дополнительного разъяснения:

...