Бесшовная состыковка фотографий в сетке

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

Воспользуемся разметкой, которая очень хорошо подходит для данного случая:

<section id="photos">

	<img src="/images/dog-1.jpg" alt="Щеночек">

	<img src="/images/cat-1.jpg" alt="Котеночек">

	...

</section>

Без какого-либо кода CSS изображения выстроятся в ряды, так как они по своей сущности являются элементами типа inline-block. И наша страница будет выглядеть вот так:

Но такой результат не соответствует нашим желаниям. Можно обратиться за помощью к JavaScript. Но такие варианты решения базируются на использовании события  window.resize, что влияет на скорость работы страницы.

Но задачу можно решить только средствами CSS. Мы нуждаемся в вертикальных колонках, в которых будут располагаться изображения. И они будут плотно стыковаться друг с другом. Нужно только решить вопрос с объединением изображений в группы. Возможный вариант решения - объединять одинаковое количество картинок в элементах div. Но такой путь путь ведет к сложностям со сбалансированным распределением. Другой вариант - воспользоваться свойством CSS3 column-count.

Родительский элемент колонок по умолчанию имеет ширину окна браузера, а расстояние между колонками мы установим равным 0. Поэтому структура колонок останется на заднем плане. Мы установим ширину изображений равной 100%. Они будут автоматически масштабироваться на ширину колонки.

Вот код CSS:

#photos {
   /* Избавляемся от вертикального зазора */
   line-height: 0;

   -webkit-column-count: 5;
   -webkit-column-gap:   0px;
   -moz-column-count:    5;
   -moz-column-gap:      0px;
   column-count:         5;
   column-gap:           0px;

}
#photos img {
  /* На случай встроенных свойств */
  width: 100% !important;
  height: auto !important;
}

Но что если экран браузера будет узким? 5 колонок может быть отличным решением для широкого экрана, но на узком изображения будут слишком сильно уменьшаться. Задача решается очень просто с помощью медиа запросов. Мы устанавливаем соответствие ширины экрана и количества колонок:

@media (max-width: 1200px) {
  #photos {
  -moz-column-count:    4;
  -webkit-column-count: 4;
  column-count:         4;
  }
}
@media (max-width: 1000px) {
  #photos {
  -moz-column-count:    3;
  -webkit-column-count: 3;
  column-count:         3;
  }
}
@media (max-width: 800px) {
  #photos {
  -moz-column-count:    2;
  -webkit-column-count: 2;
  column-count:         2;
  }
}
@media (max-width: 400px) {
  #photos {
  -moz-column-count:    1;
  -webkit-column-count: 1;
  column-count:         1;
  }
}

Отличное быстрое решение на чистом CSS. Можно изменять размер браузера и изображения будут автоматически перестраиваться.

Предложенное решение отлично работает в браузерах: Firefox 3.6+, Opera 11.1+, Safari 4+, Chrome 10+, IE 10.


Источник: http://feedproxy.google.com/~r/ruseller/CdHX/~3/0RIT5l1GyI4/lessons.php

Читать комменты и комментировать

Добавить комментарий / отзыв



Защитный код
Обновить

Бесшовная состыковка фотографий в сетке | | 2012-06-19 12:04:37 | | Статьи Web-мастеру | | Допустим, необходимо сделать страницу с набором фотографий. И задача состоит в том, чтобы расположить их одну к другой без зазоров по всему окну браузера. Просто, кто-то считает, что такой эффект | РэдЛайн, создание сайта, заказать сайт, разработка сайтов, реклама в Интернете, продвижение, маркетинговые исследования, дизайн студия, веб дизайн, раскрутка сайта, создать сайт компании, сделать сайт, создание сайтов, изготовление сайта, обслуживание сайтов, изготовление сайтов, заказать интернет сайт, создать сайт, изготовить сайт, разработка сайта, web студия, создание веб сайта, поддержка сайта, сайт на заказ, сопровождение сайта, дизайн сайта, сайт под ключ, заказ сайта, реклама сайта, хостинг, регистрация доменов, хабаровск, краснодар, москва, комсомольск |
 
Поделиться с друзьями: