在我们这边,我们有一个“卡片”集合,其中的href使用剪切路径显示为按钮,以使其变为非矩形。这可以正常工作,但是一旦我们将父容器更改为两列,我们将无法再单击链接。
禁用剪切路径或两栏模式可以使链接可单击,但是我们希望结合使用效果器。
body {
font-family: Arial, Helvetica, sans-serif;
}
ul {
list-style: none;
column-count: 2;
}
ul>li {
display: block;
margin-bottom: 10px;
}
.card {
border: solid 1px gray;
width: 300px;
height: 220px
}
.abtn {
font-size: 16px;
border-radius: .7rem;
color: rgb(255, 255, 255) !important;
line-height: 6.9rem;
background-color: rgb(19, 92, 189);
width: 16rem;
height: 8rem;
-webkit-clip-path: polygon(2% 42%, 100% -5%, 100% 100%, 0 100%, 0 46%);
clip-path: polygon(2% 42%, 100% -5%, 100% 100%, 0 100%, 0 46%);
float: right;
padding-top: 1.5rem;
font-weight: bold;
-webkit-transition: all .3s;
transition: all .3s;
text-align: center;
}
<ul>
<li><div class="card"><a class="abtn" href="#">Click Me</a></div></li>
<li><div class="card"><a class="abtn" href="#">Click Me</a></div></li>
<li><div class="card"><a class="abtn" href="#">Click Me</a></div></li>
<li><div class="card"><a class="abtn" href="#">Click Me</a></div></li>
<li><div class="card"><a class="abtn" href="#">Click Me</a></div></li>
<li><div class="card"><a class="abtn" href="#">Click Me</a></div></li>
</ul>
我已经在macOS上的Chrome和Safari中测试了此功能,并在其中看到了这种行为。它可以在Firefox中按预期工作。
上下文中的代码:https://jsfiddle.net/045q82ve/2/
奇怪的是,它在JSFiddle中部分起作用,而我的示例在独立的HTML页面中不起作用。我说的是部分原因,因为只有第一个按钮的行为似乎与预期的一样。该示例可在Firefox中正常运行。
最佳答案
将背景和clip-path
移动到绝对定位的伪元素(::before
),然后使用z-index: -1
将其放置在链接下方:
body {
font-family: Arial, Helvetica, sans-serif;
}
ul {
list-style: none;
column-count: 2;
border: solid 1px blue;
}
ul>li {
display: block;
margin-bottom: 10px;
}
.card {
border: solid 1px gray;
width: 300px;
height: 220px;
text-align: right;
}
.abtn {
display: inline-block;
position: relative;
font-size: 16px;
border-radius: .7rem;
color: rgb(255, 255, 255) !important;
line-height: 6.9rem;
width: 16rem;
height: 8rem;
padding-top: 1.5rem;
font-weight: bold;
transition: all .3s;
text-align: center;
}
.abtn::before {
display: block;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: -1;
-webkit-clip-path: polygon(2% 42%, 100% -5%, 100% 100%, 0 100%, 0 46%);
clip-path: polygon(2% 42%, 100% -5%, 100% 100%, 0 100%, 0 46%);
background: rgb(19, 92, 189);
content: '';
}
<ul>
<li><div class="card"><a class="abtn" href="#">Click Me</a></div></li>
<li><div class="card"><a class="abtn" href="#">Click Me</a></div></li>
<li><div class="card"><a class="abtn" href="#">Click Me</a></div></li>
<li><div class="card"><a class="abtn" href="#">Click Me</a></div></li>
<li><div class="card"><a class="abtn" href="#">Click Me</a></div></li>
<li><div class="card"><a class="abtn" href="#">Click Me</a></div></li>
</ul>