【问题标题】:Add a color overlay on hover在悬停时添加颜色叠加
【发布时间】:2014-07-14 22:01:16
【问题描述】:

我想实现如图所示的这个功能。

左边的图像是原始的,当我将鼠标悬停在该图像上时,我们定义的一些颜色应该覆盖图像,如右图所示。我试过用 CSS 没用。我试图通过 SVG 来实现这一点,但我对此并没有太多经验。有没有什么方法可以达到这个效果。

更新

  • 我不想在悬停时使用任何额外的图像。
  • 我可以在悬停时选择任何其他颜色而不是黑色。

【问题讨论】:

  • 为什么不,使用图像 - 悬停?
  • 对不起,忘了说。悬停时不使用图像...
  • 您可以使用 svg 轻松完成此操作。但是您需要将图像作为 svg 文件
  • 图像为光栅格式,jpg 或 png。我们可以包含它并无论如何编辑该 SVG。有可能吗?
  • 我已经完成了 svg,我不确定您是否可以使用 png、jpg。如果您有 svg 并将其发布在问题中,我可以告诉您如何操作。

标签: html css svg onhover


【解决方案1】:

webkit-filter 可以做到这一点。

请尝试未悬停的图像:

img {
    -webkit-filter: contrast(10) grayscale(1);
}

然后将所有过滤器放在悬停上:

img:hover {
    -webkit-filter: none;
}

您必须知道,并非所有浏览器都支持-webkit-filter。检查this page也是一个好主意。它将帮助您找到正确的值。

【讨论】:

  • 我希望能够用任何颜色替换该叠加层。
  • 好吧,我学到了一些关于 CSS 过滤器的知识。但并不是我在这个问题中所需要的。
  • 如果你不想使用第二张图片,我知道你可以做的只有一件事。
【解决方案2】:

使用可以在悬停时使用两个图像,您可以显示第二个图像并隐藏第一个图像。类似地,您可以使用第二个图像执行此操作

【讨论】:

  • 我不想使用第二张图片。还有其他选择吗?
【解决方案3】:

这里提出一个使用精灵的解决方案demo

<div class="picture-hover"></div>

.picture-hover {
            background: url(http://i.stack.imgur.com/55veX.png);
            width: 239px;
            height: 180px;
        }
        .picture-hover:hover {
            background: url(http://i.stack.imgur.com/55veX.png);
            width: 239px;
            height: 180px;
            background-position: -239px 0px;
        }

【讨论】:

  • 我希望能够根据用户的选择叠加多种颜色。
  • 可以使用 webkit-filter: opacity (25%);但是这种方法不是基于浏览器的交叉
  • 这并没有提供所需的输出。
  • 您可以使用svg,图像传输到svg文件类型的字体,通过font-face连接并使用psevdo元素悬停所需的颜色来填充
猜你喜欢
  • 2015-09-09
  • 2014-02-20
  • 2011-03-03
  • 2013-06-28
  • 1970-01-01
  • 2021-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多