How to Make an Anchor Link Fill/Overlay its Parent Element

Sometimes you need an anchor link to fill the area of its parent element. One example of this might be when you have a thumbnail image and a heading in the same div with an anchor link to a page within the heading. It's better for search engines to see a link with just the heading text but it will be easier for a user to click somewhere on the div containing the thumbnail and heading.

 

HTML for the above scenario might look something like this:

 

<div class="item-tile">
  <div>
    <img class="thumbnail" alt="thumbnail" src="/media/image/image_path">
  </div>

  <div class="item-meta">
    <h3><a href="/post-slug" class="anchor-block-overlay">Post Heading</a></h3>
  </div>
</div>

 

Add a class to the anchor link with an appropriate name such as anchor-block-overlay (as you can see in the above example.)

 

<h3><a href="/post-slug" class="anchor-block-overlay">Post Heading</a></h3>

 

Then, apply a position: relative; CSS rule to the parent div.

 

.item-tile {
  position: relative;
}

 

Then apply a position: absolute; and z-index: 1; CSS rule to the ::after HTML pseudo-element.

 

.anchor-block-overlay::after {
  content: '';
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 1;
}

 

And now the anchor will expand to each side of the relative parent and your anchor text will remain in the same place. Don't forget the content:''; must be there for ::after to work.

position