Source

Растянутая ссылка

Сделайте любой элемент HTML или компонент Bootstrap кликабельным, «растянув» вложенную ссылку с помощью CSS.

Добавьте .stretched-linkк ссылке, чтобы сделать содержащий его блок кликабельным через ::afterпсевдоэлемент. В большинстве случаев это означает, что элемент position: relative;, содержащий ссылку на .stretched-linkкласс, кликабельный.

Карточки есть position: relativeпо умолчанию в Bootstrap, так что в этом случае можно смело добавлять .stretched-linkкласс к ссылке в карточке без каких-либо других изменений HTML.

Множественные ссылки и цели касания не рекомендуются с растянутыми ссылками. Тем не менее, некоторые стили positionи z-indexмогут помочь, если это потребуется.

Card image cap
Карточка с растянутой ссылкой

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

Иди куда-нибудь
<div class="card" style="width: 18rem;">
  <img src="..." class="card-img-top" alt="...">
  <div class="card-body">
    <h5 class="card-title">Card with stretched link</h5>
    <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
    <a href="#" class="btn btn-primary stretched-link">Go somewhere</a>
  </div>
</div>

Медиа-объекты по умолчанию не имеют position: relative, поэтому нам нужно добавить .position-relativeздесь, чтобы ссылка не растягивалась за пределы медиа-объекта.

Generic placeholder image
Медиа с растянутой ссылкой

Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, преддверие в vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.

Иди куда-нибудь
<div class="media position-relative">
  <img src="..." class="mr-3" alt="...">
  <div class="media-body">
    <h5 class="mt-0">Media with stretched link</h5>
    <p>Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.</p>
    <a href="#" class="stretched-link">Go somewhere</a>
  </div>
</div>

Столбцы используются position: relativeпо умолчанию, поэтому интерактивным столбцам требуется только .stretched-linkкласс ссылки. Однако для растягивания ссылки на всю строку .rowтребуется .position-staticстолбец и .position-relativeстрока.

Generic placeholder image
Столбцы с растянутой связью

Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, преддверие в vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.

Иди куда-нибудь
<div class="row no-gutters bg-light position-relative">
  <div class="col-md-6 mb-md-0 p-md-4">
    <img src="..." class="w-100" alt="...">
  </div>
  <div class="col-md-6 position-static p-4 pl-md-0">
    <h5 class="mt-0">Columns with stretched link</h5>
    <p>Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.</p>
    <a href="#" class="stretched-link">Go somewhere</a>
  </div>
</div>

Идентификация содержащего блока

Если кажется, что растянутая ссылка не работает, причиной, вероятно , является содержащий блок . Следующие свойства CSS сделают элемент содержащим блок:

  • Значение position, отличное отstatic
  • A transformили perspectiveзначение, отличное отnone
  • Значение или will-change_transformperspective
  • Значение filter, отличное от noneили will-changeзначение filter(работает только в Firefox)
Card image cap
Карточка с растянутыми ссылками

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

Растянутая ссылка здесь работать не будет, т.к. position: relativeдобавляется к ссылке

Эта растянутая ссылка будет распространяться только по pтегу -tag, потому что к ней применяется преобразование.

<div class="card" style="width: 18rem;">
  <img src="..." class="card-img-top" alt="...">
  <div class="card-body">
    <h5 class="card-title">Card with stretched links</h5>
    <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
    <p class="card-text">
      <a href="#" class="stretched-link text-danger" style="position: relative;">Stretched link will not work here, because <code>position: relative</code> is added to the link</a>
    </p>
    <p class="card-text bg-light" style="transform: rotate(0);">
      This <a href="#" class="text-warning stretched-link">stretched link</a> will only be spread over the <code>p</code>-tag, because a transform is applied to it.
    </p>
  </div>
</div>