如何将灰度脚本应用于动态加载的图像

How can I apply a greyscale script to dynamically loaded images?

本文关键字:动态 加载 图像 应用于 脚本 灰度      更新时间:2023-09-26

我对编程还比较陌生,我正在尝试创建一个库。对于导航,我希望能得到一些帮助,将灰度效果应用于动态加载的拇指。

当它没有被动态加载(v1)时,我可以让它工作;所有的拇指在滚动时都显示为灰色并褪色),但动态图像拇指(v2)。。。

如果有任何帮助,我将不胜感激。感谢

v1:(非动态拇指)

html:(按预期工作)所有拇指都是灰色的,悬停时会褪色

.....
<div class="sub_nav_wrapper">
    <ul class="sub_nav thumbs">
        <articlep>
            <li class="module variable">
                <img alt="" src="projects/thumbs/print/01.jpg">
                <span class="tn_viewbttn tn_dbttn">view</span>
            </li>
        </articlep>
    </ul>
</div>
.....
var mainDD = function(el){  
var t = this;  
t.$el = $(el);  
t.tdcs = [];  

t.lis=t.$el.find('articlep').childs('li')
t.lis.each(函数){
t.tdcs.push(新的主DDComponent(this))
});

v2:动态

这是动态拇指的html:

<div class="sub_nav_wrapper">  
    <ul class="sub_nav thumbs">  
        <section id="projectsp">  
            <div class="content">  
            /*                              
            //*dynamically loaded content - thumbs  
            //----  
            //articlep  = ' <articlep>'
            //+ ' <li class="module variable">'
            //+ '   <img src="projects/thumbs/print/'+picturep+'" alt=""/>'
            //+ '   <span class="tn_viewbttn tn_dbttn">view</span>'
            //+ '   </li>'
            //+ ' </articlep>';
            //----
            */
            </div>
        </section>
    </ul>
</div>

所有拇指都显示为彩色,并且只在鼠标悬停时单独切换到灰度。

$('#projectsp').on('mouseover','articlep>li', function(){
    t.tdcs.push(new mainDDComponent(this));
});

根据brillout.com的回答,以及Roman Nurik的回答,并在一定程度上放宽了"无SVG"的要求,您可以在Firefox中仅使用单个SVG文件和一些CSS来降低图像的饱和度。

<?xml version="1.0" encoding="UTF-8"?>
<svg version="1.1"
     baseProfile="full"
     xmlns="http://www.w3.org/2000/svg">
    <filter id="desaturate">
        <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>

有关更多信息,请参阅此问题