Как использовать другое семейство шрифтов для мобильных пользователей?

-1

У меня есть мобильный отзывчивый сайт, основанный на 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 для достижения этой отзывчивости шрифта.

  • 0
    Зачем тебе это делать? Специфика здесь имеет значение. Медиа-запросы будут прекрасно работать, если вы используете правильные измерения, но не зная, почему вы хотите это сделать, кто знает, решит ли это то, что вы хотите. Похоже, вы предоставляете разные шрифты из соображений совместимости, и в этом случае у вас просто должны быть запасные шрифты.
  • 0
    Ну, клиент, которому принадлежит сайт, хочет этого, по-видимому. Я попытался убедить его просто добавить глобальный общий шрифт для всего сайта как на ПК, так и на мобильном устройстве, что было бы хорошей идеей с точки зрения UI / UX, а также простым в реализации, так как я мог бы просто использовать тег !important в html элемент но да
Показать ещё 17 комментариев
Теги:
responsive
fonts

1 ответ

1
Лучший ответ

К сожалению, с большими фрагментами устройств для Android, решения только для медиа-запросов близки к невозможным. Несколько трюков вы можете попробовать здесь, но в конечном счете, JS - это ваша самая безопасная ставка.

  1. Вы можете попробовать создать сложную систему Media Query, описанную более подробно в Css Tricks, но это просто добавит сложности кода. Если вы используете SCSS, который может быть написан немного чище для ваших потребностей в исходном коде, но в конце вывод будет таким же.

  2. Модернизатор! имеют функцию для обнаружения событий касания, которые будут держать ваш css более чистым, но ноутбуки с сенсорным экраном используются все больше и больше с каждым днем, и это может создать некоторые ошибки в будущем на этих устройствах.

  3. И безопасная ставка немного 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

Надеюсь, поможет

Ещё вопросы

Сообщество Overcoder
Наверх
Меню