css - 我的响应式缩放 Sprite 在滑动

标签 css responsive-design css-sprites

总结响应式缩放的 Sprite 滑动并偶尔显示不正确的 Sprite 。

背景: 我用谷歌搜索并仔细阅读了 SO 的答案——并找到了一些,例如 this one -- 但他们没有告诉我任何我已经一次又一次经历过的事情。过去一周我一直在研究这个问题,我感到非常沮丧。 :(

问题: 我正在尝试响应式地缩放筹码和纸牌 Sprite 以用于扑克游戏。我的缩放效果很好(游戏中的所有东西都根据 table 大小重新定位和缩放),但 Sprite 在调整大小时似乎“滑动”,偶尔会显示不正确的卡片。在努力寻找解决这种最不合时宜的行为的方法时,我遇到过许多正确使用缩放 Sprite 的网站,但我终究无法确定自己做错了什么。

示例: 我准备了一个只有相关部分显示问题的 jsfiddle,这里:http://jsfiddle.net/VsfZD/2/

适用的CSS:(满足jsfiddle+代码要求):


/* Cards are 47x64  (spritesheet is 53 cards wide, so 2491x64 px) */
/* Spacer is 47x64 */

.card {
  position:   absolute;
  width:      4%;
  max-width:  47px;
  z-index:    306;
  overflow:   hidden;
}

.card img.card_spacer {
  display:    block;
  height:     auto;
  width:      100%;
}

.card img.card_img {
  position:   absolute;
  top:        0px;
  left:       0px;
  max-width:  none;
  max-height: 100%;
}

.two-clubs     img.card_img { left:   -200%; }
.six-diamonds  img.card_img { left:  -1600%; }
.ace-diamonds  img.card_img { left:  -4900%; }
.card_back     img.card_img { right: -5200%; }

拜托,如果你能帮我解决这个问题,我将感激不尽!

其他要求:仅 css。没有框架,没有 Bootstrap ,没有 js。必须在 IE8 中工作

最佳答案

Webkit 倾向于将小数舍入为整数像素,这会导致 Sprite 滑动。不幸的是,没有多少 css 可以改变这种行为,使我的上述问题不可能

也就是说,仍然有一种方法可以在 webkit 中使用缩放 Sprite ,尽管它必须使用 javascript。

由于您必须确保缩放后的 Sprite 尺寸始终以整像素为单​​位,因此您应该选择一个 Sprite 尺寸比例(例如 3:4)并尽可能频繁地(整数)倍数,然后只更新显示的当您的缩放比例导致其中之一时, Sprite 的大小。它不是非常流畅,绝对不是被动的,但它确实允许工作,跨浏览器缩放。


我已将 sprite 的大小调整为 66*88,使用它我终于可以使用缩放卡了。在开始调整窗口大小时,javascript 隐藏所有 Sprite (卡片、筹码等)并在完成后更新它们的大小和位置。这有效地隐藏了用户在调整大小时的任何抖动,并大大简化了动画处理。

关于css - 我的响应式缩放 Sprite 在滑动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19131168/

相关文章:

css - HTML 5 中的垂直居中 Logo 和标题

css - 响应式电子邮件设计中的填充

css - 显示浏览器 X 轴滚动条但已禁用

带有一个 Sprite 的 Javascript 照片幻灯片

html - 完全响应式网站与媒体查询

javascript - 我的 css 动画和 JQuery 没有同步

html - 消失的导航链接/栏

javascript - 将元素的宽度设置为等于监视器大小而不改变缩放

html - 具有不同背景位置的 Sprite 菜单

css - 如何在伪类之前和之后删除或禁用?