HTML и CSS предоставляют способы сделать это без JavaScript .
Согласно приведенной выше ссылке, вы можете указать разные таблицы стилей для разных устройств, используя:
<link rel="stylesheet" href="screen.css" media="screen"/>
<link rel="stylesheet" href="handheld.css" media="handheld"/>
Или, если вы хотите использовать одну таблицу стилей:
@media screen { /* rules for computer screens */ }
@media handheld { /* rules for handheld devices */ }
или @import
:
@import "screen.css" screen; @import "handheld.css" handheld;
Мобильный портал, вероятно, является наилучшим вариантом, так как мобильные пользователи, вероятно, имеют разные шаблоны серфинга и разное использование (ищут разную информацию, используют разные функции и т. Д.) Для сайта. Но если вы хотите поддерживать единый портал, просто используйте то, что уже предусмотрено в спецификациях HTML и CSS.
Примечание:
Если вы придерживаетесь шаблона проектирования MVC , тогда будет относительно легко создать отдельное приложение и отображать разные представления для пользователя в зависимости от того, получают ли они доступ к сайту через http://myapp.com
или http://mobile.myapp.com
. , Это означает, что ваши контроллеры и модели остаются прежними, и вам просто нужно создать отдельные представления для частей приложения, к которым будут иметь доступ мобильные пользователи. Тот же метод будет использоваться для создания RSS-каналов или реализации REST API.
Edit:
Проблема новых несовместимых мобильных браузеров немного сложнее. С одной стороны, причина, по которой они отображают обе таблицы, заключается в том, что они чувствовали, что разработчики веб-сайтов слишком много болтали / урезали свои сайты для мобильных пользователей (по уважительной причине, так как многие старые, менее продвинутые мобильные браузеры все еще используются) и мобильных устройств. браузеры догоняют настольные браузеры по возможностям рендеринга. Но OTOH, разница в разрешении и размер экрана все еще проблема.
Итак, я бы использовал 2 комплекта электронных таблиц, но дизайн для 3 комплектов пользователей:
- пользователи рабочего стола: загружает
screen.css
только
- новых мобильных пользователей: загрузки
screen.css
и handheld.css
- старые мобильные пользователи: загружает
handheld.css
только
Каскадная природа CSS означает, что при тщательном тестировании вы сможете удовлетворить все 3 демографические характеристики. Может быть несколько приемов обнаружения браузера , которые вы могли бы применить, но это не кажется необходимым.