Это может показаться глупым вопросом.
Если я использую этот фрагмент CSS для обычных дисплеев (где box-bg.png
200 на 200 пикселей);
.box{
background:url('images/box-bg.png') no-repeat top left;
width:200px;
height:200px
}
и если я использую медиа-запрос, подобный этому, для нацеливания на дисплеи сетчатки (с изображением @ 2x, являющимся версией с высоким разрешением);
@media (-webkit-min-device-pixel-ratio: 2),
(min-resolution: 192dpi) {
.box{background:url('images/box-bg@2x.png') no-repeat top left;}
}
Нужно ли мне удвоить размер .box
div до 400 на 400 пикселей, чтобы он соответствовал новому фоновому изображению с высоким разрешением?
css
responsive-design
media-queries
Дин Эллиотт
источник
источник
Ответы:
Нет, но вам необходимо настроить
background-size
свойство в соответствии с исходными размерами:РЕДАКТИРОВАТЬ
Чтобы добавить немного больше к этому ответу, вот запрос обнаружения сетчатки, который я обычно использую:
- Источник
NB. Это
min--moz-device-pixel-ratio:
не опечатка. Это хорошо задокументированная ошибка в некоторых версиях Firefox, и ее следует писать так, чтобы поддерживать более старые версии (до Firefox 16). - ИсточникКак @LiamNewmarch упомянул в комментариях ниже, вы можете включить
background-size
в свое сокращенноеbackground
объявление следующим образом:Однако я лично не советовал бы использовать сокращенную форму, поскольку она не поддерживается в iOS <= 6 или Android, что делает ее ненадежной в большинстве ситуаций.
источник
background-size: cover;
. Это сохранит соотношение сторон, «покрывая» весь фон изображением.background-size
свойство вbackground
следующим образом:background: url('images/box-bg@2x.png') no-repeat top left / 200px 200px
. Обратите внимание, что браузеры, которые не поддерживаютbackground-size
это правило, игнорируют это правило.Вот решение, которое также включает устройства с высоким (er) DPI ( MDPI ) > ~ 160 точек на дюйм, как многие устройства, отличные от iOS (например, Google Nexus 7 2012 ):
Поскольку @ 3rror404 был включен в его правку после получения отзывов из комментариев, есть мир за пределами Webkit / iPhone. Одна вещь, которая до сих пор беспокоит меня в большинстве решений, подобных тому, на который ссылается в качестве источника выше в CSS-Tricks , заключается в том, что это не полностью учитывается. Первоисточник пошел уже дальше.
Например, экран Nexus 7 (2012) представляет собой экран TVDPI со странным
device-pixel-ratio
размером1.325
. При загрузке изображений с нормальным разрешением они масштабируются с помощью интерполяции и поэтому становятся размытыми. Для меня применение этого правила в медиа-запросе для включения этих устройств позволило получить наилучшие отзывы клиентов.источник
@2x
только того, чтобы обслуживаться только2dppx
+ клиентам.Если вы планируете использовать одно и то же изображение для экрана сетчатки и экрана без сетчатки, то вот решение. Допустим, у вас есть изображение
200x200
и два значка в верхнем ряду и два значка в нижнем ряду. Итак, это четыре квадранта.Масштабируя и позиционируя значки спрайтов на 50% от фактического значения, можно получить ожидаемый результат.
Еще один удобный раствор миксина SCSS от Райана Бенхейза .
Для получения дополнительной информации о приведенном выше миксине ЧИТАЙТЕ ЗДЕСЬ .
источник