Адаптивная сетка иконок

Суть очень проста. Просто меняйте размер окна браузера и сетка будет адаптироваться под ее размер.

Начнем с самого начала. Нужно написать структуру. Делать это будем с помощью списков.

HTML

Код
<ul class="cbp-ig-grid">
  <li>
  <a href="#">
  <span class="cbp-ig-icon cbp-ig-icon-shoe"></span>
  <h3 class="cbp-ig-title">Squid voluptate</h3>
  <span class="cbp-ig-category">Fashion</span>
  </a>
  </li>
  <li>
  <a href="#">
  <span class="cbp-ig-icon cbp-ig-icon-ribbon"></span>
  <h3 class="cbp-ig-title">Mixtape lo-fi</h3>
  <span class="cbp-ig-category">Design</span>
  </a>
  </li>
  <li>
  <a href="#">
  <span class="cbp-ig-icon cbp-ig-icon-milk"></span>
  <h3 class="cbp-ig-title">Cosby sweater</h3>
  <span class="cbp-ig-category">Lifestyle</span>
  </a>
  </li>
  <li>
  <a href="#">
  <span class="cbp-ig-icon cbp-ig-icon-whippy"></span>
  <h3 class="cbp-ig-title">Commodo</h3>
  <span class="cbp-ig-category">Food</span>
  </a>
  </li>
  <li>
  <a href="#">
  <span class="cbp-ig-icon cbp-ig-icon-spectacles"></span>
  <h3 class="cbp-ig-title">Bitters kitsch</h3>
  <span class="cbp-ig-category">Gadgets</span>
  </a>
  </li>
  <li>
  <a href="#">
  <span class="cbp-ig-icon cbp-ig-icon-doumbek"></span>
  <h3 class="cbp-ig-title">Austin proident</h3>
  <span class="cbp-ig-category">Music</span>
  </a>
  </li>
</ul>


А теперь напишем стили для придания формы, дизайна, плавности и адаптивности элементов.

CSS

Подключим иконический шрифт с нашими иконками.

Код
@font-face {
  font-family: 'anyoldicon';
  src:url('../fonts/anyoldicon/anyoldicon.eot');
  src:url('../fonts/anyoldicon/anyoldicon.eot?#iefix') format('embedded-opentype'),
  url('../fonts/anyoldicon/anyoldicon.woff') format('woff'),
  url('../fonts/anyoldicon/anyoldicon.ttf') format('truetype'),
  url('../fonts/anyoldicon/anyoldicon.svg#anyoldicon') format('svg');
  font-weight: normal;
  font-style: normal;
}


Далее оформим наше меню

Код
/* Основные стили */
.cbp-ig-grid {
  list-style: none;
  padding: 0 0 50px 0;
  margin: 0;
}

/* сброс выравниваний */
.cbp-ig-grid:before,
.cbp-ig-grid:after {
  content: " ";
  display: table;
}

.cbp-ig-grid:after {
  clear: both;
}

/* ячейка сетки */
.cbp-ig-grid li {
  width: 33%;
  float: left;
  height: 420px;
  text-align: center;
  border-top: 1px solid #ddd;
}

/* рамки, тени ... */
.cbp-ig-grid li:nth-child(-n+3){
  border-top: none;
}

.cbp-ig-grid li:nth-child(3n-1),
.cbp-ig-grid li:nth-child(3n-2) {
  box-shadow: 1px 0 0 #ddd;
}

/* стили для ссылок */
.cbp-ig-grid li > a {
  display: block;
  height: 100%;
  color: #47a3da;
  -webkit-transition: background 0.2s;
  -moz-transition: background 0.2s;
  transition: background 0.2s;
}

/* иконки */
.cbp-ig-icon {
  padding: 30px 0 0 0;
  display: block;
  -webkit-transition: -webkit-transform 0.2s;
  transition: -moz-transform 0.2s;
  transition: transform 0.2s;
}

.cbp-ig-icon:before {
  font-family: 'anyoldicon';
  font-size: 14em;
  speak: none;
  font-style: normal;
  font-weight: normal;
  font-variant: normal;
  text-transform: none;
  line-height: 1;
  -webkit-font-smoothing: antialiased;
}

.cbp-ig-icon-shoe:before {
  content: "\e000";
}

.cbp-ig-icon-ribbon:before {
  content: "\e001";
}

.cbp-ig-icon-milk:before {
  content: "\e002";
}

.cbp-ig-icon-whippy:before {
  content: "\e003";
}

.cbp-ig-icon-spectacles:before {
  content: "\e004";
}

.cbp-ig-icon-doumbek:before {
  content: "\e007";
}

/* элемент title */
.cbp-ig-grid .cbp-ig-title {
  margin: 20px 0 10px 0;
  padding: 20px 0 0 0;
  font-size: 2em;
  position: relative;
  -webkit-transition: -webkit-transform 0.2s;
  -moz-transition: -moz-transform 0.2s;
  transition: transform 0.2s;
}

.cbp-ig-grid .cbp-ig-title:before {
  content: '';
  position: absolute;
  background: #47a3da;
  width: 160px;
  height: 6px;
  top: 0px;
  left: 50%;
  margin: -10px 0 0 -80px;
  -webkit-transition: margin-top 0.2s;
  -moz-transition: margin-top 0.2s;
  transition: margin-top 0.2s;
}

.cbp-ig-grid .cbp-ig-category {
  text-transform: uppercase;
  display: inline-block;
  font-size: 1em;
  letter-spacing: 1px;
  color: #fff;
  -webkit-transform: translateY(10px);
  -moz-transform: -moz-translateY(10px);
  -ms-transform: -ms-translateY(10px);
  transform: translateY(10px);
  opacity: 0;
  -webkit-transition: -webkit-transform 0.3s, opacity 0.2s;
  -moz-transition: -moz-transform 0.3s, opacity 0.2s;
  -webkit-transition: transform 0.3s, opacity 0.2s;
}

.cbp-ig-grid li:hover .cbp-ig-category,
.touch .cbp-ig-grid li .cbp-ig-category {
  opacity: 1;
  -webkit-transform: translateY(0px);
  -moz-transform: translateY(0px);
  -ms-transform: translateY(0px);
  transform: translateY(0px);
}

/* Стили для элементов при наведении мыши */

.cbp-ig-grid li > a:hover {
  background: #47a3da;
}

.cbp-ig-grid li > a:hover .cbp-ig-icon {
  -webkit-transform: translateY(10px);
  -moz-transform: translateY(10px);
  -ms-transform: translateY(10px);
  transform: translateY(10px);
}

.cbp-ig-grid li > a:hover .cbp-ig-icon:before,
.cbp-ig-grid li > a:hover .cbp-ig-title {
  color: #fff;
}

.cbp-ig-grid li > a:hover .cbp-ig-title {
  -webkit-transform: translateY(-30px);
  -moz-transform: translateY(-30px);
  -ms-transform: translateY(-30px);
  transform: translateY(-30px);
}

.cbp-ig-grid li > a:hover .cbp-ig-title:before {
  background: #fff;
  margin-top: 80px;
}

@media screen and (max-width: 62.75em) {
  .cbp-ig-grid li {
  width: 50%;
  }

  /* сброс строк сетки */
  .cbp-ig-grid li:nth-child(-n+3){
  border-top: 1px solid #ddd;
  }

  .cbp-ig-grid li:nth-child(3n-1),
  .cbp-ig-grid li:nth-child(3n-2) {
  box-shadow: none;
  }

  .cbp-ig-grid li:nth-child(-n+2){
  border-top: none;
  }

  .cbp-ig-grid li:nth-child(2n-1) {
  box-shadow: 1px 0 0 #ddd;
  }
}

@media screen and (max-width: 41.6em) {
  .cbp-ig-grid li {
  width: 100%;
  }

  .cbp-ig-grid li:nth-child(-n+2){
  border-top: 1px solid #ddd;
  }

  .cbp-ig-grid li:nth-child(2n-1) {
  box-shadow: none
  }

  .cbp-ig-grid li:first-child {
  border-top: none;
  }
}

@media screen and (max-width: 25em) {
  .cbp-ig-grid {
  font-size: 80%;
  }

  .cbp-ig-grid .cbp-ig-category {
  margin-top: 20px;
  }
}


Все готово!

  • FalleN

  • 2024

  • 1

  • 217
Теги: GRID, responsive, Layout

Ссылки на статью:

Похожие статьи: