-
Вопрос будет ламерский :-\
Вот решил немного освоить html, в качестве пособия выбрал intuit.ru. И один тест меня очень смутил:
Как будет отображен следующий код:
<P>aaaaaaaaa<DIV>bbbbbbbbb</DIV><DIV>ccccc<P>ccccc</DIV>?
1.
aaaaaaaaa
bbbbbbbbb
ccccc
ccccc
2.
aaaaaaaaa
bbbbbbbbb
cccccccccc
3.
aaaa aaa aabbbbbbbbb
ccccc
ccccc
На вскидку у меня получалось, что выглядеть должно примерно вот так:
aaaaaaaaa
bbbbbbbbb
ccccc
ccccc
Решил проверить на практике: в трех браузерах (Mozilla 3, Epiphyny-Webkit и Opera 9,5) все так и выглядит, но методом copy-paste получается только один отступ - второй.
В итоге я что-то туплю: первый пробел появляется как отступ между блоками (ну, вроде бы <p> не может включать <div>, так что должен закрыться перед ним)?
Почему тогда во втором случае появляется "лишний" символ перевода строки, ведь <div> может включать параграф (просто единственное приходящее мне в голову объяснение - параграф сразу же и закрывается пустым)? -
Как будет отображен следующий код:
<P>aaaaaaaaa<DIV>bbbbbbbbb</DIV><DIV>ccccc<P>ccccc</DIV>?По идее, правильный ответ: "В зависимости от CSS и Content-Type".
Решил проверить на практике: в трех браузерах (Mozilla 3, Epiphyny-Webkit и Opera 9,5) все так и выглядит, но методом copy-paste получается только один отступ - второй.
Не понял... Если "все так и выглядит", то что значит "методом copy-paste получается только один отступ - второй"?
Почему тогда во втором случае появляется "лишний" символ перевода строки, ведь <div> может включать парагра
Это не "перевод строки" :-). В большинстве браузеров элементу
<p>в дефолтных стилях назначаются верхний и нижний margin'ы. Соответственно в куске:<DIV>ccccc<P>ccccc</DIV>Вторая группа "ccccc" находится внутри
<p>и сверху и снизу от нее должны быть отступы. -
Имелось в виду что будет без CSS и с Content-Type text/html
Т.е. отображаются два отступа, но вот если попробовать это выделить и загнать в любой текстовый редактор, то выясняется, что верхний действительно margin'ы, а вот нижний (как раз где <DIV>ccccc<P>ccccc</DIV>) никуда не исчезает.Не понял... Если "все так и выглядит", то что значит "методом copy-paste получается только один отступ - второй"?
Т.е. выглядит так, как будто там стоит пустой <p> и в итоге получается пропуск строки. Хотя по логике все должно быть так, как вы описали %-| -
Вообще это не валидно.
Тут мне недавно выгребать баги валидации на чужом сайте пришлось.
Блочный элемент в строчном - это неправильно.
Наверное, надо избегать таких конструкций. -
Отщеплен новый топик "Валидный HTML с незакрытыми тегами".
-
Т.е. отображаются два отступа, но вот если попробовать это выделить и загнать в любой текстовый редактор, то выясняется, что верхний действительно margin'ы, а вот нижний (как раз где <DIV>ccccc<P>ccccc</DIV>) никуда не исчезает.
Ах вот, в чем дело... Тогда это ровно никакого отношению к margin'ам не имеет. У браузера есть какое-то понятие о том, как перегнать выделенный HTML в простой текст, но оно в лучшем случае приблизительное и нигде не определено. Так что проверять этим я бы точно ничего не стал :-)
-
Понятно, что не имеет, но мне просто захотелось понять, что же это на самом деле парсится. В принципе, надо быть проще - любой юзерский CSS, выделяющий элементы уровня блока покажет, что все так. как должно быть (последние ccccc в параграфе). Просто напугалм меня эти интуиты своими ответами :-)
Короче, надо медитировать над оригинальной спецификацией.
