2016-03-21 17 views
0

我希望能够使用CSS检测点击/悬停在形状上(<img>标签,带有SVG源文件),但不是在它周围的箱式房地产上。在下面的图片中,听取点击/悬停的区域是浅蓝色的区域,而“额外”的区域是橙色的。使用Javascript或CSS检测形状上的点击/悬停,而不是它的盒型模型的矩形

enter image description here

在我的具体情况,我有两个圆一个在另一个之上 - 以下监听点击/悬停的一个。因此,我希望浅蓝色环带只听取它们。但是,根据盒子模型,为了使底层圆圈检测到点击/悬停,用户必须点击或悬停在该方形橙色条纹上。

enter image description here

+1

不可能的,除非你抛弃使用''标签当SVG被用作图像,它基本上像光栅一样工作。 –

+0

我明白了,我并不这么认为,因为使用'filter:drop-shadow()'CSS属性浏览器知道SVG文件的边缘。无论如何,我怎样才能在不使用''标签的情况下插入SVG图片? – Willege

+0

在文本编辑器中打开SVG,并获取代码 –

回答

1

您还可以通过使用两个div(一个围绕另一个挤包),用CSS边界半径和背景图片设置为你的形象实现这一目标。通过stopPropagation()cancelBubble,您可以将点击行为设置为您最喜欢的行为。

HTML

<div class="big_cycle" onclick="alert ('clicked');"> 
    <div class="small_cycle" onclick="event.cancelBubble = true; event.stopPropagation();"></div> 
</div> 

CSS

.big_cycle { 
    width: 50px; 
    height: 50px; 
    position: relative; 
    cursor: pointer; 
    background-color: #f00; 
    border: 1px solid #000; 
    border-radius: 25px; 
} 

.small_cycle { 
    width: 28px; 
    height: 28px; 
    position: absolute; 
    left: 10px; 
    top: 10px; 
    cursor: default; 
    background-color: #0f0; 
    border: 1px solid #000; 
    border-radius: 14px; 
} 

我做了一个简单的Plunker证明:Click me

相关问题