Увеличить зону кликабельности ссылки — HTML/CSS

Допустим у нас есть страница с превью новостей:

Увеличить зону кликабельности ссылки — HTML/CSS Frontend, Web-программирование, Ссылка, Верстка, Теги, HTML, CSS, Фронтендеры

Необходимо сделать ссылкой не только подзаголовок, но и картинку.

Способа три: плохой, злой, хороший.


Плохой

Просто обернуть и заголовок, и картинку в ссылку:

<div>
 <a href="#"><img src="image.jpg"></a>
 <h2><a href="#">text</a></h2>
</div>

Злой

Обернуть все в одну ссылку:

<a href="#">
 <img src="image.jpg">
 <h2>text</h2>
</a>

Хороший

Разместить ссылку в заголовке. Расширить область ссылки на всю карточку с помощь псевдоэлемента :before:

<div>
 <img src="image.jpg">
 <h2><a href="#">text</a></h2>
</div>

<style type="text/css">
div {
 position: relative;
}

a:before {
 content: '';
 position: absolute;
 top: 0;
 left: 0;
 width: 100%;
 height: 100%;
}
</style>

Конечно я утрирую и вы можете использовать любой из этих трех вариантов, но мой совет использовать последний :)

Вы смотрите срез комментариев. Показать все
2
Автор поста оценил этот комментарий

Совершенно бесполезный пост. Мало сказать "так - плохо, а так - хорошо" - поясни, отчего! Иначе ну вот вообще непонятно.

раскрыть ветку (8)
1
DELETED
Автор поста оценил этот комментарий

Виноват, мне следовало расписать этот момент поподробней:

Первый вариант плох тем, что мы используем ссылку два раза, вместо одного.
Второй - вкладыванием блочных элементов в ссылку. Работать будет, но это не всегда семантично. Есть ньюансы, но проще избегать таких ситуаций.
Третий лишен проблем двух предыдущих.

раскрыть ветку (7)
1
Автор поста оценил этот комментарий

Второй - вкладыванием блочных элементов в ссылку. Работать будет, но это не всегда семантично.

Больной, а Вы не делайте так (с)


Вас под дулом пистолета заставляют оформлять заголовок новости тегом заголовка? SPAN, например? Не, не слышали?


И раз уж про семантику речь зашла, то что отбивает заголовок, за которым не следует ни одной буквы текста?


Не говоря уже о том, что оформлять "набор" из картинки и заголовка DIVами, которые визуально будут не блочными элементами, а скорее всего и фактически (при таком оформлении придется им придавать либо display: inline, либо float, либо иные извращения костыли), а потом кричать, что Hn - это блочный элемент и не подлежит оборачиванию в ссылку... ну, такое...

Автор поста оценил этот комментарий

Насколько я помню, в ссылку нельзя заворачивать интерактивные элементы, простые блочные - почему бы и нет. Неопределенности не будет. Это я ко второму пункту.

раскрыть ветку (5)
1
DELETED
Автор поста оценил этот комментарий

У Вадима Макеева был доклад, где он затрагивал вопрос вкладывания:

https://youtu.be/A4tglcel7Ac?t=787

Там это хорошо объяснено.

раскрыть ветку (1)
Автор поста оценил этот комментарий
Окей, спасибо.
1
Автор поста оценил этот комментарий
Типа нельзя по w3c, но по факту это ни на что кроме появления ворнингов не влияет. Вкладываешь строчный, в css пишешь display block и вуаля, ошибки нет :) Это просто условности. Вы бы видели какие сайты бывают в топе по продажам. Например на 90% свёрстанные картинками (включая текст), какая там семантика, там даже SEO нет. А Макеев один из адептов "делать всё идеально", но по факту бизнесу нужен только результат. Так что всё это детская наивность и нельзя, как вы и сказали, ссылку в ссылку ложить, ибо браузер этого не позволит, но даже для такого есть костыль :D
раскрыть ветку (2)
DELETED
Автор поста оценил этот комментарий

Тем не менее - нужно ответственно подходить к работе

раскрыть ветку (1)
Автор поста оценил этот комментарий
Я с этим не спорю, как раз являюсь сторонником "лучше дольше, но лучше". 8 лет опыта в IT сфере как бы часто меня с этим желанием шлёт нафиг :) Бизнес хочет денег, вот и приходится балансировать. Делать хотя бы чуть-чуть "не говно" и уже приятно.
Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку