29.09.2021, Vladimír Klaus, navštíveno 1203x
Velmi často jsem se potýkal s problémem, kdy se měl nějaký <div> chovat jako odkaz. Samozřejmě se nabízí tento <div> obalit <a>, čímž se to v podstatě řeší, ale není to úplně ideální. Jednak ještě docela nedávno nebylo možné/vhodné takto vnořovat elementy, ale hlavně se pak daný element začne chovat jako <a> a vy pravděpodobně potřebujete, aby to byl stále 100% <div>.
Nakonec jsem našel řešení, které, zdá se, funguje zcela spolehlivě. Základem je, že <a> link vložíme až do <div>, takže hlavní funkce <div> zůstane zachována. Potom do <a> vložíme pomocný <span>.
<div>
<a href="~/CZ/nase-sluzby#Sluzba1">
<span class="DivLink"></span>
<img src="~/CZ/_images/stavy/building-3-customer-woman-small.svg" class="ikonka" />
<p>Vnitrostátní kusová a paletová doprava</p>
</a>
</div>
Tento pomocný <span> vlastně obalí celý <div>, přičemž pokrývá 100% aktivní plochy. Nestane se tak, že najedete myší kousek od obsahu <div> a kurzor se již mění - protože tam máte margin. Zde to reaguje až na opravdový obsah <div>.
.DivLink {
position: absolute;
width: 100%;
height: 100%;
top: 0;
left: 0;
z-index: 1
}
Alternativní řešení, který popisuje druhý odkaz mi nevyhovuje, protože už to není <div>, ale <a>, které má uvnitř <div>, což přináší řadu zbytečných komplikací.
Zdroje: