雪碧图不局限于 `background-image`,借助 `object-fit` 和 `object-position` 属性,我们可以调整内联图像在其内容框中的位置,使其像雪碧图一样工作。 例如,假设我们希望将下面的图像像普通图像一样添加到 HTML 页面中

<img src='sprite.png' alt='Icons'>
然后,我们将裁剪图像,以便屏幕上仅显示第一个图标
img {
object-fit: none;
object-position: 0 0;
width: 100px;
height: 100px;
}

这里,`<img>` 的内容框应为 100px 宽,100px 高,但由于图像超出这些边界,因此使用 `object-fit: none` 自动为我们裁剪。然后,我们可能希望使用一个类来调整图像位置,并完全显示其另一部分
.book {
object-position: 0 -234px;
}

这些雪碧图可以是任何常规图像格式,但也可以使用相同的技术处理 SVG。以下是在 Chrome 最新稳定版本中目前可用的示例
查看 CodePen 上 Robin Rendle (@robinrendle) 编写的示例 使用 `object-position` 实现雪碧图。
图片滑块
使用少量 JavaScript,我们实际上可以使用相同的概念,通过单个 `<img>` 标签创建一个图片滑块。当点击图像时,只需更改一些类,这些类会更改 `object-position`。
查看 CodePen 上 Robin Rendle (@robinrendle) 编写的示例 使用 `object-position` 实现 SVG 雪碧图。
支持
请记住这一点以备将来使用,因为不幸的是,目前 `object-fit` 的浏览器支持情况并不理想。Safari 和 Firefox 的当前桌面版本不支持它,iOS 也不支持。因此,在短期内使用此技巧之前,请务必仔细检查 `object-fit` 的年鉴条目。
好文章!很快就会尝试一下……
我不明白。为什么要使用浏览器支持如此糟糕的东西来重新发明轮子?
https://caniuse.cn/#feat=object-fit
无论如何,还是要感谢。
文章中明确指出了浏览器支持情况。我认为它非常非常有趣。一个货真价实的 CSS 技巧,也是这个网站的同名特色。`<img>` 是内容,`background-image` 是设计,因此理论上对于没有支持文本的图像很有用,在这种情况下可以使用替代文本。
例如。
更不用说使用单个标签创建的超级简单的单请求图片滑块了。这对我来说非常有吸引力。
我喜欢这些关于未来可能可用的尖端技巧的文章,它们让网络保持活力。没有它们,你只会重复相同的老东西。
不错的技巧,但正如 AlienSKP 所说,浏览器支持很少。
我还担心语义问题,使用内联图像的想法是,即使将页面上的所有样式都删除,仍然可以正确查看其内容。
此外,使用 `img` 比使用 `background-image` 实现 CSS 雪碧图有什么优势?
“没有 CSS 就会看起来很奇怪”这一点很有趣。这不是我通常担心的问题,但如果在发送到 RSS 等内容中使用它,可能会变得很奇怪。
我喜欢使用此技术增强 JavaScript 的图片滑块最终会回退到一个大型组合图像的想法,这很酷。
可以使用传统的 `clip` 属性实现相同的效果。唉,元素必须绝对定位才能实现。
这是一种很好的 CSS 实践。总有一天所有浏览器都会支持它。
每当文章指出一个新的酷炫浏览器功能时,就会有一群评论者指出它几乎没有得到支持。真是的。显然,在某个时候,每个 CSS 功能的支持都很少。
你有没有想过浏览器制造商可能在阅读 CSS tricks?如果很多人想要某个特定功能,它肯定会更快地进入浏览器。
感谢这篇文章,我很高兴了解到这个技巧。
这正是我所想的。尝试新事物并为其获得支持做好准备非常重要,否则你将永远在追赶。
我同意。想想如果没有人尝试过 CSS,现在 CSS 会是什么样子。在第一个 CSS 的时代,浏览器支持非常有限。想到我们当时都坚持使用基于表格的布局,我就忍不住笑了。
感谢这篇文章和解释,`object-fit` 看起来将来会非常有用。
顺便说一句(你们可能都知道),但你可以为旧版浏览器(如果使用锚点实现悬停效果,则可以追溯到 IE6)实现“雪碧图技巧”。
http://codepen.io/paulobrien/full/azVEvM/
我一直认为这样的功能有点显而易见,所以我很高兴听到它即将出现。而且它看起来实现起来也简单易懂。
我想从可访问性的角度来看,“图标”在替代文本中意义不大。除非你的 JavaScript 在每次显示不同的图标时更新替代文本,否则你也可以使用空白替代文本。然后,我们还需要添加 ARIA 角色等。
感谢分享这篇文章
非常有用
http://www.novinmarketing.com/index.aspx?Content=Web-Design
尽快尝试一下。 http://www.zulusproweddings.com
好吧,可以使用 `background-position` 获取效果,为什么要使用这种复杂的方法?
因为这是指内容,而不是设计元素。
使用 `img` 雪碧图而不是 CSS 雪碧图有什么意义?因为 `img` 雪碧图的加载时间会更长。此外,我们无法将 `img` 雪碧图用于动态图库。
哦,是的,我们正在进步。在浏览器支持之前,你可以在图像周围使用一个包装器,并使用 `overflow: hidden` 和 `margin-top: negative value` 移动图像。干杯。