Is it OK to Wrap Block Elements With an <a> Tag?

In HTML4 — no, in HTML5 — yes.

If you need valid code in HTML4, it’s necessary to put links inside block elements and wrap each inline element separately.

A simple case:

<h1><a href="page.html">Title</a></h1>

More complex case:

<div class="figure">
  <a href="page.html">
    <img src="/images/ball.jpg" alt="A ball">
  </a>
  <div class="figcaption">
    <a href="page.html">A ball</a>
  </div>
</div>

In HTML5, it’s easier:

<a href="page.html">
  <figure>
    <img src="/images/ball.jpg" alt="A ball">
    <figcaption>A ball</figcaption>
  <figure>
</a>