css - 如何使用CSS在图像上添加叠加颜色

标签 css

如果我有这样一张图片:

<img src="inshot1.jpg" width="100px" height="100px">​​​​​​​

悬停时,我希望该 block 被一种颜色覆盖。因此,例如,当您将鼠标悬停在它上面时,您会得到一 block 具有相同高度和宽度的红色 block 。所以基本上是叠加层?

最佳答案

这里有两种方法可以做到这一点 - 都涉及将图像包装在包含元素中。

使用容器的背景

您可以将包含元素的背景设置为红色,然后在悬停时降低图像的不透明度:

HTML 看起来像这样:

<!-- Uses background color to fade color from behind. -->
<div id="background">
    <img src="http://lorempixel.com/100/100/food" height="100" width="100" />
</div>

CSS 看起来像这样:

div { position: relative; float: left; }
img { display: block; }

#background { background: red; }
#background:hover img { opacity: 0.5; }

使用同级元素

您可以嵌套一个空跨度并将其用作可以用作覆盖层的绝对定位的 sibling 。检查一下 - 这是 HTML:

<!-- Uses empty span to overlay color. -->
<div id="overlay">
    <img src="http://lorempixel.com/100/100/food" height="100" width="100" />
    <span></span>
<div>​

CSS 看起来像这样:

div { position: relative; float: left; }
img { display: block; }

#overlay span {
    background: red;
    bottom: 0;
    display: block;
    left: 0;
    opacity: 0;
    position: absolute;
    right: 0;
    top: 0;
    z-index: 1;
}

#overlay:hover span { opacity: 0.5; }

您可以在此处试用每个解决方案的演示:

http://jsfiddle.net/jimjeffers/mG78d/1/

可能的陷阱

重要的是要注意,为了使包含元素与图像的大小相匹配,您需要执行以下四项操作之一:

  1. float 包含元素。
  2. 绝对定位包含元素。
  3. 设置要显示的包含元素:inline-block。
  4. 明确设置包含元素的高度和宽度以匹配图像的尺寸。

在我的 jsfiddle 示例中,我将 div 设置为 float: left;。

关于css - 如何使用CSS在图像上添加叠加颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9257217/

相关文章:

css - 移动 CSS 是唯一显示的 CSS……即使在桌面上也是如此

html - 在输入上设置最小值和最大值会删除间距吗?

css - 水平菜单项未内嵌显示

css - Angular material flex layout - 行中的第二个容器在调整大小时不会移动

javascript - js很难围绕一个圆圈定位div

javascript - ReactJS 网络应用程序 : Selective Mobile Scrolling Bug

javascript - 在不降低内容的情况下显示导航下拉菜单

css - 模拟列表中的边框折叠(无表格)

html - CSS:如何制作包含表单 "submittable"的列表项?

javascript - CSS 专注于子元素更改父元素