Отзывчивые советы по веб-дизайну, лучшие практики и методы динамического масштабирования изображений - PullRequest
17 голосов
/ 08 декабря 2011

Я надеюсь, что этот вопрос не будет закрыт из-за того, что он слишком широк, но мне было интересно узнать об адаптивном / адаптивном веб-дизайне, то есть одном веб-сайте для всех браузеров, всех устройств.

Каков наилучший способ реализации такого сайта, когда речь идет о структуре и макете?

Я пытаюсь прочитать об этом, поскольку мобильные веб-сайты сейчас важны и будут существовать некоторое время, но я не могу найти список советов и рекомендаций, и я решил, что если такой ресурс будет доступен здесь на SO, тогда мы все могли бы извлечь выгоду.

Еще одна вещь, которая меня заводит, это как происходит динамическое масштабирование изображения?

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

Я с нетерпением жду возможности прочитать мнения и ответы людей, даже если это не просто ссылки на учебные материалы в Интернете, которых я не нашел.

Ответы [ 3 ]

24 голосов
/ 08 декабря 2011

1.Один веб-сайт, все браузеры.

Как упомянул @Tak, ответы здесь - это «Прогрессивное улучшение» и «Изящная деградация».Однако определения, которые он дал, не совсем верны.Вот правильные:

' Прогрессивное улучшение ' ( см. Ссылку ) означает, что вы сначала кодируете для старого браузера (IE6 / 7 с / без JavaScript - этохорошая отправная точка) с использованием проверенных и проверенных технологий, таких как HTML4 и CSS1, а затем добавьте улучшение по мере прохождения тестирования в более современных браузерах, вплоть до Chome и Safari на мобильных устройствах, которые поддерживают CSS3 и большую часть HTML5.Таким образом, вы стремитесь предоставить любому браузеру наилучшую возможную комбинацию поддерживаемых в нем функций (кстати, он никогда не будет идеальным, поэтому имейте в виду правило 80/20 , чтобы избежать запуска проекта вземля).

' Изящная деградация ' ( см. ссылку ) - это то же самое, но в обратном направлении, это более ленивый способ сделать это.Вы начинаете создавать свой сайт с использованием современного браузера, а затем применяете «исправления» и «исправления», пока они не станут приемлемыми для старых браузеров.В конечном итоге это создает гораздо больше работы, чем правильное планирование с самого начала, и что обычно происходит с таким подходом, так это то, что разработчик / заинтересованная сторона в какой-то момент сдастся (т. Е. Какого черта?работая в IE6 / 7 - я просто удалим их из области видимости)

2.Лучший способ стандартизировать макет

Лично я советую вам использовать стандартную раскладку для мобильных и настольных устройств и использовать комбинацию БОЛЬШИХ шрифтов (чтобы они были видны на крошечном мобильном устройстве).экран) и маленькие (чтобы пользователи с настольным браузером могли прочитать все детали) на рабочем столе размером 900-1000 пикселей.

Этот сайт является примером:

http://www.valuetrader.net

Когда я открываю его в браузере рабочего стола, я вижу много деталей, но когда я в путии используйте на своем смартфоне всю критически важную информацию (т.е. я должен КУПИТЬ или ПРОДАТЬ акцию?), отображенную очень крупным шрифтом, который легко читается на моем крошечном экране.*

Эта часть вопроса теперь фактически изменилась на «Каков наилучший способ реализации макета?» .

На данный момент (и за последние несколько летдоступна поддержка CSS3) стандартный подход к разработке макетов для нескольких устройств заключается в использовании так называемого адаптивного макета, основанного на медиазапросах .Существует множество CSS-фреймворков , которые помогут пользователям начать работу с мобильными макетами.

Основной принцип «отзывчивого» дизайна заключается в том, что прокрутка на мобильных устройствах делает вертикальное пространство практически бесконечным, поэтому вы ограничены только горизонтальным пространством.Таким образом, вы должны убедиться, что по мере уменьшения размера экрана вы позволяете потоку страниц заполнять все доступное горизонтальное пространство, а любые навигационные панели или горизонтальные элементы сгибаются вертикально так, чтобы элементы располагались друг над другом, а не с использованием пространства.по горизонтали.

Стандартный способ проверить «отзывчивость» сайта - перетащить боковую часть окна браузера, чтобы уменьшить доступную ширину.

enter image description here

Лучшим способом является использованиеИнструменты разработчика, например, Chrome имеет кнопку для переключения режима устройства, вот пример использования Stackoverflow:

enter image description here

Пример медиазапроса для указаниямакет для элемента #site-banner на настольных и мобильных экранах будет выглядеть следующим образом:

/* DESKTOP SUPPORT */
#site-banner { width: 1000px; background: #fff; margin: 0px auto; height: 120px; }

/* TABLET SUPPORT - rules apply below 1000px width */
@media all and (max-width: 1000px) {
    #site-banner { width: 700px; }
}

/* PHABLET & MOBILE SUPPORT - rules apply below 700px width */
@media all and (max-width: 700px) {
    #site-banner { width: 480px; height: auto; }
}

/* MOBILE SUPPORT - rules apply below 480px width */
@media all and (max-width: 480px) {
    #site-banner { width: auto; height: auto;}
}

3.Как выполняется динамическое масштабирование изображения?

Мобильное устройство делает многое для вас, поэтому обычно вам просто нужно понять, как оно работает. По сути, когда вышли первые мобильные браузеры, они должны были убедиться, что сайты, которые уже работали для настольных браузеров, работали и на мобильном телефоне (иначе никто не использовал бы их смартфон для просмотра веб-страниц), поэтому им пришлось придумать умные способы определения ширины сайта и изменения его размера до разрешения экрана, которое у них было доступно.

Например, мой сайт ' www.desalasworks.com ' кодируется до ширины 900 пикселей, но он отлично работает, если его уменьшить на небольшом экране размером 320 пикселей (изображения на странице автоматически передискретизировал , используя различные методы - такие как выборка ближайшего соседа и бикубическая интерполяция , и шрифты заменяли, по возможности, на собственные шрифты). Что касается выборки изображений, если вы когда-либо ущипнули фотографию на своем смартфоне для «увеличения» и «уменьшения», вы понимаете, о чем я говорю.

Как правило, вам не нужно беспокоиться о CSS для правильной повторной выборки изображений. Я заметил, что иногда они немного забавны при использовании процентной ширины, поэтому придерживайтесь пикселей, если это так, чтобы браузеру было легче определить, где пункты по отношению друг к другу. Обратите внимание, что вы МОЖЕТЕ определенно определить мобильный браузер и установить ширину вашего сайта в 320px, и все в нем должно быть соответствующим образом встроено, но на самом деле это не обязательно, чтобы иметь рабочий сайт на мобильном устройстве, и это заставит вас поддерживать 2 сайта, мобильный сайт и сайт для настольных компьютеров (что некоторые компании рады сделать).

4. Проценты / фиксированная ширина.

Лично я склонен использовать фиксированную ширину по центру экрана (используя CSS margin: 0px auto), я не использовал процентную ширину в течение ДЛИТЕЛЬНОГО времени, в основном потому, что это немного кошмар для стандартизации макета. Если вы используете процентную ширину, вам, в основном, придется проводить гораздо больше тестов, поэтому я склонен отклоняться от них.

Имейте в виду, что это только мое мнение, некоторые гуру-репортеры будут ругаться на ширину в процентах почти на все, я просто не продан идее пожертвовать предсказуемостью макета ради того, что я считаю незначительной выгодой , Но потом я пришел из опыта создания настольных веб-приложений, и я бы, возможно, подумал бы иначе, если бы я просто сосредоточился на мобильном вебе (где горизонтальное пространство стоит дорого, а макеты, как правило, проще).

3 голосов
/ 08 декабря 2011

Вы правы в отношении процентов.

Как элементы искусства, привычка состоит в том, чтобы (с помощью CSS) установить процентную ширину на изображении и настроить его отображение на блокировку.

Естьпара методов для изменения разрешения изображений в зависимости от размера экрана клиента, например responseive-images.js .Я не думаю, что есть лучший ответ о том, как решить эту проблему.

Если вы действительно заинтересованы в адаптивном дизайне, я настоятельно рекомендую Отзывчивый веб-дизайн Этана Макотта .

1 голос
/ 08 декабря 2011

Два умных слова на данный момент: изящное ухудшение и прогрессивное улучшение , и я фанат последнего.Изящная деградация означает, что вы прячете и / или изменяете размеры элементов на странице для просмотра на экране мобильного устройства.Прогрессивное улучшение означает, что вы пишете код для мобильного браузера, а затем добавляете биты, если они используют что-то большее.Последний вариант лучше, потому что он предотвращает загрузку гигантскими изображениями мобильных браузеров и кучу включений, которые он никогда не будет использовать, а пропускная способность мобильной связи очень высока.

Я использую 320andup , чтоотличный способ оформить веб-страницу размером 320px для мобильных браузеров, а затем использовать другие разрешения для планшетов, нетбуков, ПК и смехотворно больших дисплеев Mac.Веб-страницы отлично смотрятся во всех разрешениях.

Я никогда не использую проценты.Я оформляю веб-страницу с фиксированной шириной 320 пикселей, фиксированной шириной 480 пикселей и т. Д., Чтобы точно знать, как она будет выглядеть на каждом устройстве.Я делаю все масштабирование изображений на сервере с переменными в URL - сервер кэширует изображения с измененным размером для последующих загрузок страницы.Таким образом, мои блестящие логотипы Web 2.0 крошечные для мобильных устройств, но большие на большом экране.Это еще одна причина не использовать проценты!

...