Диагональная галерея миниатюр
Мы привыкли к использованию стандартных модульных сеток и четких горизонтальных и вертикальных линий. Нет ничего удивительного, что в последнее время популярность набирают привлекающие внимание шаблоны на основе диагональных линий. В данном простом уроке мы создадим очень простую диагональную галерею миниатюр.
В уроке будем использовать 2D-трансформации CSS3 и псевдо-элементы для вывода элементов, похожих на бриллианты, с фоновыми изображениями.
Примечание: в примерах кода, приведенных в тексте урока, опущены префиксы браузеров перед свойствами CSS. Полный код можно посмотреть в исходниках.
Шаг 1. Подготовка
Для создания демонстрационной галереи нам потребуется 6 изображений (используем размер 250px x 250px) размещенных в одном спрайте (в нашем примере размером 1500px x 250px).
Шаг2. Один бриллиант
Вот разметка для одного бриллианта с миниатюрой. Используем для класса: “.diamond” для вращения элемента и “.thumb” для добавления фонового изображения (обратите внимание, что центральный "бриллиант" не имеет фонового изображения, поэтому для него устанавливается только класс “.diamond”).
<a class="diamond thumb" id="cake" href="/"> <p>Вишня</p> </a>
Шаг 3. Вращаем квадрат
Добавим правила CSS. Мы используем для ширины и высоты значение 178px. Почему? Диагональ такого квадрата равна 250px (смотри рисунок ниже).
.diamond { display: block; width: 178px; height: 178px; background: #5c3e52; transform: rotate(45deg); } .thumb { background: url(../images/sprite.jpg); position: relative; overflow: hidden; } .image p {visibility:hidden}
Шаг 4. Вращаем фоновое изображение
Когда мы вращаем квадрат, то фоновое изображение вращается вместе с ним, что нам не требуется. Будем фиксировать фон с помощью псевдо-элемента :after.
.thumb:after { content: ""; position: absolute; top: -36px; left: -36px; width: 250px; height: 250px; background: inherit; transform: rotate(-45deg); }
Выше приведенная картинка показывает, как позиционируется .thumb:after. Он наследует фон от родительского элемента. Вращение осуществляется в другую сторону, поэтому пользователю выводится фон в нормальном положении.
Шаг 5. Галерея
Для создания нашего примера используются плавающие элементы, хотя вы можете построить подобную структуру с помощью абсолютного позиционирования.
<div class="wrap"> <h1>Маленькие удовольствия создают день...</h1> <a class="diamond thumb intend" id="cake" href="/ "><p>Вишня</p></a> <a class="diamond thumb dark" id="chair" href="/ "><p>Эспрессо</p></a> <a class="diamond thumb break" id="library" href="/ "><p>Книга</p></a> <a class="diamond" href="/ "><p>Удовольствие</p></a> <a class="diamond thumb dark " id="dream" href="/ "><p>Мечта</p></a> <a class="diamond thumb intend" id="roses" href="/ "><p>Роза</p></a> <a class="diamond thumb dark" id="wine" href="/ "><p>Вино</p></a> </div>
Также добавим несколько правил CSS, чтобы "бриллианты" выстраивались в структуру:
.diamond { float: left; margin-left: 72px; /* 250-178 */ margin-top: -53px; /* 250/2-178 */ } .break { clear: left; margin-left: 36px; /* (250-178)/2 */ } .intend { clear: left; margin-left: 161px; /* (250-178)/2 + 250/2 */ }
Шаг 6. Надписи
Нам нужно выводить описание на однотонном фоне при наведении курсора мыши на "бриллиант". Обратите внимание на то, что .diamond повернут, что приведет к повороту параграфа внутри него. Поэтому параграф надо развернуть в обратном направлении.
.diamond p { position: relative; transform-origin: top left; transform: rotate(-45deg) translate(-89px, 0); line-height: 250px; z-index: 1; pointer-events: none }
Шаг 7. Наведение курсора мыши
Вот что будет происходит при наведении курсора мыши на "бриллиант".
.diamond:hover p { visibility: visible; } .thumb:hover { background: #a5b8a6; } .thumb.dark:hover { background: #bda3c1; } .thumb:hover:after { box-shadow: inset 0 0 100px #5c705d; } .thumb.dark:hover:after { box-shadow: inset 0 0 100px #5c3e52; }
Шаг 8. В случае отсутствия поддержки нужных свойств
Нужно обеспечить вывод информации в браузерах, которые не поддерживают трансформаций CSS3. Воспользуемся плагином modernizr для обнаружения факта отсутствия поддержки и добавляем код CSS:
.no-csstransforms .diamond { margin-left: 0; margin-top: 0; } .no-csstransforms .intend { margin-left: 197px; } .no-csstransforms .break { margin-left: 108px; } .no-csstransforms .diamond p { line-height: 178px; }
Источник: http://feedproxy.google.com/~r/ruseller/CdHX/~3/Vg1_Q4lBu-M/lessons.php
Дайджест новых статей по интернет-маркетингу на ваш email
Новые статьи и публикации
- 2024-11-26 » Капитан грузового судна, или Как начать использовать Docker в своих проектах
- 2024-11-26 » Обеспечение безопасности ваших веб-приложений с помощью PHP OOP и PDO
- 2024-11-22 » Ошибки в Яндекс Вебмастере: как найти и исправить
- 2024-11-22 » Ошибки в Яндекс Вебмастере: как найти и исправить
- 2024-11-15 » Перенос сайта на WordPress с одного домена на другой
- 2024-11-08 » OSPanel 6: быстрый старт
- 2024-11-08 » Как установить PhpMyAdmin в Open Server Panel
- 2024-09-30 » Как быстро запустить Laravel на Windows
- 2024-09-25 » Next.js
- 2024-09-05 » OpenAI рассказал, как запретить ChatGPT использовать содержимое сайта для обучения
- 2024-08-28 » Чек-лист: как увеличить конверсию интернет-магазина на примере спортпита
- 2024-08-01 » WebSocket
- 2024-07-26 » Интеграция с Яндекс Еда
- 2024-07-26 » Интеграция с Эквайринг
- 2024-07-26 » Интеграция с СДЕК
- 2024-07-26 » Интеграция с Битрикс-24
- 2024-07-26 » Интеграция с Travelline
- 2024-07-26 » Интеграция с Iiko
- 2024-07-26 » Интеграция с Delivery Club
- 2024-07-26 » Интеграция с CRM
- 2024-07-26 » Интеграция с 1C-Бухгалтерия
- 2024-07-24 » Что такое сторителлинг: техники и примеры
- 2024-07-17 » Ошибка 404: что это такое и как ее использовать для бизнеса
- 2024-07-03 » Размещайте прайс-листы на FarPost.ru и продавайте товары быстро и выгодно
- 2024-07-01 » Профилирование кода в PHP
- 2024-06-28 » Изучаем ABC/XYZ-анализ: что это такое и какие решения с помощью него принимают
- 2024-06-17 » Зачем вам знать потребности клиента
- 2024-06-11 » Что нового в работе Яндекс Метрики: полный обзор обновления
- 2024-06-11 » Поведенческие факторы ранжирования в Яндексе
- 2024-06-11 » Скорость загрузки сайта: почему это важно и как влияет на ранжирование
Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей Индийская пословица |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.