简而言之,我有一个图像使用clipPath
进行了 mask ,因此可以在IE 9+中使用。问题是我需要将 mask 隐藏在悬停上,以便显示完整图像,然后在鼠标移开时重新应用。我现在拥有的脚本不起作用。笔包括在下面。我对SVG和clipPath
非常陌生。
http://codepen.io/OMGDrAcula/pen/eJPzQx
$(document).ready(function() {
$('.finish')
.mouseover(function() {
$(this).find('svg').find('clipPath').css('display', 'none');
}).mouseout(function() {
$(this).find('svg').find('clipPath').css('display', 'block');
});
})
<div class="col-xs-3 finish" style="position:relative;border:1px solid red;">
<img src="http://placehold.it/297x252" class="img-responsive" />
<svg preserveAspectRatio="xMidYMin slice" style="width:100%;height:252px;top:0;left:0;position:absolute;border:dotted 2px blue" version="1.1" xmlns="http://www.w3.org/2000/svg" width="297" height="252" x="0px" y="0px" style="enable-background:new 0 0 297 252;"
viewBox="0 0 297 252" xml:space="preserve">
<defs>
<clipPath id="maskID0">
<rect width="100%" height="252" x="0" y="0" />
</clipPath>
</defs>
<title>Test Image</title>
<desc>Test 123</desc>
<image clip-path="url(#maskID0)" width="297" height="252" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://placehold.it/297x252"></image>
</svg>
</div>
最佳答案
更改display
元素本身的clipPath
属性没有任何作用,因为clipPath
只是一个定义,没有任何自己的显示。被定义的image
裁剪后显示的是clipPath
。因此,一种简单的解决方案是仅在鼠标移入时删除clip-path
属性,然后在鼠标移出时再次将其添加(连同原始剪辑路径URL)。
$(document).ready(function() {
$('.finish').mouseover(function() {
$(this).find('svg image').removeAttr('clip-path');
}).mouseout(function() {
$(this).find('svg image').attr('clip-path', 'url(#maskID0)');
});
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="col-xs-3 finish" style="position:relative;border:1px solid red;">
<img src="http://placehold.it/297x252" class="img-responsive" />
<svg preserveAspectRatio="xMidYMin slice" style="width:100%;height:252px;top:0;left:0;position:absolute;border:dotted 2px blue" version="1.1" xmlns="http://www.w3.org/2000/svg" width="297" height="252" x="0px" y="0px" style="enable-background:new 0 0 297 252;"
viewBox="0 0 297 252" xml:space="preserve">
<defs>
<clipPath id="maskID0">
<rect width="150" height="252" x="0" y="0" />
</clipPath>
</defs>
<title>Test Image</title>
<desc>Test 123</desc>
<image clip-path="url(#maskID0)" width="297" height="252" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://placehold.it/297x252"></image>
</svg>
</div>
关于javascript - 悬停时删除clipPath,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35229532/