gpt4 book ai didi

javascript - 使用带有自定义 HTML 元素的图像 usemap?

转载 作者:行者123 更新时间:2023-11-28 16:22:37 24 4
gpt4 key购买 nike

在下面的代码示例中,我尝试定义自己的自定义元素 <custelem> ,我可以很好地设计它;但是,我也想为其分配一个图像映射 - 但我的以下尝试失败了,因为 Firefox 中的热点上从来没有鼠标悬停:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Test</title>
<script type="text/javascript">
</script>
<style type="text/css">
#myone {
border-color: blue; border-width: 3px; border-style: solid;
display: block;
background-color: #AAA;
/* convert -size 300x300 xc:red red.png */
background: #EFEFEF url(red.png) 50% 50% no-repeat padding-box border-box scroll;
background-size: contain;
width: 300px;
height: 300px;
}
</style>
</head>

<body>
<custelem id="myone" usemap="#TEST"></custelem> <!-- renders the css, but hotspot mouseovers do not work -->
<!-- <img src="red.png" id="myone" usemap="#TEST"></img> <!-- works in FF, but has to have src attribute for mouseovers -->
<map id="TEST" name="TEST">
<area href="javascript:alert('A1')" id="A1" alt="A1 text" shape="rect" coords="50,50,100,100"/>
<area href="javascript:alert('A2')" id="A2" alt="A2 text" shape="rect" coords="150,150,200,200"/>
</map>
</body>

</html>

我可以通过 css 或 JS 以某种方式将 usemap 与自定义元素一起使用吗?

最佳答案

这不是 usemap,而是图像映射。这解释了为什么它只适用于图像。
但是你可以用 JS 解决这个问题:

[].forEach.call(document.querySelectorAll("custelem[usemap]"), function(node){
var img = new Image();
img.className = "image-map";
img.useMap = node.getAttribute("usemap");
img.title = node.getAttribute("title") || "";
img.src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg=="; // 1x1 transparent png
node.removeAttribute("usemap");
node.appendChild(img);
});

还有一点CSS:

custelem {
position: relative;
}
custelem img.image-map{
display: block;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}

https://jsfiddle.net/u8n6fygz/

关于javascript - 使用带有自定义 HTML 元素的图像 usemap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36558687/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com