Несколько фильтров CSS в IE
Мне просто интересно, что в IE можно использовать два разных фильтра, используя CSS.
Поэтому мне нужно использовать прозрачный PNG, а также некоторую непрозрачность для div
. Можно ли использовать оба из них?
Моя строка прозрачного создателя выглядит так:
li.item .item-texture {
background: none transparent scroll repeat 0% 0% !important;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/ie/articles/item-content-hov.png', sizingMethod='scale') !important;
}
Я попытался добавить еще одну строку (filter: alpha(opacity=50);
) и отдельные фильтры с запятой (.. 'scale') !important, alpha(opacity=50);
), но это было бесполезно.
Ответы
Ответ 1
Не может быть более одного свойства фильтра, поскольку IE будет использовать только последний.
ПРИМЕЧАНИЕ. Поскольку это похоже на получение нескольких голосов, я хотел бы пояснить, что это не означает, что вы не можете применять несколько фильтров, просто вы можете использовать только 1 filter
имущество. Если вы попытаетесь применить несколько фильтров и разделить их на несколько свойств, вступает в силу только последний.
В соответствии со следующей статьей из MSDN они разделяются не запятой, а пробелом: http://msdn.microsoft.com/en-us/library/ms532847(v=vs.85).aspx
Также обратите внимание, что некоторые фильтры IE (включая альфа) требуют, чтобы элемент имел макет для правильного применения: http://www.satzansatz.de/cssd/onhavinglayout.html
Ответ 2
Извините, но выбранный выше ответ неверен. Вы можете применять несколько фильтров в IE, но их нужно разделять одним или несколькими пробелами.
Запятая перед пробелами также будет работать, но только если она следует за закрывающей скобкой. Поэтому фильтры IE 4.0 без параметров, таких как gray
, не работают в этом случае. Лучше всего придерживаться пространств только как разделитель.
Если вы перейдете к приведенной выше ссылке: http://msdn.microsoft.com/en-us/library/ms532847 (v = vs .85)).aspx и нажмите следующую ссылку примера (в IE, конечно), вы увидите, что и поворот, и размытие применяется ко второму изображению. Из "источника просмотра" тег изображения:
<img id=image2 src="/workshop/samples/author/dhtml/graphics/sample.jpg"
style="filter:progid:DXImageTransform.Microsoft.Blur(strength=50),
progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"
height="165px" width="256px" border="0" alt="ocean beach">
Я несколько успешно смоделировал "распространение" теневой коробки в IE7 и 8 (хотя успех зависит от того, насколько приемлемым вы считаете это выглядит), используя:
filter: progid:DXImageTransform.Microsoft.Shadow(Color=#c5c1ae, Strength=10, Direction=0)
progid:DXImageTransform.Microsoft.Shadow(Color=#c5c1ae, Strength=10, Direction=90)
progid:DXImageTransform.Microsoft.Shadow(Color=#c5c1ae, Strength=10, Direction=180)
progid:DXImageTransform.Microsoft.Shadow(Color=#c5c1ae, Strength=10, Direction=270);
так что тень распространяется со всех сторон div. Я также комбинировал тени на div, которые содержат градиенты. Однако это не все происходит без собственной опасности. В приведенном выше примере тени имеют макет, и вам необходимо настроить поля, чтобы они соответствовали их размеру. Кроме того, при IE, являющемся IE, комбинации некоторых из этих фильтров могут иметь непреднамеренные последствия, что приводит к разработке обходных решений, отказа от подходов и вытягиванию одного волоса.
В ваших исходных примерах в вашем вопросе, если вы перечислите более одного фильтра, предыдущий будет переопределяться следующим, как и любое другое свойство CSS. В вашем втором примере "! Important" должен быть полностью в конце стиля, или весь блок CSS отбрасывается, поскольку он неверно отформатирован. (На самом деле, важно, чтобы все было выброшено полностью. Единственная причина, по которой вам когда-либо понадобится использовать его, - это разработка стороннего кода и защита ваших тегов от другого важного разработчика, над которым у вас нет контроля Если ваш стиль непреднамеренно переопределен, вам потребуется более конкретное объявление.)
Ответ 3
Запятая игнорируется. Для вставки нескольких фильтров вам потребуется пробел или новая строка.
progid:xxx progid:yyy / works
progid:xxx, progid:yyy / works
progid:xxx
progid:yyy / works
progid:xxx,progid:yyy / will not work