【问题标题】:Responsive css sprites + retina响应式 css 精灵 + 视网膜
【发布时间】:2012-09-26 09:53:18
【问题描述】:

最近几天我读了很多关于这个主题的文章,但我没有找到解决方案。我有两个精灵集,一个用于正常显示的低质量,一个用于视网膜显示的高质量。

我的问题是,我的网站必须是响应式的,图形应该根据浏览器窗口调整大小。但是使用background-size 属性,我似乎无法告诉浏览器调整精灵的大小。这是我到目前为止得到的:

#logo-img {
  max-width: 100%;
  text-indent: -9999px;
  height: 85px;
  width: 360px;
  background-image: url('/images/sprites-sa026cef942.png');
  background-position: 0 -2609px;
  background-repeat: no-repeat;
  overflow: hidden;
  outline: 0 none !important;
  display: block;
  white-space: nowrap;
}
@media (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (min-device-pixel-ratio: 1.5) {
    #logo-img {
      background-image: url('/images/sprites-retina-se61e802cf4.png');
      background-position: 0 -2601px;
      -webkit-background-size: 360px, auto;
      -moz-background-size: 360px, auto;
      -o-background-size: 360px, auto;
      background-size: 360px, auto;
    }
}

HTML 是

<a href="#" id="logo-img">
  <h1>My logo text</h1>
</a>

一切正常,除了在移动设备上或调整浏览器窗口大小时。徽标被剪切,并且不会调整到浏览器窗口的大小。我在玩max-width: 100%;height: auto;,但这只会影响轮廓,不会影响内部的精灵。

希望有人知道解决方案。它不必与 IE8 兼容,但它会很好;)

编辑 在使用精灵之前,我使用了background-size: contain; 来确保背景图像的大小被调整为元素的大小:

#logo-img {
  background:url(../images/sprites-retina/logo.png) no-repeat center center;
  background-size: contain;
  max-width: 100%;
  text-indent:-9999px;
  height: 85px;
  width: 360px;
  overflow: hidden;
  outline: 0 none !important;
  display: block;
  white-space: nowrap;
}

这很好用,但是我不能使用精灵表。也许这说明了我的意思。

EDIT2

我做了一个小提琴http://jsfiddle.net/euvRD/2/

【问题讨论】:

    标签: css responsive-design media-queries css-sprites


    【解决方案1】:

    我认为您需要从 background-size 行中删除逗号,并且您可能还想将高度设置为 85px

    -webkit-background-size: 360px 85px;
    -moz-background-size: 360px 85px;
    -o-background-size: 360px 85px;
    background-size: 360px 85px;
    

    但我认为逗号是这里的主要问题。这对您有帮助吗?

    【讨论】:

    • hmmmm,这很奇怪,因为背景大小的东西是通过 Compass (compass-style.org) 生成的。但我试过了,它没有帮助,里面的精灵仍然被切割。还有其他想法吗?
    • 你有现场例子的链接吗?或者你可以创建一个 jsfiddle 来显示你的问题吗?
    • 顺便说一句,调整浏览器大小不会影响device-pixel-ratio,因此您可能无法在浏览器中测试效果,只能在具有相应分辨率的设备上测试。
    • 我做了一个小提琴:jsfiddle.net/euvRD。如果您调整浏览器窗口的大小,则第一个 luigi pic 不会调整大小,它基于 spritesheet。第二个是带有background-size: contain; 的单个图像,它会调整大小
    • 嗯,所以你想一次做不同的事情。要调整徽标大小,您可以使用媒体查询max-width,如本例中的:jsfiddle.net/euvRD/2 但这并没有使用device-pixel-ratio。尽管如此,由于精灵背景被缩小到 998px/2=499px 的一半,您仍然可以获得更高分辨率的预期效果。不太确定,这是否有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-13
    • 2013-04-27
    • 1970-01-01
    • 1970-01-01
    • 2020-11-26
    • 1970-01-01
    相关资源
    最近更新 更多