【问题标题】:is it possible to change the colors on parts of an image using jquery, css, etc是否可以使用 jquery、css 等更改图像部分的颜色
【发布时间】:2011-09-27 06:23:33
【问题描述】:

我有一张显示不同烟花的图像。我想让颜色可配置,所以有一个组合框说:

  1. 美国(应该将烟花染成红色、白色和蓝色)
  2. 圣帕特里克节(应该给烟花涂上各种深浅不一的绿色......
  3. 等。 .

我希望它看起来像这样:

或者这个:

烟花现在都是一个单一的图像,我想“混合”选定的颜色(所以对于上面的 #1,它显示红色、白色和蓝色都并排放置。(与左侧相比)图像全是蓝色,右侧全是红色等。)

所以我有一个图像,我有两个选择:

  1. 为下拉列表中的每个示例创建单独的图像。
  2. 看看是否有一种方法可以动态更改 html 页面中图像部分的颜色
  3. 其他建议??

我想获得关于#2 是否可行的反馈,或者我应该坚持#1。显然,随着列表变长,#1 变得更烦人,而#2 更有吸引力(如果可能的话)

【问题讨论】:

    标签: jquery html css image colors


    【解决方案1】:

    您可以使用 png 的透明度。以您想要更改为透明的地方的方式创建烟花。然后将图像包装在一个 div 中,这将使用 javascript 更改其颜色。

    下面是使用 jQuery 的示例代码

    $("#green").click(function() {
        $("div").css("background", "green")
    });
    
    $("#yellow").click(function() {
        $("div").css("background", "yellow")
    });
    

    html

    <div><img src="path-to-image.png"></div>
    

    演示: http://jsfiddle.net/wyZnc/

    【讨论】:

    • 我看到了它在一个简单的图像上是如何工作的,但我有成千上万种不同的烟花需要上色。这将如何扩展? (见问题图片)
    • 从您必须使用 Photoshop(或其他程序)更改颜色的那一刻起,只需使所需的部分透明即可。然后就可以根据需要修改jQuery了。
    • 这不是我说的吗?诚然,没有演示。 ;-)
    • @Orbling 大声笑,我误解了你所说的。好吧,我认为没有最短的方法可以做到这一点。而是为每个烟花创建许多不同的图像,创建一个透明的 png。使用 css 和 html,我认为您别无选择。
    • @Soltris:对于他想要实现的目标,我永远不会尝试使用 HTML/CSS,动画中的对象太多,遵循复杂的路径 - 浏览器通常无法应对。建议使用 Flash 或画布对象。可以使用我们建议的模型通过动画 GIF 透明度来完成。
    【解决方案2】:

    我的另一个建议是将烟花作为蒙版,反转,并在包含它的框中使用底层背景颜色。

    这样,您将获得您喜欢的色调,并使用单个 alpha 透明度图像。

    【讨论】:

    • 我已经上传了图片作为我想要制作的示例。鉴于此,您能否澄清您的方法是否合适?
    • @ooo:您不希望使用图像来执行此操作,在大多数情况下,浏览器的延迟会很大,请使用 &lt;canvas&gt; 对象并使用它制作动画,或者在 Flash 中执行。
    • 你会如何在 flash/canvas 中改变颜色?
    • 我不想做任何动画。 .只需替换图像的颜色
    • @ooo:所以它是固定图像?啊,按照我们(Sotiris 和我)建议的方式去做是非常困难的,因为这假设是单一颜色的。如果之前没有生成,我会预先生成所有可能性,或者编写一个脚本来生成它。使用 flash 或 canvas,我说的是绘制/动画它,但由于你只有一个固定的图像,所以不值得。但是,您可以在 Flash 或带有蒙版的画布中使用多个图层来获得相同的效果。
    猜你喜欢
    • 1970-01-01
    • 2019-06-08
    • 2018-11-01
    • 2021-06-30
    • 1970-01-01
    • 1970-01-01
    • 2012-02-07
    • 1970-01-01
    相关资源
    最近更新 更多