Привет, Хабр!

Сегодня небольшим, но полезным туториалом с нами поделится Дмитрий Кабаков, Senior фронтенд-разработчик DataArt.

В современном «гугломире» все большую важность набирает социальная составляющая сайта. Но обычные социальные виджеты/коды не всегда почти никогда не вписываются в оформление сайта.

Что же делать? Нужно оформлять!

Для туториала вам понадобится:
  • jQuery-плагин sharrre;
  • иконки FontAwesome;
  • знания HTML/CSS3;
  • минут 10 вашего времени

Шаг 1. Создание структуры

Думаю, наилучшим вариантом будет список из основных социальных сетей.

<ul class="socials">
 <li id=”twitter” class="social"></li>
 <li id=”facebook” class="social"></li>
 <li id=”linkedin” class="social"></li>
 <li id=”pinterest” class="social"></li>
</ul>

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

Шаблоны практически идентичные, меняем лишь FontAwesome-класс иконки (ставим класс иконки, соответствующий социальной сети).

<span class="fa fa-twitter"></span>
<a class="box" href="#">
 <div class="count" href="#">{total}</div>
</a>


Шаг 2. Подключение плагина Sharrre

Со структурой разобрались, подключаем плагин.

$('#twitter').sharrre({
 share: { twitter: true },
 template: '<span class="fa fa-twitter"></span><a class="box" href="#"><div class="count" href="#">{total}</div></a>',
 enableHover: false,
 buttons: {
   twitter: {
     via: 'your_account'
   }
 },
 click: function (api, options) {
   api.simulateClick();
   api.openPopup('twitter');
 }
});


Вкратце мы просим скрипт:
  • показать только одну социальную сеть;
  • применить пользовательский шаблон;
  • скрыть базовый функционал сети;
  • на клик выполнить функционал социальной кнопки.


Аналогично — для каждой сети (для google+ нужно еще подключить PHP-скрипт).

Шаг 3. Оформление

Тут все зависит от вашего воображения и, конечно, навыков. Ниже предлагаю вариант оформления:


codepen.io/Dmitriy-ateo/pen/JdYbYQ

Итог

В итоге плагин берет на себя функциональность, а оформление внешнего вида оставляет за нами. Благодаря простоте подключения, плагин можно использовать на различных страницах. Подключив lazy-load-скрипты социальные кнопки можно будет загрузить по мере появления их на странице.

В чем подвох?

Использование плагина значительно упрощает жизнь, но, конечно, есть и минусы такого подхода. Во-первых, этим плагином поддерживаются не все социальные сети, а только базовые. Во-вторых, для Google+ нужно дополнительно подключить PHP-скрипт, что добавляет некоторые трудности в реализацию.

Автор: Дмитрий Кабаков, Senior фронтенд-разработчик.

Комментарии (22)


  1. RabbitGP
    02.09.2015 17:54
    -8

    Очень интересная идея и полезная, думаю многим она пригодится. Надо попробовать, но есть вопрос по оформлению: есть ли какие нибудь ограничения или параметры?
    Спасибо за статью.


    1. DataArt
      02.09.2015 18:02

      Ограничений нет: структура и стили — все кастомные. Только воображение и скиллы могут вас остановить.
      На Copyblogger использовано подобное, например. Другие примеры можно посмотреть на сайте плагина.


  1. DigitalSmile
    02.09.2015 18:06
    +3

    Написали, что JS-плагин, а на деле оказалось JQuery…


    1. DataArt
      02.09.2015 18:14
      -1

      Закралось. Починили, спасибо за бдительность.


      1. DigitalSmile
        02.09.2015 18:20

        А я все же надеялся :)
        Было бы полезно мне кажется иметь виджет, без лишних зависимостей… Может кто подскажет такой, с опытом реального использования?


        1. kopch
          02.09.2015 22:03

          Прости за ссылку не ссылку — http://habrahabr.ru/post/156185/


          1. DigitalSmile
            03.09.2015 09:07

            Спасибо, попробуем.


  1. RabbitGP
    02.09.2015 18:07
    -8

    Интересно, с меня подписка!))) И ещё такой вопрос: как это скрипт совмести с flash сайтами, не будет ли скрипт прыгать на сайте при скроле?


    1. DataArt
      02.09.2015 18:42

      Не должен. Плагин только передает события, вся верстка и стили свои.


      1. RabbitGP
        03.09.2015 01:03
        -5

        Интересно, за что меня минусуют?


  1. vshemarov
    02.09.2015 23:22
    -1

    Для рунета, как ни крути, отсутствие ВК — это жирный минус


  1. cmepthuk
    02.09.2015 23:40
    +4

    1. Зачем привязываться по id ссылок? А если кнопок несколько на странице? В самой основе это довольно не корректно, классы — наше всё, разве нет?

    2. Зачем все такм таскать jQuery, когда есть и аналоги на pure js, и свой велосипед написать — делов на полчаса (включая приоготовление и поедание бутербродов)?

    3. Ради четырех иконок таскать все 585? Есть же куда более аскетичные аналоги, подумайте о трафике и целесообразности. Исключения, разумеется — проекты уже использующие fa, но ведь довольно часто примеры копипастят не задумываясь


  1. m0sk1t
    03.09.2015 00:39
    +5

    Ну отличные же статьи были у вас до этого, ну что вы начинаете…


  1. spmbt
    03.09.2015 05:59
    +2


    DataArt. Вот шаг 3, что дальше?


  1. prog666
    03.09.2015 11:04

    В чем плюсы использования тегов списка вместо обычных <div/>?


    1. cmepthuk
      03.09.2015 11:09

      Семантически вернее, и логичнее отображается при отсутствии css. Как то так


      1. prog666
        03.09.2015 11:11

        А если вдруг потом понадобиться добавить div внутрь этого li, что будете делать? ну в данном случае то понятно что не понадобится, но иногда бывают сложные многоуровневые меню где списками их делать просто неудобно, и я всегда хотел спросить кого-нибудь на эту тему.


        1. cmepthuk
          03.09.2015 11:24

          1. Если подразумевается блочная структура — делай внутри блоков (при отсутствии css будет каша).
          2. Если только ссылки — делай списками (при отсутствии css всё будет хорошо).
          3. Если хочешь блоки внутри списков — переопределяй свойства display, сохраняя валидность кода и получая требуемое отображение (при отсутствии css будет каша). Но перед этим пересмотри п.1 и п.2.


          Надеюсь, я ответил на твой вопрос :)


          1. prog666
            03.09.2015 11:25

            Да, в целом я так и думал, спасибо за ответ! А насколько актуальна читаемость без css, как много осталось пользователей браузеров типа «Lynx»?


            1. cmepthuk
              03.09.2015 11:30

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


              1. prog666
                03.09.2015 11:31

                Надо попробовать, спасибо за идею для саморазвития!


  1. cmepthuk
    03.09.2015 11:08

    // ошибся веткой