Ответ crdunst довольно аккуратный и самый красивый ответ, который я нашел, но нет никакого объяснения того, как его использовать, и код больше, чем нужно.
Единственный код, который вам нужен:
#element {
background-color: #cacbcf;
text-shadow: 2px 2px 4px rgba(0,0,0, 0.5);
filter: chroma(color=#cacbcf) progid:DXImageTransform.Microsoft.dropshadow(color=#60000000, offX=2, offY=2);
}
Сначала вы ДОЛЖНЫ указать background-color
- если ваш элемент должен быть прозрачным, просто скопируйте цвет фона родительского элемента или позвольте ему наследовать. Цвет в цветном фильтре должен соответствовать цвету фона, чтобы исправить эти артефакты вокруг текста (но здесь вы должны скопировать цвет, вы не можете написать inherit
). Обратите внимание, что я не сократил drophadow-filter - он работает, но затем тени обрезаются до размеров элемента (это заметно при больших тенях; попробуйте установить смещения по крайней мере 4).
СОВЕТ: Если вы хотите использовать цвета с прозрачностью (альфа-канал), запишите в # AARRGGBB нотацию , где AA обозначает шестнадцатеричное значение непрозрачности - от 01 FE, потому что FF и, по иронии судьбы, также 00 означает отсутствие прозрачности и, следовательно, бесполезно .. ^^ Просто идите немного ниже, чем в нотации rgba, потому что тени не мягкие, и то же самое альфа-значение будет казаться темнее. ;)
Хороший фрагмент для преобразования альфа-значения для IE (JavaScript, просто вставьте в консоль):
var number = 0.5; //alpha value from the rgba() notation
("0"+(Math.round(0.75 * number * 255).toString(16))).slice(-2);
ВОПРОСЫ: Текст / шрифт ведут себя как изображение после применения тени; он становится пиксельным и размытым после увеличения ... Но это проблема IE, а не моя.
Живая демоверсия тени здесь: http://jsfiddle.net/12khvfru/2/