Есть ли способ получить ширину устройства пользователя, а не ширину области просмотра, с помощью javascript?
Медиа-запросы CSS предлагают это, как я могу сказать
@media screen and (max-width:640px) {
/* ... */
}
и
@media screen and (max-device-width:960px) {
/* ... */
}
Это полезно, если я ориентируюсь на смартфоны в альбомной ориентации. Например, в iOS объявление max-width:640px
будет нацелено как на альбомный, так и на портретный режимы, даже на iPhone 4. Насколько я могу судить, это не относится к Android, поэтому использование device-width в этом случае успешно нацелено на обе ориентации, без ориентации на настольные устройства.
Однако , если я вызываю привязку javascript на основе ширины устройства, мне кажется, что я ограничен тестированием ширины области просмотра, что означает дополнительный тест, как показано ниже.
if ($(window).width() <= 960 && $(window).height <= 640) { /* ... */ }
Мне это не кажется элегантным, учитывая намек на то, что ширина устройства доступна для css.
Modernizr
может помочь вам сделать это «чистым и универсальным способом»: stackoverflow.com/questions/25935686/… . Что касается 1-го комментария: вы можете захотеть погуглить "Modernizr vs <otherLib> media query", чтобы узнать, что лучше всего подходит для вашего варианта использования