А что есть "семантика", может это чисто субъективное мнение отдельного индивида? По этому поводу можно почитать эту статью, которая является переводом этой статьи.
От себя хочу сказать, что это вполне себе нормальный код и если w3c валидатор не ругается на ваш HTML, то значит у вас всё в порядке.
- Вполне нормально ставить
display: block;
для тэга a
, хоть это и инлайновый элемент.
- Вполне нормально ставить
display: table, display: table-cell
для тэгов div
.
Семантика ничего и не говорит по этому поводу, а вот если вы пытаетесь сделать дивами таблицу, не важно как, то это уже может быть нерационально. И ключевое слово в этой фразе "может быть", вы сами хозяин своего кода и оцениваете рациональность применения тех или иных тэгов. Я вот использую бутстрап и в некоторых местах рациональнее сделать таблицу без тэга table
, с помощью сетки bootstrap. А в некоторых местах я делаю колонки со стилями display: table, display: table-cell
, потому что это отличный способ для вертикального центрирования блоков.
Вообщем, выбор есть всегда, а понимание рациональности и правильности этого выбора придёт со временем.