Различные браузеры могут использовать различные алгоритмы округления чисел и рендеринга изображений в некоторых случаях. Вы можете прочитать некоторые статьи об этом, например: this и this.
Так что, когда ваш zoom
является 150%
и у вас есть 29x29
пикс, ваш браузер должен оказывать 43.5x43.5
пикс. Как каждая версия каждого браузера обойдется? Мы не знаем, может быть 43x43
px, than 44x44
px. Существует article о спрайтах и зумах.
Я создаю новый фрагмент кода с двумя парами изображений. Первая пара использует ваш спрайт изображения, а второй - мой. Я увеличил размер изображения Facebook с 29x29
px до 30x30
px Попробуйте увеличить масштаб. Вы можете видеть, что у них проблемы с разным соотношением zoom
(первое - на 150%
, второе - на 110%
- 125%
).
JSFiddle
.fb29 {
width: 29px;
height: 29px;
background: url(http://i.imgur.com/O2Cp0nb.png) no-repeat;
background-size: 29px;
}
.sun29 {
margin-top: 10px;
width: 16px;
height: 16px;
background: url(http://i.imgur.com/O2Cp0nb.png) 0 -29px no-repeat;
background-size: 29px;
}
.fb30 {
margin-top: 10px;
width: 30px;
height: 30px;
background: url(http://i.imgur.com/mRIPLXO.png) no-repeat;
background-size: 30px;
}
.sun30 {
margin-top: 10px;
width: 16px;
height: 16px;
background: url(http://i.imgur.com/mRIPLXO.png) 0 -30px no-repeat;
background-size: 30px;
}
<div class="fb29"></div>
<div class="sun29"></div>
<div class="fb30"></div>
<div class="sun30"></div>
Итак, мой совет, чтобы добавить 1px
между изображениями, чтобы быть независимым от различных браузеров округление алгоритмы и браузеры ошибок:
JSFiddle
.fb29 {
width: 29px;
height: 29px;
background: url(http://i.imgur.com/dKxYwhZ.png) no-repeat;
background-size: 29px;
}
.sun29 {
margin-top: 10px;
width: 16px;
height: 16px;
background: url(http://i.imgur.com/dKxYwhZ.png) 0 -30px no-repeat;
background-size: 29px;
}
.fb30 {
margin-top: 10px;
width: 30px;
height: 30px;
background: url(http://i.imgur.com/1fJyJVK.png) no-repeat;
background-size: 30px;
}
.sun30 {
margin-top: 10px;
width: 16px;
height: 16px;
background: url(http://i.imgur.com/1fJyJVK.png) 0 -31px no-repeat;
background-size: 30px;
}
<div class="fb29"></div>
<div class="sun29"></div>
<div class="fb30"></div>
<div class="sun30"></div>
Если вам необходимо поддерживать старые браузеры IE, смотрите в this article.
Теперь вы можете использовать некоторые полезные вещи на gulp
/grunt
, чтобы автоматически генерировать спрайты, где вы можете установить промежуток/разницу между изображениями. См. this.
Это не ответит на вопрос. Я хочу решение с использованием спрайтов CSS. –