你在这里绝对是正确的。
本质上,这里通过 CSS 在 sprite 中提供“视网膜”图形的过程是:
- 设置你的普通精灵,在你的 CSS 中使用相关的定位/等来提供给非视网膜设备,
- 设置此图像的背景大小,
- 使用媒体查询将图像的@2x 变体提供给支持它的设备。
有几个关键的事情要记住:
- 设置
background-size
需要具有不同供应商前缀的多个声明以获得最佳浏览器覆盖率 - 请参阅下面的代码以了解我的意思
background-size
是背景图像的非视网膜变体的大小,而不是它所在元素的大小。因此,如果正常大小的精灵图像是 200 像素 x 400 像素(高分辨率版本是 400 像素 x 800 像素),那么200px 400px
就是您声明的。
background-size
值被声明为<width> <height>
.
- 您必须
background-size
在第一个声明中声明,而不是在视网膜媒体查询覆盖中声明。
- 尽管使用
@2x
已成为普遍做法,但它在 Web 开发中并不是必需的:您可以使用完全不同的图像名称。
如果没有所有代码或要查看的实时 URL,很难帮助您解决特定问题,但这里有一个高级示例。
在这个例子中,我有一个 100px 宽和 50px 高的背景图像,它位于元素的中间
/* the element */
.element{
background: url(../img/site/background-image.png) 50% 50% no-repeat;
/* vendor-specfic declarations for background-size */
-webkit-background-size: 100px 50px;
-moz-background-size: 100px 50px;
-o-background-size: 100px 50px;
background-size: 100px 50px;
}
/* for retina users */
@media screen and (-webkit-min-device-pixel-ratio: 2),
screen and (max--moz-device-pixel-ratio: 2),
screen and (min-device-pixel-ratio: 2){
.element{
/* we only over-write background-image here */
background-image: url(../img/site/background-image@2x.png);
}
}
这意味着那些落入第二个媒体查询的设备将加载@2x
背景图像的版本,并将其缩放到background-size
声明的尺寸。
因为图像被缩小到您设置的尺寸,如果您使用精灵,您只需像往常background-position
一样声明所有元素的 s ,而不是两次来考虑更大的视网膜图形尺寸。
编辑:
现在看到您的网站后,我可以确切地看到您在导航方面遇到的问题:
看起来像这样的原因是您的 CSS (第 972 行style2.css
):
.pixeljam a, .games a, .team a, .forums a {
background: no-repeat url('/assets/blogtext2x.png');
}
如果您将其更改为background-image
并删除no-repeat
,那么它将起作用(否则会background
重置您以前的背景位置)。
.pixeljam a, .games a, .team a, .forums a {
background-image: url('/assets/blogtext2x.png');
}