如何使 html 中的图像变暗(而非 css)
How to darken an image in html (not css)
尝试使用 html 使图像变暗。
我找到了您使用 css 'background-image;和 'linear-gradient',但是我想知道是否有办法在 html 中的 'img' 标签上执行此操作。如果没有,那么我应该将所有这些图像转换为背景图像吗? pros/cons 使用 html img 与 css background-image 有什么区别?
使用filter:
.darken {
filter: brightness(0.4);
}
<img src="https://picsum.photos/id/1/200/300">
<img src="https://picsum.photos/id/1/200/300" class="darken">
<img src="https://picsum.photos/id/1/200/300" style="filter: brightness(0.2);">
HTML img
标签上没有使图像变暗的属性。
https://www.w3schools.com/tags/tag_img.asp
如果您考虑的是 style
标记,那是内联 CSS,所以您实际上并没有做任何不同的事情。
使用 CSS,您实际上可以控制图像变暗的方式,而不是仅仅假设浏览器会为您正确执行。它在一个浏览器中的样子在另一个浏览器中不太可能相同。可能是,但这可能只是巧合,您不能依赖它来获得未来的兼容性。
如果我没记错的话,你不能使用纯 html 改变任何东西的颜色 属性,而且我不明白为什么有人会在 [=29= 时这样做] 几乎无处不在。
当您的图像是内容的一部分时,您应该使用 <img>
。如果这张图片很重要,请不要忘记替代文字。
如果您的图像不是内容的一部分,或者您不希望默认情况下用户打印时显示您的图像,您应该使用背景图像。
有关更多信息,请参考这个 SO 问题:When to use IMG vs. CSS background-image?
现在,要使图像变暗,您可以执行以下操作:
img {
filter: brightness(50%);
}
我不认为有一种方法可以在不使用 CSS 的情况下使 html 中的图像变暗。
根据我的经验,html <img>
标签和 css background-image
标签之间的区别在于第一个标签的语义值。
澄清一下:当您的图像是内容的一部分时使用 <img>
标签,这样图像将更好地被搜索引擎编入索引。当您的图像是界面或装饰的一部分时,请改用 css background-image
。 Web 浏览器也可以在某些情况下隐藏背景图像,例如 Safari reader 模式。
如果您绝对不能使用任何 CSS,您可以将图像放在带有滤镜的 SVG 元素中。在此示例中,我使用颜色矩阵滤镜来实现 20% 的亮度。
<svg>
<filter id="darken">
<feColorMatrix
type="matrix"
in="SourceGraphic"
values="0.2 0 0 0 0
0 0.2 0 0 0
0 0 0.2 0 0
0 0 0 1 0" />
</filter>
<image filter="url(#darken)" xlink:href="https://upload.wikimedia.org/wikipedia/commons/thumb/3/32/Vista_de_Baku%2C_Azerbaiy%C3%A1n%2C_2016-09-26%2C_DD_138.jpg/800px-Vista_de_Baku%2C_Azerbaiy%C3%A1n%2C_2016-09-26%2C_DD_138.jpg" />
</svg>
尝试使用 html 使图像变暗。
我找到了您使用 css 'background-image;和 'linear-gradient',但是我想知道是否有办法在 html 中的 'img' 标签上执行此操作。如果没有,那么我应该将所有这些图像转换为背景图像吗? pros/cons 使用 html img 与 css background-image 有什么区别?
使用filter:
.darken {
filter: brightness(0.4);
}
<img src="https://picsum.photos/id/1/200/300">
<img src="https://picsum.photos/id/1/200/300" class="darken">
<img src="https://picsum.photos/id/1/200/300" style="filter: brightness(0.2);">
HTML img
标签上没有使图像变暗的属性。
https://www.w3schools.com/tags/tag_img.asp
如果您考虑的是 style
标记,那是内联 CSS,所以您实际上并没有做任何不同的事情。
使用 CSS,您实际上可以控制图像变暗的方式,而不是仅仅假设浏览器会为您正确执行。它在一个浏览器中的样子在另一个浏览器中不太可能相同。可能是,但这可能只是巧合,您不能依赖它来获得未来的兼容性。
如果我没记错的话,你不能使用纯 html 改变任何东西的颜色 属性,而且我不明白为什么有人会在 [=29= 时这样做] 几乎无处不在。
当您的图像是内容的一部分时,您应该使用
<img>
。如果这张图片很重要,请不要忘记替代文字。如果您的图像不是内容的一部分,或者您不希望默认情况下用户打印时显示您的图像,您应该使用背景图像。
有关更多信息,请参考这个 SO 问题:When to use IMG vs. CSS background-image?
现在,要使图像变暗,您可以执行以下操作:
img {
filter: brightness(50%);
}
我不认为有一种方法可以在不使用 CSS 的情况下使 html 中的图像变暗。
根据我的经验,html <img>
标签和 css background-image
标签之间的区别在于第一个标签的语义值。
澄清一下:当您的图像是内容的一部分时使用 <img>
标签,这样图像将更好地被搜索引擎编入索引。当您的图像是界面或装饰的一部分时,请改用 css background-image
。 Web 浏览器也可以在某些情况下隐藏背景图像,例如 Safari reader 模式。
如果您绝对不能使用任何 CSS,您可以将图像放在带有滤镜的 SVG 元素中。在此示例中,我使用颜色矩阵滤镜来实现 20% 的亮度。
<svg>
<filter id="darken">
<feColorMatrix
type="matrix"
in="SourceGraphic"
values="0.2 0 0 0 0
0 0.2 0 0 0
0 0 0.2 0 0
0 0 0 1 0" />
</filter>
<image filter="url(#darken)" xlink:href="https://upload.wikimedia.org/wikipedia/commons/thumb/3/32/Vista_de_Baku%2C_Azerbaiy%C3%A1n%2C_2016-09-26%2C_DD_138.jpg/800px-Vista_de_Baku%2C_Azerbaiy%C3%A1n%2C_2016-09-26%2C_DD_138.jpg" />
</svg>