Растянутая ссылка
Сделайте любой элемент HTML или компонент Bootstrap кликабельным, «растянув» вложенную ссылку с помощью CSS.
Добавьте .stretched-link
к ссылке, чтобы сделать содержащий его блок кликабельным через ::after
псевдоэлемент. В большинстве случаев это означает, что элемент position: relative;
, содержащий ссылку на .stretched-link
класс, кликабельный.
Карточки есть position: relative
по умолчанию в Bootstrap, так что в этом случае можно смело добавлять .stretched-link
класс к ссылке в карточке без каких-либо других изменений HTML.
Множественные ссылки и цели касания не рекомендуются с растянутыми ссылками. Тем не менее, некоторые стили position
и z-index
могут помочь, если это потребуется.
Карточка с растянутой ссылкой
Небольшой пример текста, который будет основываться на заголовке карты и составлять основную часть содержимого карты.
Иди куда-нибудь<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
здесь, чтобы ссылка не растягивалась за пределы медиа-объекта.
Медиа с растянутой ссылкой
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
строка.
Столбцы с растянутой связью
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
_transform
perspective
- Значение
filter
, отличное отnone
илиwill-change
значениеfilter
(работает только в Firefox)
Карточка с растянутыми ссылками
Небольшой пример текста, который будет основываться на заголовке карты и составлять основную часть содержимого карты.
Растянутая ссылка здесь работать не будет, т.к. 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>