jquery - 将图像的一部分变灰

标签 jquery html css svg

如何将图像的一部分变灰?像这样

enter image description here

我正在考虑在绿色图像之上应用带有灰色图像的 svg。有一种方法可以在 svg 中绘制图像,也有一种方法可以绘制分段路径,但是如何将图像包含在路径中?路径 {background: url()} 不起作用

到目前为止,我做到了这一点:

<span class="hp"></span>

<svg width="300" height="300">       
    <path d="M25,25 L25,0A25,25 0 0,1 43.224215685535285,42.11367764821722 z"/>
</svg>

<style>
.hp {
    display: inline-block;
    height: 50px;
    width: 50px;
    background-image: url(http://i.stack.imgur.com/suYdT.png)
}
svg {
    position: absolute;
    top: 0;
    left: 0;
}
path {
   background: url (http://i.stack.imgur.com/CWzfS.png)
}
</style>

fiddle

最佳答案

将剪裁后的变灰图像叠加在原始图像之上。

<svg width="0" height="0">
    <clipPath id="clipPolygon">
        <polygon points="0 55,25 25,25 0,0 0"></polygon>
    </clipPath>
</svg>

<div class="image-container">
    <img class="image-grey clip" src="http://i.stack.imgur.com/suYdT.png" />
    <img class="image-coloured" src="http://i.stack.imgur.com/suYdT.png" />
</div>

.image-coloured {
    z-index: 0;
    position: absolute;
}
.image-grey {
    z-index: 1;
    position: absolute;
    -webkit-filter: grayscale(100%);
    -moz-filter: grayscale(100%);
    filter: gray; /* For IE 6 - 9 */
  -webkit-transition: all .6s ease; /* Fade to color for Chrome and Safari */
  filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#grayscale");
}
.clip {
    /*Chrome,Safari*/
    -webkit-clip-path: polygon(0px 55px, 25px 25px, 25px 0px, 0px 0px);
    /*Firefox*/
    clip-path: url("#clipPolygon");
    /* iOS support inline encoded svg file*/
    -webkit-mask: url(data:image/svg+xml;
    charset=utf-8;
    base64, PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIwIiBoZWlnaHQ9IjAiPgogIDxjbGlwUGF0aCBpZD0ic3ZnQ2xpcCI+CiAgICA8cGF0aCBpZD0ic3ZnUGF0aCIgZD0iTTAsNTUgTDI1LDI1IDI1LDAgMCwwIHoiLz4KICA8L2NsaXBQYXRoPgogIDxwYXRoIGlkPSJzdmdNYXNrIiBkPSJNMCw1NSBMMjUsMjUgMjUsMCAwLDAgeiIgIC8+Cjwvc3ZnPg==) no-repeat;
}

here 中获取了使图像部分变灰的代码

here 生成多边形路径

here 获得了跨浏览器的灰度过滤器

fiddle

关于jquery - 将图像的一部分变灰,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24216079/

相关文章:

jquery - CSS 问题 - 一个元素只有在没有父元素的情况下才有效(使用 jquery)

javascript - 幻灯片放映,显示图像标题(然后为其设置动画)

javascript - 如何将 ajax $.get 值传递给 jQuery 中的另一个 $.get 函数?

javascript - 使用 jQuery find() 获取链接的 href 值

javascript - 我们如何同步不同页面上的两个 Canvas 元素

javascript - 如何使 AngularJS Materials 下拉菜单更加可见?

html - 适用于 iPad/iPhone/桌面的不同 div 样式

html - IE9 中意外的奇怪 CSS 行为

javascript - 带有选项卡的模式中的 2 个(或更多)表单

html - 单击外部元素时关闭展开的内容