赞:
.farmfield{
background-image: url("http://i.hizliresim.com/aYdRrz.png");
width:400px;
height: 400px;
}
400像素x 400像素,所以50像素x 50像素64平方格。通过这种方式,无需绘制任何东西,我只需要不同的可点击区域,这就是为什么。
做到这一点的最佳响应方法是什么?
答案 0 :(得分:2)
如果只需要视觉输出而无需64 div
,则可以使用渐变来实现:
.farmfield {
background:
repeating-linear-gradient(to right,#000 0px,#000 2px,transparent 2px,transparent 48px,#000 48px,#000 50px),
repeating-linear-gradient(to bottom,#000 0px,#000 2px,transparent 2px,transparent 48px,#000 48px,#000 50px),
url("https://i.stack.imgur.com/TYnNs.png") center/cover;
width: 400px;
height: 400px;
border:2px solid
}
<div class="farmfield">
</div>
如果您需要可点击区域,那么我认为CSS网格是一个很好的解决方案,因为您只需要通过调整父属性来控制网格即可。
.farmfield {
background:
url("https://i.stack.imgur.com/TYnNs.png") center/cover;
width: 400px;
height: 400px;
display:grid;
grid-template-columns:repeat(8,1fr);
grid-template-rows:repeat(8,1fr);
border:2px solid;
}
.farmfield > * {
border:2px solid;
}
.farmfield > *:hover {
background:red;
}
<div class="farmfield">
<div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div>
<div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div>
<div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div>
<div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div>
<div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div>
<div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div>
<div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div>
<div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div>
</div>
对于旧的浏览器,您可以考虑使用float:
.farmfield {
background:
url("https://i.stack.imgur.com/TYnNs.png") center/cover;
width: 400px;
height: 400px;
overflow:hidden;
border:2px solid;
}
.farmfield > * {
border:2px solid;
float:left;
width:calc(400px / 8);
height:calc(400px / 8);
box-sizing:border-box;
}
.farmfield > *:hover {
background:red;
}
<div class="farmfield">
<div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div>
<div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div>
<div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div>
<div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div>
<div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div>
<div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div>
<div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div>
<div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div>
</div>
答案 1 :(得分:1)
在图像中具有可点击区域的正确方法也是使用maps
和area
的集合,它们是为此而设计的。
通过在img标签中指定usemap="#myMapId"
来使用它们,然后创建一个包含所需的每个可单击区域的地图。然后,将单击事件像任何Dom元素一样附加到该区域。
在此处查看区域标签的文档:https://www.w3schools.com/tags/tag_area.asp
在此处查看有效的示例:https://www.w3schools.com/tags/tryit.asp?filename=tryhtml_areamap