Ваш код исчезает, потому что у вас есть блочные элементы (с разрывами строк и высотой и шириной) внутри встроенного элемента (без разрыва строк и без высоты или ширины).
Может помочь просмотр страницы w3 на модели визуального форматирования .
Элементы уровня блока визуально форматируются как блоки - они имеют разрыв строки до и после них.
Встроенные элементы не образуют новые блоки контента. Они находятся в потоке элемента уровня родительского блока.
Когда у вас есть элемент block во встроенном элементе, создаются анонимные блоки (см. Раздел 9.2.1.1 на странице, на которую я ссылался), и каждый браузер обрабатывает эту ситуацию по-своему.