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);

, но они дают просто ужасную картинку, поэтому использовать их, на мой взгляд, неразумно: лучше оставить блок без тени.

Теги: