重新思考 CSS 图片替换

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您旅程的每个阶段提供云产品。立即开始使用 200 美元的免费额度!

当我说 **CSS 图片替换** 时,我的意思是 **将一个原本不是图片的页面元素转换成图片**。这是一种非常常见的技巧,并且因为其语义意义和 SEO 优势而广受欢迎。一个常见的用法是在标题标签中使用它。

旧方法

<h1 class="main-logo">
   CSS-Tricks
</h1>
h1.main-logo {
	width: 350px; height: 75px;
	background: url(images/header-image.jpg);
	text-indent: -9999px;
}

问题:
如果关闭 CSS,这将只是降级为文本。这没什么不好,但仅仅因为有人关闭了他们的 CSS 并不一定意味着他们也希望关闭他们的图片。

新方法

<h1 class="main-logo">
   <a href="#">
       <img src="images/header-image.jpg" alt="CSS-Tricks" />
   </a>
</h1>

为什么这更好
关闭 CSS 时,您仍然可以显示图像。如果同时关闭 CSS **和** 图片,您将获得图像的 ALT 文本。您甚至可以使用与 CSS 图片不同的图片,如果存在良好的上下文原因。

剩余问题
这些技术都没有完美。虽然后者解决了难题的一部分,但仍然缺少一块拼图。那就是 **CSS 开启,图片关闭**。在这种情况下,您将获得空白而不是文本或图像。不太好。另一个问题是将这些元素转换为链接。您可以将标题标签包装在锚元素中,但是将块级元素包装在内联元素中是不好的做法。如果这样做,请确保将锚链接更改为块级。另一个选择是 javascript 的 onClick 事件。

注意
我相信这在以前已经被人们想到和使用过,所以“旧”和“新”在这里有点主观。

查看演示

感谢 Volkan Volkan Görgülü 提供的想法!