Source

拉伸链接

通过 CSS“拉伸”嵌套链接,使任何 HTML 元素或 Bootstrap 组件可点击。

添加.stretched-link到链接以使其包含块可通过::after伪元素单击。在大多数情况下,这意味着position: relative;包含.stretched-link类链接的元素是可点击的。

Bootstrap 中默认有卡片position: relative,因此在这种情况下,您可以安全地将.stretched-link类添加到卡片中的链接,而无需任何其他 HTML 更改。

不建议使用拉伸链接使用多个链接和点击目标。但是,如果需要,一些positionz-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 坐在 amet nibh libero,在 gravida nulla。Nulla vel metus scelerisque ante sollicitudin。Cras purus odio,前庭在 vulputate,tempus viverra turpis。Fusce condimentum nunc ac nisi vulputate fringilla。在 faucibus 中的 Donec lacinia congue felis。

去一个地方
<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 坐在 amet nibh libero,在 gravida nulla。Nulla vel metus scelerisque ante sollicitudin。Cras purus odio,前庭在 vulputate,tempus viverra turpis。Fusce condimentum nunc ac nisi vulputate fringilla。在 faucibus 中的 Donec lacinia congue felis。

去一个地方
<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 属性将使元素成为包含块:

  • 以外的positionstatic
  • Atransformperspective其他值none
  • will-change值为transform或_perspective
  • 一个filter不同于none或一个will-changefilter(仅适用于 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>