javascript - 相对图像映射
问题描述
所以大家好。
我试图将图像放在网页上并使其部分可点击。
我找到了这个网站,它非常方便。然后我添加了一个小 jquery 并使这些部分成为一个按钮等。
但问题是我希望这个图像能够以不同尺寸和比例的显示器正确显示。
该站点的坐标是绝对的,您知道这对于使页面具有响应性并不是一件好事。
有没有办法让这些坐标以某种方式相对?(我相信这很可能不是解决方案)
或者是否有任何其他方法可以使图像的一部分可点击并保持图像响应的页面?
非常感谢 :)
解决方案
这是一个简单的例子,而不是我之前链接的笔,使用 scale()、margin 和 mediaqueries 来重置它们的值。
由于变换对变换元素使用的原始大小和空间没有影响,因此如果重新缩放它,它使用的房间不会。边距可以超过它,增加它周围的边距,同时扩大以推开东西,并以负值减少边距,同时缩小以拉动它周围的东西。
img {
border: solid;
display: block;
margin: auto;
}
@media screen and (min-width:250px) {
img {
transform: scale(0.5);
margin: -75px -125px;
}
}
@media screen and (min-width:500px) {
img {
transform: scale(0.8);
margin: -30px -50px;
}
}
@media screen and (min-width:800px) {
img {
transform: scale(1.5);
margin: 75px 125px;
}
}
@media screen and (min-width:1200px) {
img {
transform: scale(2);
margin: 150px -250px;
}
}
map {/* for the demo, wrap it and use a div to avoid funny behaviors */
display: grid;
justify-content: center;
}
<map name="map_example">
<area shape="rect" coords="98,60,375,220" href="#sunny" alt="Sun">
<img src="https://th.bing.com/th/id/R27c41ba1d38afc9894a202c4d1dfdf7f?rik=941mYlhkC070wQ&riu=http%3a%2f%2fwww.thesmartbaby.com%2f_borders%2fgreenrectangle.jpg&ehk=YSaA6ZnTbw02zKN1w%2b9P5cze61mc4XAJ4YpPeX7inO0%3d&risl=&pid=ImgRaw" alt="image map example" width='500' height='300' usemap="#map_example">
</map>
如果您需要在图像上添加可见元素,您可以使用网格(或绝对定位)并且地图变得不必要(区域不应该由浏览器显示)。该方法是重新缩放时相同的重置边距。
* {
margin: 0;
box-sizing: border-box;
}
div {
display: grid;
justify-content: center;
width: 500px;
height: 300px;
}
a,
img {
grid-row: 1;
grid-column: 1;
border: solid;
}
a {
width: 280px;
height: 160px;
margin: 60px 0 0 97px;
background: linear-gradient(to bottom left, rgba(100, 200, 50, 0.5), gray, rgba(255, 125, 0, 05));
/*chrome*/ position:relative;
}
a:hover {
background: none;
}
@media screen and (min-width:250px) {
div {
transform: scale(0.5);
margin: -75px -125px;
}
}
@media screen and (min-width:500px) {
div {
transform: scale(0.8);
margin: -30px -50px;
}
}
@media screen and (min-width:800px) {
div {
transform: scale(1.5);
margin: 75px 125px;
}
}
@media screen and (min-width:1200px) {
div {
transform: scale(2);
margin: 150px 250px;
}
}
<div>
<img src="https://th.bing.com/th/id/R27c41ba1d38afc9894a202c4d1dfdf7f?rik=941mYlhkC070wQ&riu=http%3a%2f%2fwww.thesmartbaby.com%2f_borders%2fgreenrectangle.jpg&ehk=YSaA6ZnTbw02zKN1w%2b9P5cze61mc4XAJ4YpPeX7inO0%3d&risl=&pid=ImgRaw" alt="image map example"
width='500' height='300' usemap >
<a href="#sunny"> green rectangle</a>
</div>
您可以删除 usemap 属性。我为图像离开这里并添加了一个像链接一样变成蓝色的边框。看起来这张图片预计是 Firefox 其他地方的链接:)。
推荐阅读
- java - 需要使用 Java 8 替换 AWS lambda 中的所有逗号
- r - 来自 cv.glmnet 的警告消息
- r - 在R中找到两条线的交点
- javascript - 如何从 JavaScript 脚本在新选项卡中打开 url
- for-loop - 如何将最新的 100 个文件从数千个子文件夹复制到另一个文件夹?
- python - 有没有办法为两个不同的应用程序实际使用相同的端口号?
- azure - Azure Boards 无法添加用户
- python - 对用户在 Power BI 中输入的新数据样本从 Power BI 运行 Python 模型
- c# - C# Server 下载文件并同时传输给用户。下载失败 [Google 云端硬盘]
- javascript - 未捕获的定义错误对此有任何解决方案吗?