2009-04-22 14 views

उत्तर

20

IE और fadein/fadeOut कार्य करता है और पाठ तत्वों पर उनके प्रभाव के साथ एक ज्ञात बग नहीं है। यहाँ की जानकारी की जाँच करें:

http://blog.bmn.name/2008/03/jquery-fadeinfadeout-ie-cleartype-glitch/

ऐसा लगता है कि अपने मूल लिंक के बाद से मृत हो गया है। टिप्पणियों से एक अलग समाधान के साथ अपडेट किया गया:

http://malsup.com/jquery/cycle/cleartype.html

वैकल्पिक हल fadein के बाद एक कॉलबैक फ़ंक्शन में तत्व की 'फिल्टर' संपत्ति को दूर करने के लिए है() समाप्त हो गया है।

+1

खैर, यह नहीं सुंदर है कि यह aliased पाठ में fades तो फिल्टर बंद तस्वीरें, लेकिन यह काम करता है। हमें फ़िल्टर को फीका भी करना है! बांध आईई। – chrisdillon

+1

स्टैक ओवरव्लो इस समस्या से पीड़ित है (जब आप "नए उत्तरों लोड करें" पर क्लिक करते हैं)। मुझे उम्मीद है कि टीम में से एक यह जवाब देखती है। –

+1

यह मामूली सुधार प्रदान करता है: http://malsup.com/jquery/cycle/cleartype.html – chrisdillon

5

जो मुझे याद है, फ़िल्टर विशेषता को सेट करने का कारण बनता है। आपके fadeIn पूर्ण होने के बाद, तत्व से फ़िल्टर विशेषता हटा दें।

$('p.quote').fadeIn(2000, removeFilter); 

function removeFilter() { 
    $('p.quote').removeAttr("filter"); 
} 
2

ऐसा लगता है कि स्वीकार किए गए उत्तर में अब एक मृत लिंक है। मुझे लगता है कि एक ही जानकारी अब http://blog.wolffmyren.com/2009/05/28/jquery-fadeinfadeout-ie-cleartype-glitch/ पर उपलब्ध है। यह सुधार के लिए बेंजामिन माइकल नोवाकोविच को

धन्यवाद:

StackOverflow में जानकारी को संरक्षित करने के लिए, यहाँ है कि लिंक की सामग्री को कर रहे हैं!

jQuery fadein/fadeOut आईई ClearType गड़बड़

jQuery जावास्क्रिप्ट पुस्तकालय आज काम पर उपयोग करते समय, मैं IE7 के तहत एक गड़बड़ देखा। जब .fadeIn() और .fadeOut() jQuery में कार्यों के साथ एक एचटीएमएल नोड fading, IE खिड़कियों ClearType प्रतिपादन चला जाता है; जो बहुत बदसूरत पाठ में परिणाम। यह समस्या बहुत आम प्रतीत होती है, लेकिन कोई भी समस्या के लिए कोई अच्छा समाधान नहीं है।

इस समस्या को हल करने के लिए सबसे आम तरीका फिल्टर सीएसएस विशेषता को हटाने के द्वारा है। सामान्य जावास्क्रिप्ट में, यह इस प्रकार दिखाई देगा:

document.getElementById('node').style.removeAttribute('filter'); 

और jQuery में, यह इस तरह दिखेगा:

$('#node').fadeOut('slow', function() { 
    this.style.removeAttribute('filter'); 
}); 

बेंजामिन माइकल नोवाकोविच के माध्यम से » jQuery fadein/fadeOut आईई ClearType गड़बड़।

17

मुझे http://jquery.malsup.com/fadetest.html पर एक बेहतर, अधिक सामान्य समाधान मिला।

मैंने इसे लिया है और इसे एक स्टैंडअलोन जावास्क्रिप्ट फ़ाइल में अनुकूलित किया है जो jQuery फीड *() विधियों का उपयोग करने वाले पृष्ठों में शामिल किया जा सकता है।

// 
// jQuery IE Fade Fix 
// 
// Adapted from code found at http://jquery.malsup.com/fadetest.html. 
// 
// This is only needed for IE 7 and earlier, so this is best added to your page using IE's conditional comments 
// (http://msdn.microsoft.com/en-us/library/ms537512%28VS.85%29.aspx) as follows: 
//  <!--[if lt IE 8]><script type="text/javascript" src="jquery-ie-fade-fix.js"></script><![endif]--> 
// 
(function($) { 
    $.fn.fadeIn = function(speed, callback) { 
     if ($.isFunction(speed) && callback == undefined) { 
      callback = speed; 
      speed = 'normal'; 
     } 
     return this.animate({opacity: 'show'}, speed, function() { 
      if ($.browser.msie) 
      { 
       this.style.removeAttribute('filter'); 
      } 
      if ($.isFunction(callback)) 
      { 
       callback.call(this); 
      } 
     }); 
    }; 

    $.fn.fadeOut = function(speed, callback) { 
     if ($.isFunction(speed) && callback == undefined) { 
      callback = speed; 
      speed = 'normal'; 
     } 
     return this.animate({opacity: 'hide'}, speed, function() { 
      if ($.browser.msie) 
      { 
       this.style.removeAttribute('filter'); 
      } 
      if ($.isFunction(callback)) 
      { 
       callback.call(this); 
      } 
     }); 
    }; 

    $.fn.fadeTo = function(speed, to, callback) { 
     if ($.isFunction(speed) && callback == undefined) { 
      callback = speed; 
      speed = 'normal'; 
     } 
     return this.animate({opacity: to}, speed, function() { 
      if (to == 1 && $.browser.msie) 
      { 
       this.style.removeAttribute('filter'); 
      } 
      if ($.isFunction(callback)) 
       { 
       callback.call(this); 
      } 
     }); 
    }; 
})(jQuery); 

संपादित करें: शामिल joeformd के कॉलबैक के लिए ठीक।

EDIT2: कोने मामले के लिए ठीक जोड़ा गति से परिभाषित नहीं है जहां लेकिन जैसा कि मुझे याद है यह बच्चों के पर काम नहीं करेगा कॉलबैक -Tomi

+0

यह एक बहुत अच्छा ड्रॉप-इन समाधान है लेकिन कॉलबैक ने मेरे लिए काम नहीं किया है (मुझे लगता है कि 'यह' स्कोप तोड़ दिया है) मैंने यहां एक संशोधित संस्करण पोस्ट किया है: http://www.joelanman.com/archives/15 – joeformd

+0

धन्यवाद @ joeformd। मैंने नमूना कोड में अपना फिक्स शामिल किया है। – GBegen

+0

इस उत्तर को ऊपर उठाया गया। मैं इस सरल ड्रॉप-इन समाधान को बहुत पसंद करता हूं। साझा करने के लिए धन्यवाद। मेरे लिए बहुत अच्छा काम किया। –

3

सीधे शब्दों में सटीक तत्व आप fading करने के लिए पृष्ठभूमि रंग लागू है .. जहाँ तक यदि आप माता-पिता के लिए आवेदन करते हैं, तो इसे इस तत्व पर होना चाहिए जो अलियाड हो जाता है।

1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

इसे अपने एचटीएमएल दस्तावेज़ों के शीर्ष पर जोड़ें। यह आईई 8.07xxxx पर काम करता है। मुझे यकीन नहीं है कि यह तकनीक आईई 7 पर काम करती है।

1

इसे अपने जेएस में जोड़ें। यह बग को ठीक करता है और सही दायरे को बनाए रखता है। जब jQuery को जोड़ा गया, यह अभी भी सभी इकाई परीक्षण गुजरता है:

(function($){ 
    $.each(['fadeIn', 'fadeOut'], function(i, method){ 
     var _fn = $.fn[method]; 
     $.fn[method] = function(easing, callbackå, cancel) { 
      if ($.isFunction(easing)) { 
       callback = easing; 
       easing = 'normal'; 
      } 
      return _fn.call(this, easing, function(){ 
       jQuery.browser.msie && !cancel && this.style.removeAttribute('filter'); 
       (callback || $.noop).call(this); 
      }); 
     } 
    }) 
})(jQuery); 

मुझे :) द्वारा लिखित

इन समाधानों में से
0

कोई भी मुझे एक div में fading, jQuery के animate का उपयोग कर के रूप में फिल्टर शैली में किया गया था के लिए काम किया तत्व।

$(div).animate({opacity: 1}, 800, function() { 
    $(this).removeAttr('style'); 
}); 

जाहिर है यह किसी भी अन्य इनलाइन शैलियों आप भी हो सकता है निकाल देंगे: इसलिए कि मैं क्या करने की जरूरत है।

0

इनमें से कोई भी समाधान मेरे लिए काम नहीं करता है या नहीं तो वे अनुपयुक्त थे, उदाहरण के लिए मैं सिर्फ एक आईई बग के लिए अपना एचटीएमएल 5 डीटीडी घोषणा नहीं बदलना चाहता हूं, और मैं इसका उपयोग कर अपने पृष्ठभूमि रंग को नहीं बदल सकता एक और एनीमेशन में।

मैं भी jQuery .animate का उपयोग कर रहा हूं, इसलिए यह थोड़ा सा विषय हो सकता है लेकिन समाधान जो पूरी तरह से काम करता है this one था। इसका एक अच्छा लेख, लेकिन कोर कोड है: बजाय fadeTo उपयोग करें और यह गियर अप करने के लिए 99%:

$('#sample').animate(
    {opacity:1.0}, 
    500, 
    function() { 
     $(this).css('filter',''); 
    } 
); 
1

यह कैसे मैं अपने बदसूरत आईई 8 पर पाठ में फीका से छुटकारा मिला है!

इसलिए यह मेरे लिए काम किया:

$(function() { 
    $('p.quote').fadeTo("slow",0.99); 
}) 
संबंधित मुद्दे