使用带有自定义HTML元素的图像usemap
Using an image usemap with custom HTML element?
在下面的代码示例中,我正在尝试定义我自己的自定义元素<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,而是一个图像map。这就解释了为什么它只适用于图像
但你可以用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/
相关文章:
- 如何使用css动画/javascript使具有背景图像的元素出现
- 将包含SVG元素的HTML转换为图像文件
- 如何通过选择器元素将图像添加到javascript下拉警报消息中
- 如何缩放像图像一样的元素
- 在d3中向DOM元素添加了图像,但现在它赢得了't过渡
- 普通JS:使80%宽度元素100%IF包含一个图像
- 无法为HTML5中具有画布和图像的可拖动元素设置“拖动图像”
- 将href中的图像替换为其他元素中的图像
- 单击即可更改元素中的图像
- 不显示为表单元素的图像输入按钮的动态创建和appendChild
- Javascript获取元素背景图像,但消除了“;url()”;
- 使用漂亮的照片点击另一个元素显示图像
- 将图像附加到没有 id 或值的 td 元素
- 在指令内加载后访问子元素图像
- 在有限的时间内暂时禁用元素/图像的实时点击
- 在镶边中选择渲染的图片元素图像
- 在执行之前,请检查是否已加载子元素(图像)
- 如何更改单击时HTML元素(图像)的顺序
- 如何在Raphael.js中仅针对纸张的第二元素(图像或矩形)
- 我想用html/stylesheet中的文本来更改元素图像