Как я не могу показать тень от CSS на ie6? - PullRequest
2 голосов
/ 17 мая 2011

Я хочу знать, могу ли я игнорировать мою тень css на ie6 без использования условных операторов для фильтрации css.

вот мой текущий css:

/* Drop shadow */
-ms-filter: "progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=135, Color='#000000')";
filter: progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=135, Color='#000000');
box-shadow: 0px 10px 15px rgba(0, 0, 0, 0.7);
-moz-box-shadow: 0px 10px 15px rgba(0, 0, 0, 0.7);
-o-box-shadow: 0px 10px 15px rgba(0, 0, 0, 0.7);
-webkit-box-shadow: 0px 10px 15px rgba(0, 0, 0, 0.7);

Может быть -ms-filter-ie6: none или что-то еще: P по тем же направлениям

Ответы [ 5 ]

3 голосов
/ 17 мая 2011

Добавление следующей строки ниже ваша строка -ms-filter: должна работать:

* html -ms-filter: "progid:DXImageTransform.Microsoft.Shadow(enabled=false)";

* html только для чтения IE6.Но это CSS-хак, что очень плохая практика.Вместо этого вы должны использовать условные выражения.

2 голосов
/ 17 мая 2011

Использовать только IE Условный комментарий CSS , который отключает собственный фильтр для IE6 / Win:

<!--[if IE 6]>
    <style type="text/css">
        .drop-shadow {
            filter: progid:DXImageTransform.Microsoft.Shadow(enabled='0');
        }
    </style>
<![endif]-->

Атрибут фильтра ' enabled ' являетсялогическое значение, которое ожидает значение true или false для включения или отключения фильтра:

0 = false (фильтр отключен)
1 = true (значение по умолчанию. Фильтр включен)

1 голос
/ 25 мая 2011

Я поместил условные выражения в тег <html>:

<!DOCTYPE HTML>
<!--[if lt IE 7 ]>  <html class="ie ie6"><![endif]-->
<!--[if gte IE 7 ]> <html class="ie"><![endif]-->
<!--[if ! IE ]><!--><html class="notie"><!--<![endif]-->
<head>
    ...

И тогда в таблице стилей это можно сделать (сейчас вам нужна только одна таблица стилей, а в HTML нет встроенных стилей)

.ie6 .drop-shadow
{
    filter:none; /* or whatever */
}

Если вам нужен другой код для других IE, вы можете добавить больше условных выражений. У меня был один проект, в котором IE6, IE7, IE8 и IE9 вели себя по-разному по крайней мере для одного элемента (но FF, Chrome и Safari были близки), поэтому было пять разных тегов <html>.

Если вы используете DreamWeaver, я слышал, что вам понадобятся те же комментарии и к </html>.

Если вам нужен другой код для других браузеров, вам придется использовать jQuery или аналогичный для добавления классов: например, $('html').addClass('ff4');, хотя, если js не включен, все может быть неожиданно.

1 голос
/ 17 мая 2011

Вы можете использовать te /**/ hack.

filter<b>/**/</b>: progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=135, Color='#000000');

Это должно быть проигнорировано ie6, но у меня нет ie6, чтобы проверить это.

Как сказал Джастин Сатыр, это взлом, и вы должны использовать условные комментарии.

1 голос
/ 17 мая 2011

IE6 знает только о filter, он не распознает стиль -ms-filter, поэтому удаление filter поможет. Недостатком является то, что это также убило бы его для IE7.

...