2014-02-04 2 views
2

В CSS спецификации в сек 9.2.1 сказал:Inline- и блочные коробки внутри коробки блока-контейнера

для настольных коробок, которые описаны в следующей главе исключением, и заменены элементы, A Блок-блок также является блочным контейнером. A Блок контейнера блоков содержит только блоки уровня блока или устанавливает встроенный контекст форматирования и, следовательно, содержит только встроенных ящиков. Рассмотрим разметку:

<div id="d"> 
    <div>Anonymous text</div> 
    <span>Some text</span> 
    <span>Another some text</span> 
    <div>Another anonymous text</div> 
</div> 

и стили:

div#d{ 
    width: 300px; 
    height: 300px; 
    background: aqua; 
} 

В моем случае div#d содержит блочные и инлайн-уровня коробки. Но в сек. 9.2.1.1 говорит, что

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

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

Я смущен. Можете ли вы развеять мои сомнения?

+0

В чем ваш вопрос? –

+0

@SalmanA Я обновляю свой вопрос. –

+0

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

ответ

2

Спецификация продолжает говорить:

Линейные коробки до перерыва и после перерыва заключены в анонимном блоке коробке, а коробка блочной становится сестринской этими анонимных коробками

So встроенные элементы обернуты «анонимными блоками» (сгенерированными механизмом CSS в браузере и невидимыми для вашего инспектора DOM), которые являются блочными, и все дочерние элементы контейнера, следовательно, являются блочными, а не смешанными блочных и встроенных элементов.

+0

Но почему этот анонимный блок не начинается с новой строки? [jsFiddle] (http://jsfiddle.net/z8BSs/6/). –

+1

Это будет зависеть от стиля - разве что поплавки развеются? Если первый div будет плавать, он будет сидеть рядом с пролетами. сами пролеты заключены в один анонимный блок (если я правильно прочитал спецификацию), поэтому нет проблем с тем, что они работают вместе. – Faust

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