Как смоделировать размеры реального мира в CSS?

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

По этой причине я прошу пользователя указать размеры его дисплея, чтобы рассчитать правильный ppi. Однако это работает не на всех устройствах.

Обновлено: Это код, который у меня есть:

var dpr = window.devicePixelRatio;
var inch = 25.4;

var pixelHeight = screen.height * dpr;
var pixelWidth = screen.width * dpr;

function calculatePpi(monitorDiagonal) {
    return (Math.sqrt(Math.pow(pixelWidth, 2) + Math.pow(pixelHeight, 2))) / monitorDiagonal;
}

function mmToPx(mm) {
    return  (((mm / inch) * calculatePpi(monitorDiag)));
}

«Однако это работает не на всех устройствах». вопрос работает не на всех устройствах? Поделитесь с нами своим кодом ...

Luca Kiebel 31.05.2018 22:33

@Luca Я думаю, что Кодан пытается создать линейку, и все, что он просит, это сделать ее горячо, установив ее на 100mm - точнее, на 100mm на всех устройствах.

Roko C. Buljan 31.05.2018 22:37

Что ж, это невозможно по причинам, которые вы указали в своем сообщении. ppi.

Joe Warner 31.05.2018 22:38

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

Havenard 31.05.2018 22:38

@ RokoC.Buljan Это именно то, что я пытаюсь сделать.

Codan 31.05.2018 22:39

Вы пробовали посмотреть, как это делает mydevice.io? Видимо может угадать ваш dpi.

Havenard 31.05.2018 22:40

Тогда это может быть дубликат stackoverflow.com/questions/36600114/…

Roko C. Buljan 31.05.2018 22:41

@JoeWarner Ну, а как же тогда линейка это работает?

Codan 31.05.2018 22:42

@Codan Так называемые абсолютные единицы измерения (см, мм, дюйм, pt и pc) означают в CSS то же самое, что и везде, но только если ваше устройство вывода имеет достаточно высокое разрешение. На лазерном принтере 1 см должен быть ровно 1 сантиметр. Но на устройствах с низким разрешением, таких как экраны компьютеров, CSS этого не требует. И действительно, результат имеет тенденцию отличаться от одного устройства к другому.

Joe Warner 31.05.2018 22:45

Я бы сказал, что код mydevice.io содержит все, что вам нужно, по-видимому, у них есть база данных с информацией для каждого устройства, и они были достаточно любезны, чтобы сделать эти таблицы доступными.

Havenard 31.05.2018 22:51

@Havenard хорошая находка, но опять же, похоже, не работает правильно при использовании внешнего монитора, подключенного к розетке ...

Roko C. Buljan 31.05.2018 23:01
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
11
83
1

Ответы 1

Используйте высоту и ширину css.

Для высоты и ширины можно задать значение «Авто» (это значение по умолчанию. Означает, что браузер вычисляет высоту и ширину), или указать значения длины, такие как пиксели, см и т. д., Или в процентах (%) содержащего блока. .

Итак, если, например, вы хотите показать элемент шириной 35 см и высотой 50 см, вы можете установить его с помощью css:

#example {
  height: 50cm;
  width: 35cm;
}

Удачи!


Кажется, что хотя это и должно работать, но это недостаточно точно. См. Комментарии.

Вы хотите сказать, что высота 50cm будет соответствовать реальной 50cm на всех устройствах?

Roko C. Buljan 31.05.2018 22:40

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

A. Meshu 31.05.2018 22:42

Нет, я просто спрашиваю вас и проясняю, что вы правильно поняли вопрос, поскольку вы не указали в своем ответе, например: «Да, вы можете быть уверены, что 1cm или 10mm будут такими же, как в реальном мире - на всех устройствах». - это то, что я никогда не исследовал, но думал о нем пару дней назад: D

Roko C. Buljan 31.05.2018 22:46

Я поддержал ваш комментарий, так как вы заставили меня снять метр и измерить экран. Работает с 5 см (-:

A. Meshu 31.05.2018 22:50
github.com/w3c/csswg-drafts/issues/614 Итак, у меня есть два экрана, 1920 пикселей - моего ноутбука и внешнего монитора - и я сделал два одинаковых jsBin с DIV шириной 10 см. И нет. Они не одного размера. На моем ноутбуке DIV почти на 3 см (реальный сантиметр) меньше, что уже является большой проблемой, если вы спросите меня.
Roko C. Buljan 31.05.2018 22:58

5см минус 1,5мм. Я снова читаю документы. Может дело не только в css.

A. Meshu 31.05.2018 23:14

Другие вопросы по теме