• Шестиугольники в данной сетке изменяют свои пропорции в соответствии с к шириной контейнера, в котором они находятся

  • Количество шестиугольников в ряду является адаптивным и изменяется от 5 до 2 в зависимости от ширины экрана (на примере от 4 до 2)
  • Для фотографий в сетке задан hover-эффект с выводом краткой информации.

Пример:

Пример показан для рядов из 4-х и 3-х шестиугольников (для ширины экрана более 1200px), а CSS ниже для рядов из 5-ти и 4-х.

HTML:

CSS:

Количество шестиугольников в рядах

За кол-во шестиугольников в рядах отвечают 2 класса .hex и .hex:nth-child и работают по формуле:

.hex {
   width: 100%/х;
}

.hex:nth-child(an+b){
   margin-left: 100%/x/2; /* половина ширины .hex */
}

Где:

x - кол-во шестиугольников в нечетных рядах (1-ый, 3-тий, 5-тый и т.д.)

y - кол-во шестиугольников в четных рядах (2-ой, 4-тый, 6-той и т.д.)

a = x + y

b = x + 1

Таким образом, если нам нужно расположить шестиугольники в ряды по 8 и 7, то классы будут выглядеть так:

.hex {
   width: 12.5%; /* 100/8 */
}

.hex:nth-child(15n+9) { /* 8+7 и 8+1 */
   margin-left: 6.25% /* 12,5%/2 */
}

Автор: web-tiki

Страничка на github

Смотрите также:

jQuery плагин Fancybox 3, его быстрое подключение, настройка и тема оформления

Создание простых плейлистов для медиаплеера Plyr

WebGLImageFilter для наложения на фотографию различных фильтров

Добавить комментарий:

Ваш комментарий отправлен!

Комментарии:

  • Лана:

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

    Ответить
    • Alexander:

      Какие рамочки?
      Если бордюры для шестиугольников, то так:

      .hex {
          filter:
              drop-shadow( 2px  0px 0px #337AB7)
              drop-shadow(-2px  0px 0px #337AB7)
              drop-shadow( 0px  2px 0px #337AB7)
              drop-shadow( 0px -2px 0px #337AB7);
      }

      В классе #hexGrid можно убрать overflow: hidden;

      Ответить