Ответ 1
Это определенно возможно.
Использование фильтров:
img {
-webkit-filter: drop-shadow(5px 5px 5px #222);
filter: drop-shadow(5px 5px 5px #222);
}
Можно ли сделать тень на содержимое PNG?
Не квадрат, но объект затеняет тень, что воздействует на непрозрачное содержимое PNG.
Это определенно возможно.
Использование фильтров:
img {
-webkit-filter: drop-shadow(5px 5px 5px #222);
filter: drop-shadow(5px 5px 5px #222);
}
Это невозможно сделать в CSS. Однако вполне возможно сделать это через холст, но он будет несколько неэффективным (поскольку он обрабатывается клиентом каждый раз) и будет зависимым от JavaScript. Выполнение этого в PNG будет проще и будет работать над большим количеством браузеров.
Если вам нужна дополнительная информация об этом, найдите в Интернете такие вещи, как "html canvas blur" и "html canvas load image". Или еще лучше, используйте функциональность теневой тени, которая может все это сделать.
Вот пример: http://philip.html5.org/demos/canvas/shadows/various.html
context.shadow(Color|OffsetX|OffsetY|Blur)
по желаниюcontext.drawImage
И бонус:
context.toDataURL
, если вы хотите экспортировать в PNG (создайте веб-приложение, в которое вы вставляете PNG, и он дает вам тени!)Как меняются времена. Теперь возможно в некоторых браузерах, как показано в принятом в настоящее время ответе.
Это невозможно сделать с помощью CSS:
То, что я предполагаю, вы просите. Забастовкa >
Пока он не будет доступен для CSS, вы можете попробовать мой подход.
В моем примере используется это изображение:
потому что он имеет прозрачный фон и не является квадратным (для того, чтобы CSS-тень появилась в действии). Это не очень причудливо, но служит для этого небольшого и простого учебника.
Следующий шаг, который я сделал, состоял в том, чтобы создать другое изображение, основанное на приведенном выше, чтобы разместить его под оригиналом.
Шаг1. Добавить размытие:
Step2. Удалены свет и контраст:
Итак, у меня есть оригинал и тень.
Далее я покажу его, как будто это тень:
Стиль:
.common {width: 100px;height: 100px;background-size: 100% 100%; position:absolute;}
.divOriginal {background-image: url(../img/original.png);top:2em;left:2em;z-index:10;}
.divShadow {background-image: url(../img/shadow.png);top: 3em;left: 2.5em;z-index:8;}
Сделайте магию:
Добавьте один div и установите attribute class="divOriginal common
", а другой - class="divShadow common"
.
Результат должен быть:
Ура!
Ади
Я написал для этого плагин jQuery, основанный на предложении Криса Моргана о холсте. Вы можете найти его на GitHub здесь: https://github.com/Kukunin/image-shadow
Использовать createjs образец можно найти по адресу JSFiddle
shadowTarget.shadow = shadow;
stage.addChild(shadowTarget);
shadowTarget.x = 500 / 2;
shadowTarget.y = 450 / 2;
shadowTarget.regX = shadowTarget.image.width/2;
shadowTarget.regY = shadowTarget.image.height/2;