0

我对 Safari 和使用 Leaflet 创建的地图有疑问:这是一个小演示 http://jsfiddle.net/DBJb7/

CSS 属性“悬停”在 Safari 中除外。我尝试解决它,z-index但它不起作用。

有人有想法吗?

编辑:http
://bost.ocks.org/mike/leaflet/这个项目似乎有同样的问题。

4

1 回答 1

0

您可以尝试在您的 D3.js JavaScript 中实现以下代码,而不是使用 CSS:

var feature = g.selectAll("path")
        .data(collection.features)
    .enter().append("path").attr('style','z-index:9999')
    .on("mouseover", function() {
        d3.select(this).css("fill", "green").css("stroke", "red");
    })
    .on("mouseout", function() {
        d3.select(this).css("fill", "").css("stroke", "");
    });

我发现使用 JavaScript 应用样式比尝试使用 CSS 更有效且更易于维护,除非您专门使用类。在这种情况下,我将使用该.classed()方法(https://github.com/mbostock/d3/wiki/Selections#wiki-classed)来管理类的添加和删除。

希望这可以帮助!如果没有,对不起。:-/

编辑 1

我进行了编辑以包含鼠标移出功能。在深入研究之后,Leaflet 只是引入新图像,而不是重绘 SVG,这正是 D3.js 所做的。我唯一的猜测是 Safari 忽略了路径元素的 z-index。每当您右键单击路径区域然后从下拉列表中选择检查元素时,这一点都很明显。在 Chrome 上,它会显示路径元素的 HTML,但在 Safari 上,它会显示由 Leaflet 内容拉入的图像的 HTML。

于 2013-10-29T23:32:43.800 回答