Соотношение пикселей устройства и пиксель CSS на разных размерах экрана [дубликат]

Другие два варианта:

Базовый пакет:

df <- unstack(dat1, form = value ~ numbers)
rownames(df) <- unique(dat1$name)
df

sqldf package:

library(sqldf)
sqldf('SELECT name,
      MAX(CASE WHEN numbers = 1 THEN value ELSE NULL END) x1, 
      MAX(CASE WHEN numbers = 2 THEN value ELSE NULL END) x2,
      MAX(CASE WHEN numbers = 3 THEN value ELSE NULL END) x3,
      MAX(CASE WHEN numbers = 4 THEN value ELSE NULL END) x4
      FROM dat1
      GROUP BY name')
138
задан ilyo 9 January 2012 в 10:34
поделиться

4 ответа

Короткий ответ

Соотношение пикселей устройства - это соотношение между физическими пикселями и логическими пикселями. Например, iPhone 4 и iPhone 4S сообщают о соотношении пикселей устройства в 2, потому что физическое линейное разрешение удваивает логическое линейное разрешение.

  • Физическое разрешение: 960 x 640
  • Логическое разрешение: 480 x 320

Формула:

linres_p/linres_l [/g15]

Где:

linres_p [/g16] является физическим линейным разрешением

и:

linres_l [/g17] является логическим линейным разрешением

Другие устройства сообщают о различных соотношениях пикселей устройства, включая нецелые. Например, Nokia Lumia 1020 сообщает 1.6667, Samsumg Galaxy S4 сообщает 3, а Apple iPhone 6 Plus сообщает 2.46 (источник: dpilove ) . Но это ничего не меняет в принципе, так как вы никогда не должны проектировать ни одно конкретное устройство.

Обсуждение

«пиксель» CSS даже не определен как «один элемент изображения на некоторый экран ", а скорее как нелинейное угловое измерение угла наблюдения 0.0213° [/g18], которое составляет приблизительно 1/96 [/g19] дюйма на расстоянии вытянутой руки. Источник: Абсолютные длины CSS

Это имеет большое значение, когда дело доходит до веб-дизайна, например, для подготовки изображений изображений высокой четкости и тщательного применения различных изображения при разных соотношениях пикселей устройства. Вы не захотите заставить низкоуровневое устройство загружать изображение с очень высоким разрешением, только для его локализации.

Если вы застряли с растровыми изображениями, чтобы соответствовать различным соотношениям пикселей устройства, вы должны использовать CSS Media Queries для предоставления различных наборов ресурсов для разных групп устройств. Объедините это с хорошими трюками, такими как background-size: cover , или явно установите процентные значения background-size .

Пример

#element { background-image: url('lores.png'); }

@media only screen and (min-device-pixel-ratio: 2) {
    #element { background-image: url('hires.png'); }
}

@media only screen and (min-device-pixel-ratio: 3) {
    #element { background-image: url('superhires.png'); }
}

Таким образом, каждый тип устройства загружает только правильный ресурс изображения. Также имейте в виду, что блок px в CSS всегда работает с логическими пикселями.

Случай для векторной графики

Поскольку появляется все больше и больше типов устройств, становится сложнее предоставить все из них имеют адекватные растровые ресурсы. В CSS запросы на медиа в настоящее время являются единственным способом, а в HTML5 элемент изображения позволяет использовать разные источники для разных мультимедийных запросов, но поддержка по-прежнему не на 100%, поскольку большинство веб-разработчиков по-прежнему вынуждены поддержка IE11 еще некоторое время (источник: caniuse ) .

Если вам нужны четкие изображения для значков, линий, элементов дизайна, которые не являются фотографии, вы должны начать думать о SVG, который прекрасно масштабируется для всех разрешений.

117
ответ дан Alan W. Smith 22 August 2018 в 08:30
поделиться
  • 1
    thanx, поэтому, если я создам файл css для iphone 4 и даю страницы CSS-измерения 480 x 320 и width=device-width, я буду растягиваться до полного экрана? – ilyo 9 January 2012 в 10:44
  • 2
    В точку. И если вы используете изображения с высоким разрешением для background-image, вы можете комбинировать его с -webkit-background-size:50%, так как в противном случае размер изображения будет соответствовать количеству пикселей logical . w3.org/TR/2002/WD-css3-background-20020802/#background-size – Anders Tornblad 9 January 2012 в 12:41
  • 3
    Вы не можете. Вам нужно будет компоновать свои элементы с помощью логических пикселей и использовать изображения с более высоким разрешением и трюк background-size для оптимального использования дисплея. – Anders Tornblad 9 January 2012 в 14:37
  • 4
    Я понятия не имею о корпусе Android. Возможно, разные производители имеют разные идеи о логических и физических пикселях ... Попробуйте сами на нескольких сотнях разных устройств ... Или просто предположите, что значения, указанные устройством, верны. Не разрабатывайте для определенных устройств, а создавайте диапазоны значений, используя медиа-запросы! – Anders Tornblad 10 January 2012 в 10:52
  • 5
    @atornblad Я думаю, что это должно быть «.. между физическими и логическими пикселями». – Ilya Buziuk 18 December 2014 в 13:09

Соотношение пикселов устройства == Коэффициент пикселя CSS

В мире веб-разработки отношение пикселя устройства (также называемое соотношением пикселей CSS) определяет, как CSS-разрешение устройства интерпретируется CSS.

CSS-браузер браузера вычисляет логическое (или интерпретируемое) разрешение устройства по формуле:

formula [/g5]

Например:

Apple iPhone 6s

  • Фактическое разрешение: 750 x 1334
  • Коэффициент пикселя CSS: 2
  • Логическое разрешение:

formula [/g6]

При просмотре веб-страницы, CSS будет считать, что устройство имеет экран разрешения [37] и разрешение будет реагировать так, как если бы экран был 375x667 . Но отображаемые элементы на экране будут в два раза более острыми, чем фактический экран 375x667, потому что на физическом экране в два раза больше физических пикселей.

Некоторые другие примеры:

Samsung Galaxy S4

  • Фактическое разрешение: 1080 x 1920
  • Коэффициент пикселя CSS: 3
  • Логическое разрешение:

formula [/g7]

iPhone 5s

  • Фактическое разрешение: 640 x 1136
  • Коэффициент пикселей CSS: 2
  • Логическое разрешение:

formula [/g8]

Почему существует коэффициент пикселя устройства?

Причина, по которой отношение пикселов CSS был создан потому, что, поскольку экраны телефонов получают более высокие разрешения, если у каждого устройства по-прежнему имеется коэффициент пикселя CSS, равный 1, то веб-страницы будут казаться слишком маленькими, чтобы видеть.

Типичный полноэкранный настольный монитор составляет примерно 24 дюйма на Разрешение 1920x1080. Представьте, что этот монитор был сокращен примерно до 5 дюймов, но имел такое же разрешение. Просмотр вещей на экране будет невозможно, потому что они будут такими маленькими. Но производители сейчас выпускают экраны с разрешением 1920x1080.

Таким образом, соотношение пикселей устройства было изобретено производителями телефонов, чтобы они могли продолжать нажимать разрешение, резкость и качество экранов телефонов, не создавая элементов на экране слишком мало, чтобы видеть или читать.

Вот инструмент, который также сообщает вам плотность пикселей вашего текущего устройства:

http://bjango.com/articles / мин-устройства пиксел соотношение /

127
ответ дан Jake Wilson 22 August 2018 в 08:30
поделиться
  • 1
    Статья в Википедии была удалена. :-( Эта информация доступна где-нибудь еще? – Simon East 10 September 2014 в 15:06
  • 2
    Таким образом, изображения растягиваются, чтобы соответствовать высоким dpi или физическим пикселям. Скажем, изображение 300 пикселей, логическое / css px равно 300, но физические px - 600, тогда установка ширины изображения означает, что изображение растянулось. Я также слышал, что иногда изображения показывают меньше на высоких dpi, почему? – Muhammad Umer 9 June 2015 в 22:31
  • 3
    @MuhammadUmer В вашем примере изображение 300px с width: 100% будет представлять собой полную ширину дисплея. Он не будет растянут. Экран & quot; думает & quot; это дисплей на 300 пикселей. Изображения отображаются в соответствии с логическим / css разрешением. Теперь в вашем примере вы можете вместо этого использовать изображение 600 пикселей. Это будет полная ширина логического дисплея 300 пикселей, но поскольку ваш дисплей является родным размером 600 пикселей, изображение будет выглядеть в два раза быстрее, чем ваше оригинальное изображение 300 пикселей. Большее изображение, но оно выглядит лучше, поскольку на дисплее есть все эти дополнительные пиксели. Это идея, стоящая за «Retina Displays». – Jake Wilson 6 January 2016 в 19:37
  • 4
    @JakeWilson: Это новая тема для меня, и я не совсем понимаю ее. В примере соотношение пикселей CSS = 2. Изображение составляет 300 физических пикселей в ширину, в css мы устанавливаем его на 100%, поэтому он будет 300 пикселей в ширину. Поскольку отношение CSS px равно 2, оно станет 600 физических пикселей в ширину и его ширина будет точно соответствовать ширине дисплея. Но почему это не растягивается, если его первоначальная ширина составляет 300 физических пикселей, а теперь это 600 физических пикселей? Я понимаю, что его качество ниже, потому что оно физически растянулось от 300 до 600 пикселей. Можете ли вы подробнее рассказать об этом, пожалуйста? – Peter 19 March 2016 в 07:48
  • 5
    @Anuj Я не знаю, и на самом деле не имеет значения, как это определено в аппаратном / программном обеспечении. Один из них рассчитывается из другого в любом случае, когда вы его разрезаете. – Jake Wilson 10 July 2016 в 01:04

https://developer.mozilla.org/en/CSS/Media_queries#-moz-device-pixel-ratio

-moz-device-pixel -ratio Дает количество пикселей устройства на пиксель CSS.

это почти самоочевидно. число описывает отношение количества «реальных» пикселей (физических пикселов экрана) для отображения одного «виртуального» пикселя (размер устанавливается в CSS).

8
ответ дан oezi 22 August 2018 в 08:30
поделиться
  • 1
    как узнать, использует ли устройство все измерения виртуального пикселя и что это такое? и как использовать пиксели устройства в измерениях css, а не виртуальные? – ilyo 9 January 2012 в 10:56
  • 2
    к сожалению, вам нужно это сделать или протестировать на реальном устройстве :( – netalex 19 February 2016 в 10:53

Статья Бориса Смуса Высокие изображения DPI для переменной плотности пикселей имеют более точное определение соотношения пикселей устройства: количество пикселов устройства на пиксель CSS является хорошим приближением, но не всей историей.

Обратите внимание, что вы можете получить DPR, используемый устройством с window.devicePixelRatio.

7
ответ дан Sam Dutton 22 August 2018 в 08:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: