您通常不会将 <img>
视为具有背景色,但它们当然可以具有该属性。 例如,如果您想要在图像周围添加两个边框,这可能会出现。 您可以使用 border
来创建一个,并通过为图像提供 background-color
和 padding
来模拟另一个。 或者,您可以将背景设置为鲜红色,以便缺少的图像清晰可见。
您可能想要在图像上声明背景色的另一个原因是让颜色透过图像的透明部分显示。 事实上,利用这个想法,您可以创建任何您想要的形状作为“镂空”,并设置其后面的颜色。 这意味着您可以通过 CSS 控制该唯一形状的颜色,并执行 CSS 可以执行的任何操作。 例如,对其颜色进行动画处理!
首先,我们制作一个图像,其中实心部分与我们正在使用的网站的背景颜色匹配。 为了举例说明,是白色。 “形状”是透明部分。 下面是 Photoshop 中的显示方式
我们将其放在标记中
<img src="images/marilyn.png" alt="">
我们为其上色
img { background: red; }
然后我们制作一个动画来循环遍历一些颜色。 现在有两种语法(grunt)
@-webkit-keyframes super-rainbow {
0% { background: red; }
20% { background: orange; }
40% { background: yellow; }
60% { background: green; }
80% { background: blue; }
100% { background: violet; }
}
@-moz-keyframes super-rainbow {
0% { background: red; }
20% { background: orange; }
40% { background: yellow; }
60% { background: green; }
80% { background: blue; }
100% { background: violet; }
}
然后我们将该动画应用到图像
img {
background: red;
-webkit-animation: super-rainbow 15s infinite alternate linear;
-moz-animation: super-rainbow 15s infinite alternate linear;
}
就这样。 查看此示例的演示和其他快速有趣的演示,例如自行车形状上的彩虹渐变在悬停时移动。
图像从 Vecteezy 获取。
非常酷 Chris,在我看来,jQuery 在动画和过渡方面正在慢慢地被击败。
我仍然觉得 jQuery 有其用武之地,因为并非所有人都拥有最新最好的浏览器更新。 因此他们可能不支持这些 CSS 动画
所以,因为一些仅在 Webkit 和 Firefox 测试版中有效的动画,jQuery 就被“击败”了? 别开玩笑了。 我猜你并不是开发者。
是的,CSS 动画似乎正在碾压 jQuery(在性能和编码简便性方面)。 不幸的是,这些示例处于 CSS 的“前沿”,开发人员不切实际地期望我们的访问者拥有最新的 Webkit 或 Mozilla 版本(尽管我非常希望他们能够做到)。 只要 IE 将 HTML/CSS 规范视为指南,而不是规则,jQuery(一个非常可靠的跨浏览器解决方案)就需要一段时间才能被“击败”。
请问有人可以解释一下为什么 CSS3 动画的性能比 jQuery 动画更好? 因为根据我的经验,CSS3 动画的帧率较低,而且不够流畅……
提前感谢。
我想指出几点。 目前 Firefox 不支持 CSS 动画(只支持过渡),而在 WebKit 浏览器中,我们可以更进一步,使用真正的 **CSS 蒙版**(https://css-tricks.cn/webkit-image-wipes/ ),我希望它们能进入规范,因为它们很棒。
我还想向您推荐一个使用此技术(减去 CSS 动画)的令人印象深刻的网站,该网站对 **一切** 都使用此技术:http://www.ekid.it/
有点意思! 说实话,我从未想过给图像设置背景! Firefox 什么时候才能支持 CSS3 关键帧动画?
这太棒了,Chris。 谢谢分享!
我从未想过这一点! 这与滚动效果结合起来会很棒,因为它的颜色可以随着您滚动的距离而改变,等等。
尽管这种效果已经实现,但这将是一种新的方法!
而且您不仅可以通过声明背景颜色,还可以通过声明背景图像来轻松地掩盖图像(如使用 CSS 蒙版属性)。
Chris,这真是令人鼓舞,谢谢。
也许是我的问题(Mac Safari 5.0.5),但自行车似乎根本没有在悬停时发生变化。 玛丽莲可以正常工作……
偷懒了,没有使用旧的 Webkit 渐变语法。 您可以添加它。 Safari 5.1 会没问题。
您好 Chris,这是一个好主意,我能看到它在我的新网站上会派上用场,来自英国的问候。 电子邮件也很棒。
我使用这种技术为我的投资组合中的每个项目赋予独特的颜色。
请查看
http://www.byjohn.se
您还可以通过在任何元素上同时设置背景图像和背景颜色来实现相同的效果。
例如,对链接很有用
a.pngLink { background: url(img/myImg.png) red; display: block; width: 50px; height: 50px; }
我认为您也可以在图像上声明背景图像,这为我们提供了更多元素来创建新颖的效果。
IE 呢? 它根本不起作用
哇! 太棒了 Chris,一如既往。 你知道,我认为理论是一回事,但根据理论找到像这样的提示是完全不同的主题。 虽然我知道 CSS3 动画,但我从未想过如此天才的东西。
让我们学习并支持 CSS3。 阅读 CSS3 多栏布局模块。
此外,CSS3 写作模块 对使用非英语语言的用户很有帮助。
太棒了! 我真的很喜欢阅读您关于 CSS 的文章! 我不知道您是怎么获得如此多的知识和想法的! 我拼命尝试,却无法做到您做的事情!
是的! 我们在 Throwster Tees 网站 (www.throwstertees.com) 上使用它,当客户选择他们想要购买的 T 恤颜色时。
我一直期待着访问这个网站……很高兴我在上面做了一些事情! :D 好东西!
这太棒了! 我喜欢这种提示:它有许多层级和使用可能性! 当开发人员对新的 CSS 内容感到沮丧时,我真的很伤心——你可能无法立即在每个网站上都实现它,但这正是让网页设计变得有趣的东西
那是霍夫曼的自行车吗?
哈哈! 我需要一种方法来为这条评论点赞。