Как сделать 3D прогресс бары с тенью на CSS/Sass

Как сделать 3D прогресс бары с тенью на CSS/Sass

От автора: в этом уроке вы узнаете, как сделать интересные 3D прогресс бары с тенью с помощью CSS/Sass, а также как использовать свойство box-shadow и градиенты.

скачать исходникидемо

Сегодня мы хотим вас рассказать о том, как создавать прогресс бары на чистом CSS, да еще и в 3D. Пройдя этот урок по продвинутому CSS, вы узнаете об интересных свойствах, работающих с 3D графикой и методах затемнения. Создавая интерфейсы на чистом CSS, вы оттачиваете свое мастерство. А в этом уроке мы покажем вам, как создавать довольное сложные формы объектов, которые потом мы используем в прогресс барах.

Обратите внимание: Некоторые свойства CSS поддерживаются только современными браузерами. В IE все еще не поддерживается свойство transform-style: preserve-3d, которое используется для создания вложенных 3D структур. Ваш прогресс бар может оказаться просто плоским в IE.

Мы совместно с Compass использовали немного Sass. Вам необходимо установить его и, если вы не знаете, что это, ознакомиться с основами:

Мы будем использовать множество интереснейших свойств CSS, таких как transform, perspective и box-shadow. Также для экономии времени при создании скинов для прогресс баров и определения их позиции постоянно будем применять SASS. Добьемся легкой масштабируемости при помощи относительных единиц измерения (em и проценты).

Создаем стороны фигуры

Начнем с создания блока, который будет хранить в себе все шесть сторон. Это будет наш основной контейнер, он будет влиять на размер прогресс баров. Также необходимо использовать блок-обертку для создания перспективы. Свойство font-size оберточного блока поможет нам масштабировать прогресс бары в em единицах измерения.

К основному блоку необходимо применить свойство transform-style: preserve-3d, дабы убедиться, что все стороны входят в общее 3D пространство. Начнем наши стили с инициализации пары переменных для цветов:

Теперь позаботимся о сторонах. Если мы хотим без проблем изменять размер основного блока, то стороны должны быть резиновыми и абсолютно позиционированы.

Напишем саму разметку и проверим ее на доступность:

Настраиваем стороны фигуры

Это очень важная часть, наши стороны должны быть правильно расположены, чтобы при их заполнении не возникли проблемы.

Неплохой куб получился, но нам нужен прямоугольник. Если вы внимательно читаете статью, то мы уже раньше сделали наши стороны фигуры резиновыми. Так что нам просто осталось увеличить ширину для класса .bar. В нашем примере мы сделаем 4em.

Создаем заполнитель

Процентные заполнители прогресс бара будут находиться внутри блоков сторон фигуры. А для поддержания чистоты в нашем HTML, мы воспользуемся псевдоклассом :before. Генерируемый контент будет двигаться рядом с растущей стороной фигуры и будет показывать ее ширину.

Теперь осталось написать стили для каждого процента. Было бы утомительно делать все это вручную, писать сотню классов. Мы напишем цикл в Sass для получения значений атрибута aria-valuenow.

Создаем скины

Для создания скинов напишем пару миксинов. Поиграемся со свойством box-shadow, чтобы добиться более реалистичного вида. Данным свойством поддерживается массив значений, и с помощью этого массива мы сможем имитировать блики. Под прогресс баром создадим тень, а на лицевой стороне наоборот световые блики.

Нужно подсветить наши стороны. Если правильно расположить стороны фигуры, то произойдет чудо:

Итак, а что же, собственно, произошло? Все просто: Когда браузер отрисовывает абсолютно позиционированные элементы, то для каждого последующего элемента увеличивается значение свойства z-index (если мы его не трогаем). Так что, если разместить нижнюю сторону выше в порядке, то ее тень будет закрывать все задние стороны. Вот так мы и получили реалистичный вид для прогресс бара.

Ну вот и все! Посмотрите все демо и скачайте исходники. Попробуйте создать свой скин, чтобы потренироваться.

Автор: Rafael Gonzalez

Источник: //tympanus.net/

Редакция: Команда webformyself.

Метки:

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

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