IE5.5 Фильтры - почему фильтр: градиент (свойства) недоступен, а фильтр: альфа (свойства)? - PullRequest
0 голосов
/ 06 октября 2011

Вот вопрос для всех вас, экспертов.

Когда IE5.5 запустился, он получил ряд новых фильтров, таких как:

filter:progid:DXImageTransform.Microsoft.Gradient(sProperties).

Более поздние версии IEподдерживает более короткий метод для включения альфа-прозрачности:

filter: alpha(opacity = 50);

У кого-нибудь есть хорошее объяснение, почему IE не поддерживает более короткий метод для градиента, например filter: gradient(startcolor, endcolor)?

1 Ответ

1 голос
/ 06 октября 2011

Весь стиль filter является собственностью Microsoft и IE и никогда не подвергался никакому внешнему процессу стандартизации.

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

Одна вещь, которую стоит знать о синтаксисе filter:progid:...., это то, что это недопустимый CSS из-за двоеточия после progid. Я видел случаи, когда этот синтаксис действительно вызывал серьезные ошибки синтаксического анализа в других браузерах. (в одном случае Firefox 3.6 отказался от дальнейшего анализа таблицы стилей после поворота filter)

Проблема такого рода, возможно, была частью мотивации для предоставления более коротких альтернативных синтаксисов, так как это, по крайней мере, синтаксически допустимый CSS, хотя это не объясняет, почему они сделали бы это для некоторых фильтров, а не для всех их.

Кроме этого, я не знаю веских причин, по которым они предпочли бы предоставить краткие варианты одних стилей filter, а не других. Возможно, они решили сделать это только для тех, кто был в популярном использовании? Но каковы бы ни были причины принятых решений, эти короткие стили применимы только к IE6 и IE7, они в далеком прошлом и в настоящее время представляют исторический интерес.

В IE8 они заменили filter на -ms-filter, вернулись к кратким версиям стилей и добавили требование заключить значение в кавычки (таким образом, решив проблему с недопустимым CSS, описанную выше).

С IE9 весь вопрос становится спорным, потому что они полностью отбросили стиль filter и внедрили стандартные альтернативы CSS3.

Если вы пытаетесь работать со стилями filter, особенно с градиентами, я настоятельно рекомендую изучить такие инструменты, как CSS3Pie , который представляет собой оболочку Javascript, разработанную, чтобы IE6-8 мог поддерживать CSS3 стандартные стили для градиентов и т. д. это позволяет вам писать свой код CSS без необходимости использовать нестандартные фильтры только для IE. Существуют другие подобные инструменты для других стилей фильтра.

...