Изогнутая Тень или Тень симулирующая изогнутые вверх углы, выглядит очень эффектно на сайте.При этом, объекты или изображения выделяются из обычного текста.
И такого трехмерного эффекта, можно добиться используя только CSS3 и HTML.
Для начала некоторые общие, но важные основы для создания выгнутой или вогнутой тени.
Блок с тенью
С помощью CSS3 может быть создана тень любого объекта HTML, с любым направлением, размером и размытием. Для этого используется, CSS3 параметр “box-shadow: 2px 2px 2px 2px #000 inset”. Важно знать, что тень адаптируется к размеру и форме объекта. Круглый угол объекта отбрасывает круглую тень.
Для одного объекта может быть одновременно указано несколько различных теней, разделенных запятой.
Смысл информации”box-shadow: 2px 2px 2px 2px #000 inset“:
- Первое значение смещение в горизонтальном направлении.
Чем больше значение, тем больше тень перемещается вправо, а отрицательное значение перемещает тень влево. - Второе значение представляет собой смещение в вертикальном направлении.
При положительных значениях тень движется вниз и при отрицательных значениях – вверх. - Третье значение определяет степень размытия тени.
Чем больше значение, тем больше размытость. - Четвертый дополнительный параметр определяет радиус тени.
Чем больше значение, тем больше тень. - Затем следует цвет тени.
Эти данные также влияют на восприятие размытия. - “inset“: Это необязательная информация является внутренней тенью
Данное обозначение цвета “# 000”, можно заменить на “RGBA” (красный, зеленый, синий, альфа-канал), например, “box-shadow: 4px 4px 4px rgba(0, 0, 0, .6)”, что делает тень объекта полупрозрачной и, таким образом, она выглядит на текстурированном фоне более естественно.
Арочные и изогнутые тени
Основная разметка HTML неизменна во всех следующих примерах. Поэтому добавляться будет только то, что нужно в CSS3. Вместо изображения также может быть интегрирован второй “Div-контейнер” для текста, но это, в конечном счете, то же самое.
<div class="schatten"> <img src="l201010.jpg" width="800" height="551" alt="0000000"> </div>
Для определения положения тени, контейнер “DIV” должен иметь параметр “position: relative” и с помощью “z-index:1” переместиться на передний план. Таким образом, этот контейнер служит в качестве точки отсчета для абсолютно расположенного тени.
#schatten { position: relative; height: 34.4em; width: 50em; margin: -2.5em auto 1.8em; left: -5px; z-index: 1; }
Теперь определяются свойства либо второго контейнера “DIV” или свойства изображения.
Размер как в ширину так и в высоту 100% от родительского контейнера “#schatten”, а также получает белую рамку “border” в 5 пикселей.
Что бы белая рамка отличалась от фонового изображения, будет добавлена ещё одна тень. Это приводит к дополнительному отделению объекта от фона, тем самым усиливая 3D-эффект.
#schatten img { position: relative; width: 100%; height: 100%; border: 5px solid #fff; box-shadow: 0 -3px 5px -2px rgba(0, 0, 0, .6), 0 1px 4px rgba(0, 0, 0, .3), 0 0 20px rgba(0, 0, 0, .1) inset; }
Благодаря псевдо-элементам “:before” и “:after” изогнутая тень определяется и добавляется к контейнеру “DIV“.class=”notranslate”> Элементы “:before” и “:after”, как правило, интерпретируется как встроенные объекты и размещаются на HTML элемент, другими словами, размещается до или после элемента.Благодаря “position: absolute“, тень является независимой от реального объекта и может позиционироваться индивидуально.
Сначала определяется размер тени , и полученные, таким образом, с помощью двух псевдо-элементов два прямоугольника с шириной 50% и высотой 30% родительского контейнера “#schatten“. Два прямоугольников затем сдвигаем на 2 пикселя и получаем тень на расстоянии 15 пикселей и размытием 10 пикселей.
Псевдо-элемент “:before” предназначен для представления тени в нижней левой части и, следовательно, получает вращение 3 ° против часовой стрелки. За правую часть отвечает элемент “:after”.
#schatten:before, #schatten:after { position: absolute; content: ""; width: 50%; height: 30%; bottom: 2px; left: 10px; box-shadow: 0 15px 10px rgba(0, 0, 0, .7); transform: rotate(-3deg); z-index: -2; } #schatten:after { right: 0; left: auto; transform: rotate(3deg); }
Теперь рассмотрим другие примеры арочных и изогнутых теней.
И, как уже было описано выше, вставим дополнительный контейнер “DIV” вместо изображения.
HTML
<div class="box"> <div class="schatten"> freier Text </div> </div>
Основной код CSS3 для всех последующих примеров:
.box { position: relative; height: 12em; width: 31em; margin: 0 auto; z-index: 1; } .schatten { position: relative; color: #777; width: 80%; height: 80%; background: #fff; box-shadow: 0 1px 4px rgba(0, 0, 0, .3), 0 0 40px rgba(0, 0, 0, .1) inset; } .schatten:before { position: absolute; content: ""; z-index: -2; box-shadow: 0 0 15px rgba(0, 0, 0, .6); border-radius: 100px / 20px; }
Горизонтально изогнутая тень
.schatten1:before { top: 0; bottom: 0; left: 10px; right: 10px; }
Вертикально изогнутая тень
.schatten2:before { top: 10px; bottom: 10px; left: 0; right: 0; }
Загнутые уголки
.schatten3:before, .schatten3:after { position: absolute; content: ""; width: 50%; height: 30%; bottom: 2px; left: 10px; box-shadow: 0 15px 10px rgba(0, 0, 0, .6); transform: rotate(-3deg); z-index: -1; } .schatten3:after { right: 0; left: auto; transform: rotate(3deg); }
Тень в перспективе
.schatten4:before, .schatten4:after { position: absolute; content: ""; z-index: -2; bottom: 5px; width: 80%; height: 3.1em; } .schatten4:before { left: 50px; box-shadow: -80px 0 8px rgba(0, 0, 0, .4); transform: skew(45deg); } .schatten4:after { left: 40px; box-shadow: 80px 0 8px rgba(0, 0, 0, .4); transform: skew(-45deg); }
Висящая тень
.schatten5 { position: relative; color: #777; width: 80%; height: 9.5em; top: 0; background: #fff; box-shadow: 0 1px 4px rgba(0, 0, 0, .3), 0 -30px 40px rgba(0, 0, 0, .1) inset; transition: 1s ease-in-out; transform-style: preserve-3d; } .schatten5:after { content: ""; display: block; height: 80%; width: 75%; transform: rotateX(80deg) translate3d(0, 0, -44px); box-shadow: 50px 200px 25px 10px rgba(0, 0, 0, .3); transition: 1s ease-in-out; } .schatten5:hover { top: 35px; box-shadow: 0 1px 4px rgba(0, 0, 0, .3), 0 0 40px rgba(0, 0, 0, .1) inset; } .schatten5:hover:after { transform: rotateX(94deg) translate3d(0, 0, -70px); box-shadow: 50px 200px 25px 10px rgba(0, 0, 0, .4); }
Приподнятая тень
.schatten6:before { position: absolute; content: ""; z-index: -2; box-shadow: 0 0 15px rgba(0, 0, 0, .6); border-radius: 100px / 20px; } .schatten6 { top: 0; box-shadow: 0 25px 10px -10px rgba(0, 0, 0, .6), 0 1px 4px rgba(0, 0, 0, .3), 0 -30px 40px rgba(0, 0, 0, .1) inset; } .schatten6:hover { top: 15px; box-shadow: 0 10px 10px -10px rgba(0, 0, 0, .6), 0 1px 4px rgba(0, 0, 0, .3), 0 0 40px rgba(0, 0, 0, .1) inset; }