Можем ли мы точно отобразить дюймы на экране CSS? - PullRequest
0 голосов
/ 07 апреля 2020

Хорошо. Это старый, но веселый.

Я знаю, что у нас есть 1in физическая единица, сопоставленная с 96px на экране dpi. Это отображение появилось еще в 90-х годах, когда мониторы / экраны имели гораздо более низкое разрешение. Это было другое время. Интернет тогда был утилитой «только для настольных компьютеров», и, как можно было бы предположить, сегодняшние реализации не поспевают за новым сетевым ландшафтом .

Около 2020 года.

I хочу объявить css переменную --inch на :root моей веб-страницы и отобразить ее в абсолютных дюймах для различных устройств с помощью медиазапросов. Я могу сделать это на устройствах, которыми я владею, например, так:

/* css */
:root {
   --inch: 130px; /* this value is from my Macbook Pro 2017 for example. */
}

.square {
  width: var(--inch);
  height: var(--inch);
  background: red;
}

А затем с помощью линейки я измерил размеры квадрата на экране. Я даже сделал codepen для этого, чтобы протестировать и сравнить абсолютный дюйм с единицей in, поддерживаемой вашим браузером / машиной.

Сейчас. Как мы должны go настроить --inch переменную для мобильных устройств, часов, iPad, настольных компьютеров и, если возможно, для телевизоров и проекторов?


ОБНОВЛЕНИЕ 1: Немного прибил прицел.

Следующие media-queries охватывают широкий выбор экранов, доступных на рынке. Этот список за 2013 год ( кредиты ) и может быть не исчерпывающим, но может быть улучшен:

@media only screen and (min-width: 320px) {

  /* Small screen, non-retina */

}

@media
only screen and (-webkit-min-device-pixel-ratio: 2)      and (min-width: 320px),
only screen and (   min--moz-device-pixel-ratio: 2)      and (min-width: 320px),
only screen and (     -o-min-device-pixel-ratio: 2/1)    and (min-width: 320px),
only screen and (        min-device-pixel-ratio: 2)      and (min-width: 320px),
only screen and (                min-resolution: 192dpi) and (min-width: 320px),
only screen and (                min-resolution: 2dppx)  and (min-width: 320px) { 

  /* Small screen, retina, stuff to override above media query */

}

@media only screen and (min-width: 700px) {

  /* Medium screen, non-retina */

}

@media
only screen and (-webkit-min-device-pixel-ratio: 2)      and (min-width: 700px),
only screen and (   min--moz-device-pixel-ratio: 2)      and (min-width: 700px),
only screen and (     -o-min-device-pixel-ratio: 2/1)    and (min-width: 700px),
only screen and (        min-device-pixel-ratio: 2)      and (min-width: 700px),
only screen and (                min-resolution: 192dpi) and (min-width: 700px),
only screen and (                min-resolution: 2dppx)  and (min-width: 700px) { 

  /* Medium screen, retina, stuff to override above media query */

}

@media only screen and (min-width: 1300px) {

  /* Large screen, non-retina */

}

@media
only screen and (-webkit-min-device-pixel-ratio: 2)      and (min-width: 1300px),
only screen and (   min--moz-device-pixel-ratio: 2)      and (min-width: 1300px),
only screen and (     -o-min-device-pixel-ratio: 2/1)    and (min-width: 1300px),
only screen and (        min-device-pixel-ratio: 2)      and (min-width: 1300px),
only screen and (                min-resolution: 192dpi) and (min-width: 1300px),
only screen and (                min-resolution: 2dppx)  and (min-width: 1300px) { 

  /* Large screen, retina, stuff to override above media query */

}

ОБНОВЛЕНИЕ 2:

Обрабатывается следующий пункт Например, отображение пикселей в --inch для всех MBP сетчатки в 2017 году.

@media (resolution: 192dpi) and (-webkit-device-pixel-ratio: 2) {
  :root {
    --inch: 130px;
  }
}

.square {
  width: var(--inch);
  height: var(--inch);
  background: orangered;
}

Где переменная --inch подразумевает измерение реального физического дюйма. Обратите внимание, что мы не используем min / max для медиа-запросов, чтобы вписаться в диапазон экранных dpis. Это отображение точно для MBP'17 только с возвращенным dpi 192 и dpr 2.

...