“Фичи” для iPhone/iPad на вашем сайте

11.01.2013
Share on FacebookShare on TwitterShare on GooglePlusShare on Linkedin
Автор:

Сейчас iPhone и iPad, далее iГаджеты, уже давно перестали быть чем-то новым и необычным. У веб разработчиков, в связи с этим, прибавилось задач, связанных с реализацией функционала под эти устройства.

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

Прокрутка пальцем

Прокрутка пальцем — неотъемлемая часть функционала iГаджетов, ведь она добавляет удобства и простоты в пользовании. Но насколько простой при всем при этом является реализация? Необходимые элементы решения данной задачи это библиотека jQuery и два плагина caroufredsel и jQuery Touchwipe Plugin.

К примеру, нам нужно реализовать карусель с логотипами, которые можно прокрутить. На самом, деле, процесс реализации не сложен.

 /* Carousel with wipe */
(function ($) {
  Drupal.behaviors.iDevelsPartnerSlide = {
    attach: function (context, settings) {
      var partnerList = $('.view-partner-programs.slide .view-content');
      $('.pane-partner-programs.slide .pane-content').append('');
      partnerList.carouFredSel({
        height: 90,
        width: 880,
        prev: '#partner-prev',
        next: '#partner-next',
        auto: false,
        scroll: {
          pauseOnHover: true,
          wipe: true          
        }
      });
    }
})(jQuery);

Пример взят с этого сайта. Подробнее рассмотрим, что же там написано.

1. Drupal behaviors (для Drupal 7), если ваш код не используется в Drupal, можете его опустить.

Drupal.behaviors.iDevelsPartnerSlide = {
  attach: function (context, settings) {
  }
}

2. Присвоим переменной partnerList контейнер, в котором лежит наша карусель.

 var partnerList = $('.view-partner-programs.slide .view-content')

3. Добавим кнопки для прокрутки (следующий/предыдущий); не у всех же пока есть в наличии iГаджет.

 $('.pane-partner-programs.slide .pane-content').append('')

4.Подключим к нашему блоку сам плагин карусели.

 partnerList.carouFredSel();

Настройки плагина рассматривать мы не будем, поскольку на сайте имеется и без того хорошо описанная документация. Единственное, на чем нужно остановиться особо — это реализация прокрутки, ведь о ней то и идет речь.

Wipe — именно этот параметр включает возможность прокрутки пальцем на наших iГаджетах.

scroll: {
  pauseOnHover: true,
  wipe: true
}

Для реализации такой возможности подключаем jQuery Touchwipe Plugin. Функционал нашей карусели готов. Осталось только дописать несколько строк css, и все приобретает надлежащий вид.

Реализацию — блок с логотипами и отзывами клиентов — можете посмотреть на главной странице этого сайта.

Retina

Retina images

Retina (от англ. retina — сетчатка) — название ЖК-дисплея, который используется в устройствах Apple и отличается более высоким заявленным разрешением (326 точек на дюйм). Согласно имеющимся исследованиям, человеческий глаз может различить только 300 PPI. При этом производитель заявляет, что на таких дисплеях пикселизация изображения человеческим глазом не воспринимается.

Последние модели наших iГаджетов имеют именно такие экраны. На Retina экранах плотность пикселей в 4 раза больше. То есть изображение 200×300 на Retina имеет 400×600.

Таким образом, наша задача заключается в том, чтобы помочь пользователю и устройством пользоваться по полной, и наблюдать при этом изображение высокого качества. Как известно, чем выше качество изображения, тем больший объем файла. Стало быть, не забываем о пользователях, которые еще не держат iГаджет в руках. Им то зачем загружать себе бесполезные мегабайты?!

Итак, нужно загрузить для Retina изображение в 2 раза больше. При этом работать будем с фоновыми изображениями для картинок.

Вот и сама реализация:

 .pane-services-slide.attachment {
  background: url(../i/slide-menu-bg.png) scroll no-repeat center bottom transparent;
  background-size: 1020px 104px;
  height: 83px;  
  margin: 0 auto;  
  width: 960px;
}
@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
  only screen and (min-resolution: 144dpi) {
    .pane-services-slide.attachment {
      background: url(../i/[email protected]) scroll no-repeat center bottom transparent;
    }
  }

Давайте посмотрим, что все это значит. В первом блоке мы задаем стили для нашего фона, задаем ему размер. Тут все, как обычно. Следующий блок для Retina. Здесь мы определяем Retina как медиа устройство и используем device-pixel-ratio, чтобы установить соотношение между физическим и css-пикселем.

Таковы условия, при которых загружается наше объемное изображение. В названии картинки использована конструкция @ 2x: она должна быть прописана обязательно.

На данном этапе наша задача решена: пользователи iГаджетов наслаждаются большей четкостью изображения, а "не пользователи" - не грузят себе бесполезные мегабайты.

Несколько слов о Drupal.Behaviors та $(document).ready()
Оптимизация графики для Retina-экранов.

1 vote, Rating: 5
Share on FacebookShare on TwitterShare on GooglePlusShare on Linkedin

Также по теме

1

При необходимости перенесения каких-либо изменений в базе с одного сайта на другой, переливание всей базы, как правило, является достаточно проблематичным, а иногда и...

2

С развитием социальных сетей заказчики все чаще хотят интегрировать сайт с Facebook, Twitter, Google+ и т. д. На одном из проектов нужно было реализовать...

3

Опытные друпал-разработчики не представляют своей работы без утилиты Drush (Drupal shell), ведь с её помощью большинство рутинных дейстивий в друпале выполняются намного...

4

Ни для кого не секрет, что Google Analytics (далее - GA) - мощнейший инструмент для сбора данных о действиях...

5

В данной статье будет рассказано о том, как быстро настроить модуль Search API и...

Need a quote? Let's discuss the project

Are you looking for someone to help you with your Drupal Web Development needs? Let’s get in touch and discuss the requirements of your project. We would love to hear from you.

Join the people who have already subscribed!

Want to be aware of important and interesting things happening? We will inform you about new blog posts on Drupal development, design, QA testing and more, as well news about Drupal events.

No charge. Unsubscribe anytime