Enlace estirado

Haga clic en cualquier elemento HTML o componente Bootstrap "estirando" un enlace anidado mediante CSS.

Agregar .stretched-link a un enlace para hacer que se pueda hacer clic en su bloque contenedor a través de un ::after pseudo elemento. En la mayoría de los casos, esto significa que se puede hacer clic en un elemento con position: relative; que contiene un enlace con la .stretched-link clase.

Las tarjetas tienen position: relative Bootstrap de forma predeterminada, por lo que en este caso puede agregar de manera segura la .stretched-link clase a un enlace en la tarjeta sin ningún otro cambio HTML.

No se recomiendan varios enlaces y botones táctiles con enlaces extendidos. Sin embargo, algunos estilos position y z-index estilos pueden ayudar si esto fuera necesario.

Card image cap
Tarjeta con enlace estirado

Algún texto de ejemplo rápido para construir sobre el título de la tarjeta y constituir la mayor parte del contenido de la tarjeta.


<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>

Los objetos multimedia no lo tienen position: relative de forma predeterminada, por lo que debemos agregar .position-relative aquí para evitar que el enlace se extienda fuera del objeto multimedia.

Generic placeholder image
Medios con enlace estirado

Cras sit amet nibh libero, en 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.


<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>

Las columnas son position: relative predeterminadas, por lo que las columnas en las que se puede hacer clic solo requieren la .stretched-link clase en un enlace. Sin embargo, estirar un enlace sobre un completo .row requiere .position-static en la columna y .position-relative en la fila.

Generic placeholder image
Columnas con enlace estirado

Cras sit amet nibh libero, en 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.


<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>

Identificación del bloque contenedor

Si el enlace extendido no parece funcionar, el bloque contenedor probablemente sea la causa. Las siguientes propiedades de CSS harán que un elemento sea el bloque contenedor:

  • Un position valor diferente a static
  • A transform o perspective valor distinto de none
  • Un will-change valor de transform o perspective
  • Un filter valor distinto none o un will-change valor de filter (solo funciona en Firefox)
Card image cap
Tarjeta con eslabones estirados

Algún texto de ejemplo rápido para construir sobre el título de la tarjeta y constituir la mayor parte del contenido de la tarjeta.

El enlace extendido no funcionará aquí, porque position: relative se ha añadido al enlace.

Este enlace extendido solo se extenderá sobre la p etiqueta -tag, porque se le aplica una transformación.


<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>