11. Скругления и тени · Неожиданный HTML
В 2008 году, чтобы сделать скругленный прямоугольник, приходилось рисовать в графическом редакторе четыре накладки на каждый угол прямоугольника и потом позиционированием накладывать их на каждый из углов. Не проходило и пол часа как Ваша кнопочка со скругленными краями была готова. Теперь нужно было отключить ложные клики по краям, и да: всё это можно было сделать только на однотонном фоне, иначе накладки были видны. А потом появилось свойство border-radius.
border-radius – задает радиус скругления
Представим что у нас есть прямоугольник. Например
.block {
width:100px;
height:100px;
background:purple;
}
Добавим к нему скругление в 10px по краям
border-radius:10px;
Получим фиолетовый квадрат со скруглениями по краям
.block {
width:100px;
height:100px;
background:purple;
border-radius:10px;
}
Можно задавать скругление отдельно по углам
border-radius:5px 10px 15px 20px;
Если хотим получить круг ставим border-radius:50% у квадрата
Можно задавать скругление ввиде эллипса
border-radius: 10px/20px;
10px — горизонтальный радиус 20px — вертикальный радиус
Если поиграться с настройками, то можно получить даже полукруг.
.semi_circle {
width:200px;
height:100px;
border-radius:50% 50% 50% 50% / 0% 0% 100% 100%;
}
Полезное чтиво:
- CSS-tricks о border-radius https://css-tricks.com/almanac/properties/b/border-radius/
Очень подробно разобрано, что мы можем сделать, используя border-radius https://m.habr.com/company/ruvds/blog/426731/ оригинальная статья https://9elements.com/io/css-border-radius/
О свойстве box-decoration-break https://developer.mozilla.org/en-US/docs/Web/CSS/box-decoration-break
- Генератор border-radius’ов https://9elements.github.io/fancy-border-radius/#0.49.0.51—.
box-shadow — задает тень у объекта
Логика этого свойства следующая: представим, что у под каждым объектом находится тень. Она по размерам ровно соотвествует размерам блока, поэтому её не видно. Свойство box-shadow занимается тем, что может сместить тень относительно объекта(первые два свойства), размыть её(при этом тень увеличится, но края будут нерезкими), а также сделать тень больше(или меньше, если значения отрицательные), чем сам объект.
box-shadow: 1px 2px 3px 4px #ccc;
1px – смещение слева
2px – смещение сверху
3px – радиус размытия
4px – увеличение размеров тени (padding для тени)
Цвет тени лучше делать полупрозрачным через rgba
Множественные тени
Можем сделать несколько теней и сымитировать несколько границ у объекта.
box-shadow: 0px 0px 0px 10px #c00,
0px 0px 0px 20px #00c;
Внутренняя тень
Добавление параметра inset создает внутреннюю тень. Позволяет сгенерировать эффект вдавленности.
box-shadow: inset 0 0 10px #000000;
Подробнее:
https://css-tricks.com/almanac/properties/b/box-shadow/
http://www.w3schools.com/css/css3_shadows.asp
text-shadow
Мы можем задать тень для текста
text-shadow: 0 0 3px #FF0000;
Полезное чтиво:
Эффекты для текста: http://enjoycss.com/gallery/text_effects/ec
Пример с вдавленным текстом https://wp-lessons.com/vnutrennyaya-ten-teksta-v-css
Пример с внутренней тенью для текста https://codepen.io/adambundy/pen/HtmaK
Дизайн-тренды, которые уже не в моде http://designshack.net/articles/graphics/5-former-design-trends-that-arent-cool-anymore-so-stop-using-them/
О применении свойства background-clip:text https://webplatform.news/issues/2018-11-02
Практика:
- Выводим круглый аватар с двумя каемочками
- Сделать ghost-button
- Сделать «простроченный» элемент
- Верстаем страницу «профиль пользователя» в стиле iOS (круглый аватар, ссылка в прозрачном блоке)
- Делаем фотографию с внутренней тенью https://habrahabr.ru/post/154211/
Делаем retro-эффект для текста http://enjoycss.com/gallery/text_effects/ec
Делаем текст с эффектом вдавленности text-shadow (вариант с background-clip:text)
- Верстаем шаблон
- Верстаем шаблон формы залогинивания сервиса Zeplin. input’ы заменяем на div’ы
Нестандартные тени CSS | Vaden Pro
На страницах нашего блога, да и на просторах интернета в принципе, Вам наверняка доводилось встречать догму, что применение тени для структурных элементов страницы способно придать вашему дизайну легкости, воздушности, глубины и объемности.
Сегодня мы рассмотрим несколько способов задания нетривиальной тени при помощи CSS3.
Да ну, может проще картинкой?
У Вас может возникнуть вопрос, зачем же играться с кодом, если даже начинающий пользователь Photoshop умеет создавать самые разнообразные эффекты тени? Запилить картинку, залить на сервер. Делов то…
С одной стороны оно конечно так, но, как говорит неевклидовая геометрия, прямолинейный путь не всегда самый короткий…
Применение картинок в качестве тенеобразующих элементов имеет ряд существенных недостатков:
- Скорость. Дополнительные картинки негативно сказываются на скорости загрузки страниц и создают дополнительную нагрузку на сервер.
- Резинка. Если Вы уже ознакомились с базовой версткой и переходите к решению реальных практических задач, у вас обязательно возникнет необходимость использовать «резиновую» верстку, и тут с картинками начинаются канители…
- Прощай «чистый» код. Применение картинок-теней приводит нас к необходимости ввода дополнительных блоков и оберток, вследствие чего код становится нечитабельным.
Какой у нас план?
В основе нашего примера будет лежать свойство box-shadow, щедро дарованное CSS3.
box-shadow добавляет элементу тень (что примечательно, по умолчанию – наружную, с параметром inset – внутреннюю), позволяет одновременно применять несколько разных теневых следов, адекватно оттеняет border-radius…
Ну, как Вы уже догадались, автор очень любит это свойство))).
Рассмотрим пример использования:
box-shadow: <offsetX> <offsetY> < blur radius > < spread radius > <shadow color>
- offsetX – вертикальный сдвиг тени относительно блока
- offsetY – горизонтальный сдвиг тени относительно блока
- blur radius – радиус размытия тени
- spread radius – протяженность тени
- shadow color – цвет тени (черный по умолчанию)
Записав несколько теней через запятую – получим несколько теней на выхлопе.
Важно!!!
- Устаревшие браузеры на web-kit движке поддерживают экспериментальное свойство -webkit-box-shadow (Sf до v5.1, Cr до v10.0, Andr до v4.0 и iOS Sf до v5.0).
- IE до v9.0 не понимает box-shadow, по этому придется поиграться с фильтрами вида
filter: progid:DXImageTransform.Microsoft.dropshadow(offsetX, offsetY, shadow color);
Переходим к практике
Создадим страницу с базовым контейнером, к которому будем прикручивать тень.
HTML:
<!DOCTYPE html> <html> <head> <link rel="stylesheet" media="all" type="text/css" href="./style.css"> <title> Нестандартные тени </title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body> <div>Нестандартные тени <span>CSS</span></div> </body> </html>
Естественным дополнением к нашей страничке будет каскадная таблица стилей. В ней мы зададим базовую стилизацию элементов.
CSS:
body { background: aqua; /*Задаем фон страницы*/ } #blockd {/*Базовый контейнер*/ position: relative; /*Позиционируем контейнер*/ width: 50%; /*Ширина контейнера*/ background: #f2ea09; /*Фон контейнера*/ -moz-border-radius: 5px; /*Фаска для Мозюки*/ border-radius: 5px;/*Фаска*/ padding: 20px 20px; /*Внутренние отступы*/ color: rgba(25,1,255, 0.7);/*Цвет текста*/ text-shadow: 0 1px 0 #211e3c; /*Тень текста*/ font-size: 45px;/*Размер шрифта*/ font-weight: bold; margin: 120px auto;/*Внешние поля*/ } #blockd span { color: rgba(252,47,0, .8); font-weight: bolder; font-size: 50px; }
Результатом наших стараний будет следующий пейзаж:
В создании обещанной не совсем стандартной тени нам помогут:
- псевдоэлементы :before, :after, позволяющие выводить некий контент непосредственно перед и после родительским элементом.
- CSS свойство transform, позволяющее трансформировать элемент, (вращать, наклонять в разных плоскостях, применять матрицу преобразований и многое другое).
Дабы не растекаться мыслью по древу, представляю Вашему вниманию код с подробными комментариями.
CSS:
#blockd:before,/*Темизируем псевдоэлементы*/ #blockd:after { z-index: -1;/*Прячем псевдоэлементы за родителя*/ position: absolute;/*Задаем позиционирование*/ content: "";/*Намекаем, что нужно что-то вывести*/ bottom: 16px;/*Уточняем абсолютное положение*/ left: 9px;/*Уточняем абсолютное положение*/ width: 50%;/*Задаем ширину*/ top: 70%;/*Смещаем вниз*/ max-width:350px;/*Ограничиваем ширину*/ background: rgba(0, 0, 0, 0.8);/*Задаем фон псевдоэлемента*/ -webkit-box-shadow: 0 20px 10px rgba(244,63,0, 0.7);/*тень для вэбкит-движков*/ -moz-box-shadow: 0 20px 10px rgba(244,63,0, 0.7);/*Тень для Мозиллы*/ box-shadow: 0 20px 10px rgba(244,63,0, 0.7);/*Тень для всех, кому CSS3 не чуждо*/ -webkit-transform: rotate(-4deg);/*Вращаем на 4 градуса для вэбкит*/ -moz-transform: rotate(-4deg);/*Вращаем на 4 градуса для Мозиллы*/ -o-transform: rotate(-4deg);/*Вращаем на 4 градуса для Оперы*/ -ms-transform: rotate(-4deg);/*Вращаем на 4 градуса для мелкософта*/ transform: rotate(-4deg); /*Вращаем на 4 градуса для всех, кому CSS3 не чуждо*/ } #blockd:after { /*Вращаем и размещаем тень «после» контейнера*/ transform: rotate(4deg); -webkit-transform: rotate(4deg); -moz-transform: rotate(4deg); -o-transform: rotate(4deg); -ms-transform: rotate(4deg); right: 9px; left: auto; }
Теперь взглянем на результат.
Как видно из примера, мы использовали красную (244,63,0) полупрозрачную (0.7) тень. Целью такого шага было продемонстрировать возможность применения любого элемента из RGB пространства в качестве тенеобразующей основы.
Разноцветные тени способны помочь Вам в создании оригинальных дизайнерских решений.
Рассмотренный пример не является единственно возможным, изменяя положение, угол поворота псевдоэлементов и цветовую схему можно построить целый ряд подобных вкуснятин.
Важно!!!
- Кросс-браузерность. Рассмотренный метод построения нестандартных теней показал полную работоспособность в браузерах, начиная с Fx3.5, Op10.5, Sf, Cr, IE9.
- В отличии от метода картинок, скорость загрузки страниц не ухудшается, наличие тени не влияет на размер блока:
Shadows do not influence layout and may overlap other boxes or their shadows.
Оценок: 8 (средняя 5 из 5)
Понравилась статья? Расскажите о ней друзьям:
Курсы по CSS (в открытом доступе)
Уровень сложности:
Средний
Еще интересное
CSS3 — Тень — CoderLessons.com
Поддерживается CSS3 для добавления тени к тексту или элементам. Свойство Shadow разделено следующим образом:
- Тень текста
- Box Shadow
Тень текста
Поддерживается CSS3 для добавления теневых эффектов в текст. Ниже приведен пример добавления эффектов тени к тексту:
Live Demo
<html> <head> <style> h2 { text-shadow: 2px 2px; } h3 { text-shadow: 2px 2px red; } h4 { text-shadow: 2px 2px 5px red; } h5 { color: white; text-shadow: 2px 2px 4px #000000; } h5 { text-shadow: 0 0 3px #FF0000; } h6 { text-shadow: 0 0 3px #FF0000, 0 0 5px #0000FF; } p { color: white; text-shadow: 1px 1px 2px black, 0 0 25px blue, 0 0 5px darkblue; } </style> </head> <body> <h2>Tutorialspoint.com</h2> <h3>Tutorialspoint.com</h3> <h4>Tutorialspoint.com</h4> <h5>Tutorialspoint.com</h5> <h5>Tutorialspoint.com</h5> <h6>Tutorialspoint.com</h6> <p>Tutorialspoint.com</p> </body> </html>
Это даст следующий результат —
тень от коробки
Используется для добавления эффектов тени к элементам. Ниже приведен пример добавления эффектов тени к элементу.
Live Demo
<html> <head> <style> div { width: 300px; height: 100px; padding: 15px; background-color: red; box-shadow: 10px 10px; } </style> </head> <body> <div>This is a div element with a box-shadow</div> </body> </html>
Это даст следующий результат —
Тень CSS для создания эффекта объема
Время чтения: 2 мин.Возможно вы уже видели данный эффект на разных сайтах, который действительно смотрится красиво. Так вот раньше данный эффект создавался используя изображение, которое до этого было создано, например, в программе Photoshop. Сейчас CSS3 позволяет нам создать такой эффект для блока без изображений. И в этом уроке мы рассмотрим как же его можно создать.
Реальный пример можно увидеть здесь:
Посмотреть примерСкачать
HTML часть
Эта часть очень простая и содержит один блок <div> в котором находится текст. Этому блоку мы и будет придавать эффект объема:
1 2 3 | <div> <h2>Эффект объема с помощью CSS3 box-shadow</h2> </div> |
CSS часть
Для еще более красивого эффекта придадим для body внутреннюю тень сверху как на изображении ниже:
Для этого необходимо прописать следующие строки в файле стилей:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | body { background: #b3b4b7; text-align: center; } body:before { content: ""; position: fixed; top: -10px; left: 0; width: 100%; height: 10px; z-index: 100; -webkit-box-shadow: 0px 0px 10px rgba(0,0,0,.8); -moz-box-shadow: 0px 0px 10px rgba(0,0,0,.8); box-shadow: 0px 0px 10px rgba(0,0,0,.8); } |
А затем для блока <div> установить следующие свойства:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | #box { position: relative; width: 20%; background: #ddd; -moz-border-radius: 4px; border-radius: 4px; padding: 2em 1.5em; color: rgba(0,0,0, .8); text-shadow: 0 1px 0 #fff; line-height: 1.5; margin: 60px auto; } #box:before, #box:after { z-index: -1; position: absolute; content: ""; bottom: 15px; left: 10px; width: 50%; top: 80%; max-width:300px; background: rgba(0, 0, 0, 0.7); -webkit-box-shadow: 0 15px 10px rgba(0,0,0, 0.7); -moz-box-shadow: 0 15px 10px rgba(0, 0, 0, 0.7); box-shadow: 0 15px 10px rgba(0, 0, 0, 0.7); -webkit-transform: rotate(-3deg); -moz-transform: rotate(-3deg); -o-transform: rotate(-3deg); -ms-transform: rotate(-3deg); transform: rotate(-3deg); } #box:after { -webkit-transform: rotate(3deg); -moz-transform: rotate(3deg); -o-transform: rotate(3deg); -ms-transform: rotate(3deg); transform: rotate(3deg); right: 10px; left: auto; } |
Вывод
Абсолютно ничего сложного нет. Это значительно лучше, чем использовать изображение, т.к. такие изображения будут точно немаленькими.
Браузеры, которые будут поддерживать данный эффект:
- Internet Explorer 9/10
- Firefox (с версии 3.5)
- Safari/Chrome
- Opera (с версии 10.5)
Успехов!
Источник: www.red-team-design.com
Drop Shadow — Tailwind CSS
Основное использование
Добавление тени
Используйте утилиты drop-shadow-{amount}
, чтобы добавить тень к элементу.
<дел>