Есть меня в котором браузер не корректно выполняет код так же есть на сайте аналогичное меню которое работает вполне нормально, спрашивайте отвечу на все вопросы
Если голосуете против пожалуйста аргументируйте свое мнение
Браузер, видит Ваш код ровно в том виде, в котором Вы его написали и видит его адекватно. Сейчас я постараюсь объяснить, что же все-таки случилось.
Для начала необходимо определиться с тем, что Вы видели, потому что, то что Вы показали на первом изображении не является исходным кодом страницы. Для того чтобы увидеть исходный код страницы Вам необходимо:
И итображаемый в данном случае код, будет соответствовать коду на втором изображении. На первом же изображении Вами показана реальная DOM-структура документа - реальное дерево элементов с которым работает браузер, которое он пытается построить на основе Вашего исходного кода.
В соответствии с этим Ваш вопрос сводится к следующему: Почему реальная DOM-структура страницы отличается от исходного кода?
Ответ прост: Реальная DOM-структура не может соответствовать исходному коду, потому что исходный код содержит ошибки.(в рамках формата HTML4.1 - см. UPD1)
Браузер как приложение не имеет возможности переносить ошибки из исходного кода в реальную DOM-структуру, посколько тогда его элементы бы вели себя непредсказуемым образом и могли бы приводить к аварийному завершению работы приложения. В качестве основы браузер принимает стандарты W3C и чем больше Ваш код будет им соответствовать, тем больше реальная DOM-структура будет соответствовать Вашему коду.
Ошибки браузер выявляет еще на стадии синтаксического анализа исходного кода. После чего, на стадии построения дерева браузер пытается разрешить ошибки.
В чем была Ваша ошибка?
В соответствии с правилами вложения тега <a>
Любая ссылка является встроенным элементом, поэтому для нее действуют те же правила, что и для встроенных элементов.
А именно, нельзя размещать внутри тега <a>
блочные элементы...
Поэтому браузер увидев <div>
ы внутри тега <a>
, просто вытащил их наружу.
UPD1
Написанное Выше описывает поведение в конкретно взятом случае и как верно заметил пользователь @Air, в "новом" стандарте HTML5 уже другие правила, поэтому следует чуть подробнее разобрать данный случай и уточнить стандарты.
Для начала:
Версия стандарта HTML5 допускает вложение блочных элементов, если те в свою очередь не предполагают интерактивного поведения.
Отсюда возникает вопрос: Каким образом браузер определяет с каким именно стандартом сравнивать Ваш документ и как он определяет версию документа?
Для этого необходимо познакомиться с понятием DOCTYPE:
Что такое DOCTYPE?
DOCTYPE-объявление располагается в самом начале кода HTML-документа и необходимо для переключения браузера в режим соответствия стандартам. Только в этом режиме можно рассчитывать на единообразное отображение HTML-страницы в разных браузерах. (Браузер — это программа для просмотра сайтов.)
Без DOCTYPE (либо при неправильном DOCTYPE) браузеры отображают страницу в режиме совместимости со старыми браузерами — вплоть до имитации их ошибок (багов). Кроме того, современные возможности (например, поддержка CSS-свойства padding для элемента IMG) доступны только в режиме соответствия стандартам. Следует всегда снабжать HTML-документы DOCTYPE-объявлением.
Соответственно, если Вы осознанно хотите переключиться в режим соответствия HTML5, Вам обязательно необходимо указать в начале документа DOCTYPE.
Для HTML5 он будет выглядеть следующим образом:
<!DOCTYPE html>
Для других версий стандарта DOCTYPE можно посмотреть перейдя на следующую страницу:
https://www.w3schools.com/tags/tag_doctype.asp
Виртуальный выделенный сервер (VDS) становится отличным выбором
Не могу разобраться в условиях IF ELSE, проверяем bank_book >= price_tariff, если TRUE до выполняем условие, если нет, то изменяем pay_status = '0'Понимаю что можно...
Я парсю сайтМне нужно распарсить 2 категории Fresh и Bekery и занести данные в БД
При добавлении новой строки в таблицу выскакивает ошибка ERROR 1442 (HY000): Can't update table 'parts' in stored function/trigger because it is already used by statement which invoked this stored...