CSS3: Box-shadow
Работает во всех нормальных браузерах, в IE – с версии 9.
В общем случае свойство записывается так:
div {
-webkit-box-shadow:0px 3px 13px rgba(0, 0, 0, 0.34);
box-shadow:0px 3px 13px rgba(0, 0, 0, 0.34);
}
или так:
div {
-webkit-box-shadow:1px 1px 3px 5px #fff;
box-shadow:1px 1px 3px 5px #fff;
}
Принципиальная разница такая: первый способ позволяет к тени применять свойство opacity, что даёт возможность создавать тени с заданным уровнем прозрачности.
Некоторая сложность первого способа в том, что цвет нужно указывать в формате RGB (всё же привычнее работать с шестизначным значением).
Теперь про значения, выраженные в пикселях.
1) Первое значение указывает сдвиг по оси х;
2) Второе — по оси y;
3) Третье — радиус размытия тени;
4) Растяжение тени (при отсутствии значения принимается за 0).
Тень можно направлять не только от элемента, но и внутрь элемента. Для этого перед значениями нужно прописать слово inset:
div {
-webkit-box-shadow:inset 0px 3px 13px rgba(0, 0, 0, 0.34);
box-shadow:inset 0px 3px 13px rgba(0, 0, 0, 0.34);
}
Для создания множественных теней цепочки значений следует записывать через запятую:
div {
-webkit-box-shadow:3px 5px 2px rgba(0, 0, 0, 0.34), -webkit-box-shadow:inset 0px 3px 13px 10px rgba(0, 0, 0, 0.34);
box-shadow:3px 5px 2px rgba(0, 0, 0, 0.34), box-shadow:inset 0px 3px 13px 10px rgba(0, 0, 0, 0.34);
}
Для IE ранних версий существуют костыли вроде этого:
filter: progid:DXImageTransform.Microsoft.dropshadow(offX=5, offY=5, color=#000000);
filter: progid:DXImageTransform.Microsoft.shadow(direction=120, color=#000000, strength=10);
, но они дают просто ужасную картинку, поэтому использовать их, на мой взгляд, неразумно: лучше оставить блок без тени.