Размытие тегов CSS3 в IE9

Кто-нибудь еще заметил, что IE9 "стандартная" реализация CSS box-shadow отличается от других браузеров? Всякий раз, когда я использую box-shadow и устанавливаю значение размытия, IE9, похоже, отображает размытие примерно на половину значения, которое делают Firefox, Safari, Chrome и Opera.

Есть ли способ обойти это? И в чем же смысл IE9, поддерживающий box-shadow как стандартное свойство, если он не выглядит так же, как box-shadow во всех других браузерах?

(Технически, Safari 5 по-прежнему поддерживает только -webkit-box-shadow, а не стандартное свойство box-shadow, но также имеет смысл одинаково визуализировать тень в Firefox 4, Chrome 11 и Opera 11. IE9 нечетный человек, несмотря на поддержку того же стандартного синтаксиса box-shadow).

Ответы

Ответ 1

У меня также была эта проблема, и я решил это для себя с помощью этого script (используя jQuery).

Обратите внимание, что это экспериментально, и я не тестировал производительность. Также: вы должны запустить его снова, если вы добавите элементы в свой дом, у которого есть тень. Я предполагаю, что это можно решить, используя htc файл.

$(function(){
    fixBoxShadowBlur($('*'));
});

function fixBoxShadowBlur(jQueryObject){
    if($.browser.msie && $.browser.version.substr(0, 1) == '9'){
        jQueryObject.each(function(){
            boxShadow = $(this).css('boxShadow');
            if(boxShadow != 'none'){
                var bsArr = boxShadow.split(' ');
                bsBlur = parseInt(bsArr[2]) || 0;
                bsBlurMeasureType = bsArr[2].substr(("" + bsBlur).length);
                bsArr[2] = (bsBlur * 2) + bsBlurMeasureType;
                $(this).css('boxShadow', bsArr.join(' '));
            }
        });
    }
}

Ответ 2

Используете ли вы правильный синтаксис?

-webkit-box-shadow: 2px 2px 16px #2b2b2b;
-moz-box-shadow: 2px 2px 16px #2b2b2b;
box-shadow: 2px 2px 16px #2b2b2b;

Ответ 3

К сожалению, MS, похоже, не понимает концепцию стандартов.

Я думаю, что самым простым решением является установка условной таблицы стилей.

<!--[if IE 9]> <link href="css/ie9-fix.css" rel="stylesheet" type="text/css" /> <![endif]-->

Я нашел, что мне нужно настроить примерно на 40% в IE9, чтобы соответствовать Firefox и др.

Firefox CSS:

-moz-box-shadow: 0px 0px 11px rgba(0, 0, 0, .7);
-webkit-box-shadow: 0px 0px 11px rgba(0, 0, 0, .7);
box-shadow: 0px 0px 11px rgba(0, 0, 0, .7); 

IE9 CSS:

-moz-box-shadow: 0px 0px 18px rgba(0, 0, 0, .7);
-webkit-box-shadow: 0px 0px 18px rgba(0, 0, 0, .7);
box-shadow: 0px 0px 18px rgba(0, 0, 0, .7); 

Ответ 4

ie10 имеет ту же проблему. Чтобы атаковать как ie9, так и ie10, вы можете использовать этот взлом css. Нет необходимости в комментариях. (Только для CSS)

.yourclass {
  -moz-box-shadow: 0px 0px 11px rgba(0, 0, 0, .7);
  -webkit-box-shadow: 0px 0px 11px rgba(0, 0, 0, .7);
  -o-box-shadow: 0px 0px 11px rgba(0, 0, 0, .7);
  box-shadow: 0px 0px 11px rgba(0, 0, 0, .7); 
}
@media screen and (min-width:0\0) {
    /* IE9 and IE10 rule sets go here */
 .yourclass {
   box-shadow: 0px 0px 18px rgba(0, 0, 0, .7); 
 }
}

(Воспроизведение с значениями ie)