#javascript #html #css #browser-feature-detection
#javascript #HTML #css #браузер-обнаружение функций
Вопрос:
Я хочу выбрать файл CSS, используя переменную из фрагмента JS. Я работаю над обнаружением функций для выбора определенного CSS. Вот код, который я использую для определения разрешения экрана. Я хотел бы использовать либо «RES», либо «device» для выбора внешнего CSS. Спасибо.
function hasTouch() {
return Modernizr.touch;
}
var RES = window.screen.availWidth
function detectDevice() {
if (hasTouch()) {
if (RES < 600) {
device = 'phone';
} else {
device = 'tablet';
}
}
if (RES > 600 amp;amp; RES < 1025) {
device = 'Medium';
}
if (RES > 1025 amp;amp; RES < 1367) {
device = 'Large';
}
if (RES > 1367) {
device = 'XL';
}
return device;
}
document.querySelector('#device').innerHTML = detectDevice();
Комментарии:
1. Вам следует изучить возможность использования медиазапросов CSS , которые можно легко выбирать в зависимости от ширины. Touch or not сейчас немного менее стандартизирован, но вы можете найти способ.
2. (a) материал, основанный на разрешении, намного лучше выполняется с помощью медиазапросов CSS. Они предназначены явно для этого. (b) Обнаружение устройств на основе касания является рискованным — у меня ноутбук с сенсорным экраном, и мне бы не хотелось, чтобы на этом экране отображался мобильный вид.
3. Надеюсь, у вас есть код для изменения размера
4. @Huangism … кстати, о том, что автоматически обрабатывается медиа-запросами. 🙂
5. Запросы CSS media, этот метод сделает его занозой в заднице, учитывая типы существующих устройств. iPhone против Surface….
Ответ №1:
Используйте mediaQueries, вам даже не понадобится Javascript.
HTML
<div id="device"></div>
CSS
#device:before {
content: "phone";
}
@media (min-width: 600px) {
#device:before {
content: "Medium";
}
}
@media (min-width: 1025px) {
#device:before {
content: "Large";
}
}
@media (min-width: 1367px) {
#device:before {
content: "XL";
}
}
Что касается touch, я бы хотел, чтобы вы могли использовать mediaQueries для этого, но это невозможно (пока). Используйте Modernizr
CSS
html.touch #device:after {
content: " touch";
}
html.no-touch #device:after {
content: " no-touch";
}