gn6*_*n66 10 css css3 css-shapes
我在css中定义了这个图像/多边形,如下所示:
.post-wrapper {
position: relative;
width: 250px;
height: 420px;
float: left;
background-color: #ddc;
-webkit-clip-path: polygon(50% 100%, 100% 50%, 50% 0, 0 50%);
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
Run Code Online (Sandbox Code Playgroud)
你可以看到图像:

它定义了一种矩形,这是一个可点击的图像,可以重定向到另一个页面,人们可以点击矩形的任何部分,但我只想让它们点击多边形.任何人都知道如何在我的代码中执行此操作?
CSS解决方案
您可以使用css转换属性来维护菱形的边界,并仅使图像中的部分可单击.关键是要使用skew属性,以便链接实际上具有菱形形状,因此在该形状之外不可点击(参见下面的演示和屏幕截图).然后,您需要"反转换"内容,使其不会偏斜.
截图:

相关CSS:
a{
width: 216px;
height: 250px;
overflow:hidden;
display:inline-block;
background:red;
-webkit-backface-visibility:hidden; /* to reduce pixelisation on borders in chrome */
-webkit-transform-origin:0 0;
-ms-transform-origin:0 0;
transform-origin:0 0;
-webkit-transform: translate(55%,0) rotate(30deg) skewY(30deg);
-ms-transform: translate(55%,0) rotate(30deg) skewY(30deg);
transform: translate(55%,0) rotate(30deg) skewY(30deg);
}
.post-wrapper {
width: 250px;
height: 432px;
background: url(http://lorempixel.com/output/people-h-c-250-432-8.jpg) center center;
background-size: cover;
-webkit-transform-origin:0 0;
-ms-transform-origin:0 0;
transform-origin:0 0;
-webkit-transform: skewY(-30deg) rotate(-30deg) translate(-50%,0);
-ms-transform: skewY(-30deg) rotate(-30deg) translate(-50%,0);
transform: skewY(-30deg) rotate(-30deg) translate(-50%,0);
}
Run Code Online (Sandbox Code Playgroud)
这可以通过SVG路径和Javascript轻松实现.示例实现如下:
创建一个透明的SVG形状,覆盖您想要点击的区域.然后使用Javascript将单击侦听器附加到路径.
HTML:
<div id="status"></div>
<div id="sample_image">
<svg id="cover" preserveAspectRatio="none">
<path d="M 70,266 L 196,56 320,266 196,478 z"></path>
</svg>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS:
#sample_image {
background-image: url('http://i.stack.imgur.com/m4zEw.png');
width: 448px;
height: 701px;
}
#cover {
width: 100%;
height: 100%;
}
#cover path {
fill: transparent;
}
Run Code Online (Sandbox Code Playgroud)
JS:
$('#cover path').on('click', function() {
//Used only for sample output
$('#status').append("<span>Click received.</span> ");
})
Run Code Online (Sandbox Code Playgroud)