У меня есть мобильный отзывчивый сайт, основанный на Twitter Bootstrap, который имеет разные font-family
для разных элементов, например
.body {
font-family: Comic Sans;
}
.header {
font-family: Arial;
}
.main {
font-family: Helvetica;
}
.footer {
font-family: sans-serif;
}
#someOtherElement {
font-family: Times New Roman;
}
Каким будет правильный способ переопределить шрифт каждого элемента на веб-сайте с общим семейством шрифтов, скажем, Open Sans
но только для мобильных устройств?
NB Я изначально думал об использовании Media Queries
но ширина новых телефонов и планшетов была такой же высокой или даже выше, чем у ПК-мониторов, поэтому использование медиа-запросов не сработало.
Кроме того, я открыт для решений, требующих JavaScript
но предпочел бы использовать метод CSS
для достижения этой отзывчивости шрифта.
К сожалению, с большими фрагментами устройств для Android, решения только для медиа-запросов близки к невозможным. Несколько трюков вы можете попробовать здесь, но в конечном счете, JS - это ваша самая безопасная ставка.
Вы можете попробовать создать сложную систему Media Query, описанную более подробно в Css Tricks, но это просто добавит сложности кода. Если вы используете SCSS, который может быть написан немного чище для ваших потребностей в исходном коде, но в конце вывод будет таким же.
Модернизатор! имеют функцию для обнаружения событий касания, которые будут держать ваш css более чистым, но ноутбуки с сенсорным экраном используются все больше и больше с каждым днем, и это может создать некоторые ошибки в будущем на этих устройствах.
И безопасная ставка немного JS, которая добавляет, например, mobile
класс к тегу вашего тела, чтобы вы могли контролировать свой css с ним с меньшим количеством строк кода:
// Check for userAgent
if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) {
// set the body class
document.getElementsByTagName('body')[0].className+='mobile'
}
.body {
font-family: Comic Sans;
}
.header {
font-family: Arial;
}
.main {
font-family: Helvetica;
}
.footer {
font-family: sans-serif;
}
#someOtherElement {
font-family: Times New Roman;
}
.mobile .body,
.mobile .header,
.mobile .main,
.mobile .footer,
.mobile #someOtherElement {
font-family: 'Open Sans', sans-serif;
}
Вы можете найти более обширную проверку регулярного выражения JS/jQuery на detectmobilebrowsers.com
Надеюсь, поможет
!important
вhtml
элемент но да