通过 CSS“拉伸”嵌套链接,使任何 HTML 元素或 Bootstrap 组件可点击。
添加.stretched-link
到链接以使其包含块 可通过::after
伪元素单击。在大多数情况下,这意味着position: relative;
包含.stretched-link
类链接的元素是可点击的。
Bootstrap 中默认有卡片position: relative
,因此在这种情况下,您可以安全地将.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
此处添加,以防止链接拉伸到媒体对象之外。
复制
<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 属性将使元素成为包含块:
以外的position
值static
Atransform
或perspective
其他值none
will-change
值为transform
或_perspective
一个filter
不同于none
或一个will-change
值filter
(仅适用于 Firefox)
复制
<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>