IE8 Непрозрачность Проблема - PullRequest
2 голосов
/ 03 октября 2011

Я понимаю, что здесь было множество вопросов, касающихся проблем с непрозрачностью в IE.Я прошел почти все из них и перепробовал почти все доступные методы, которые мне удалось найти, но ничего не получалось.

Самое странное, что проблема непрозрачности - это единичный случай, возникающий только в IE8;У IE7 не было никаких проблем с этим вообще.Прежде чем я продолжу говорить о проблеме, с которой я сталкиваюсь, позвольте мне показать вам пример моей разметки на разрабатываемом мной одностраничном HTML-сайте:

Это CSS, управляющий непрозрачностью для DIVsв вопросе:

#home, #services, #freeport, #about-us, #advantage, #contact{
        opacity:0;
        -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
        filter: alpha(opacity=0);
        width:400px;
        zoom:1;
    }

И это JQUERY, который я использовал для управления настройками их непрозрачности:

$(document).ready(function(){ //fades in the menu div first followed by the home div

    (function _loop( nodelist ) {
    $( nodelist.shift() ).fadeTo( 2400, 1, function() {
        _loop( nodelist );
    });
    }( ["#menu", "#home"] ));

    $("#about-us-button").click(function(){ //upon clicking the home button, fades in the home div and fades out the rest of the divs
          $("#about-us").fadeTo(900, 1);
          $("#home, #freeport, #advantage, #services, #contact").fadeTo(1000, 0);
    });

});

ПРИМЕЧАНИЕ. Я только показал, как исчезает # about-us divпосле нажатия кнопки # about-us-button;остальные разделы работают так же.Также не учтен HTML, потому что он довольно прост - контейнер DIV, содержащий некоторый текст, вот и все.

Итак, применяя стили CSS, упомянутые выше, мне удалось заставить DIV появляться в правильных экземплярах во всехбраузеры (включая IE7) кроме IE8.

Больше всего меня озадачивает то, что фильтр работает в IE7, но -ms-фильтр, который, предположительно, специфичен для IE8, не работает.Я прочитал о проблеме HasLayout и применил все методы безрезультатно.Я также позаботился о том, чтобы -ms-filter был до фильтра, но это тоже не сработало.

Я также прибег к тому, чтобы IE8 эмулировал IE7 с помощью метода мета-тегов, но, к сожалению, это тоже не удалось.

Следует отметить, что я пометил это как HTML5 и, столкнувшись с этой проблемой, пометил его до XHTML 1.0 Transitional и HTML 4.0, но ничего не получалось - даже IE8 как метод IE7.

Кто-нибудь знает, что можно сделать, чтобы решить эту проблему?Заранее спасибо, ребята!

1 Ответ

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

Я столкнулся с подобной проблемой не так давно. Я не помню точных деталей, но я верю, что произошло то, что jQuery установил значение непрозрачности на уровне элемента, постоянно изменяя его по мере его исчезновения - и затем, когда завершение было завершено, оставлял атрибут там, но пусто, переопределяя непрозрачность файла CSS. Вы сможете проверить это дважды с помощью Firebug или Element Inspector в Chrome.

Я полагаю, что именно это я и использовал для исправления ошибки, заставляя jQuery очистить этот атрибут, когда это было сделано, чтобы атрибут opacity, указанный в моем CSS-файле, мог фактически вступить в силу. Конечно, настройте его так, чтобы он правильно вписывался в ваш код.

$("#darkbg, #popup-movie-panel").fadeIn(300, function(){
        if(jQuery.browser.msie) {
            this.style.removeAttribute('filter');
            }
        })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...