2012-08-01 5 views
6

मैं कोड के एक साधारण स्निपेट में jQuery का उपयोग कर li तत्व की चौड़ाई को एनिमेट कर रहा हूं। मैं चौड़ाई को एनिमेट करने के लिए हैंडलर और .animate() के रूप में hover() का उपयोग कर रहा हूं। मेरा कोड यहाँ है।jQuery के साथ चौड़ाई को एनिमेट करते समय अजीब "हिलना" प्रभाव (केवल क्रोम में!)

$('li').each(function() { 
    //store the original width of the element in a variable 
    var oldWidth = $(this).width(); 
    $(this).hover(
     function() { 
      //when the mouse enters the element, animate width to 900px 
      $(this).animate({width: '900px'}, 600, 'linear') 
     }, 
    function() { 
      //when the mouse leaves, animate back to the original width 
      $(this).animate({width: oldWidth}, 350, 'linear') 
     } 
    ); 
}); 

कोड वास्तव में बहुत सरल है और लेकिन काम करता है क्रोम में एक बहुत अजीब मोड़ के साथ। तत्वों को एनिमेट करते समय, li तत्व "हिलाएं" जैसे कि वे वास्तव में ठंडा हैं और कंपकंपी कर रहे हैं। आप यहां लाइव उदाहरण में व्यवहार देख सकते हैं: http://missmd.org/ (संपादित करें: बग अब तय किया गया है)

मैंने jQuery के साथ पहले सामान का एक गुच्छा एनिमेट किया है और इस व्यवहार को कभी नहीं देखा है। क्या ऐसा कोई स्पष्टीकरण है कि ऐसा क्यों होता है और मैं इसके आसपास कैसे हो सकता हूं? मैं सोच रहा हूं कि ऐसा इसलिए है क्योंकि मैंने तत्वों को दाईं ओर फ़्लोट किया है और बाईं ओर एनिमेट कर रहा हूं। बग पूरी प्रस्तुति से बहुत परेशान है और इसे बहुत कम करता है (कम से कम मेरे लिए)। किसी और ने इसे पहले देखा? स्पष्ट करने के लिए

संपादित करें: यह वास्तविक li तत्व नहीं है कि "बुख़ार" यह यह के भीतर पाठ कि थोड़ा लेकिन काफ़ी हिला एनीमेशन रन के रूप में बाएं से दाएं बहुत जल्दी से है। मैं उलझन में हूं।

संपादित दो: सीएसएस के साथ एक सा नगण्य अब मैं केवल (मेरे लिए 21.0.1180.60 बीटा मी) क्रोम में प्रभाव पुन: पेश कर सकते हैं के बाद। फ़ायरफ़ॉक्स में यह इरादे के रूप में काम करता है। यह आईई में भी बहुत अच्छा काम करता है। बहुत विडंबना है कि क्रोम (आमतौर पर इस सामान के साथ महान) मुझे अब परेशानी दे रहा है। बालों को बाहर खींचता है, सैनिटी

यहां मेरा HTML है जो इसके निचले हिस्से तक पहुंचने में मदद करता है। हमने ChrisFrancis 'jsFiddle में समस्या का पुनरुत्पादन किया है।

<nav> 
    <ul class="nav"> 
     <li class="one"> 
      <a href="homeandnews/"> 
       <span class="title">Home and News</span> 
       <br/> 
       <span class="subtitle">Learn more about me and read general updates!</span> 
      </a> 
     </li> 
    </ul> 
<nav> 

मैं पूरी तरह से स्टंप हूं। यह क्रोम/वी 8 जेएस इंजन में भी एक बग हो सकता है और इसके बारे में हम कुछ भी नहीं कर सकते हैं।

+2

मैं इस व्यवहार को नहीं दिख रहा। शायद जब मैंने कोशिश की तो यह गर्म था? –

+0

मैंने अभी आपको फ़ायरफ़ॉक्स में पृष्ठ देखा है। कोई समस्या नहीं, यह ठीक काम कर रहा है। आपके द्वारा उल्लिखित झटके प्रभाव को नहीं देख सका। – SexyBeast

+0

हाहा, महान टिप्पणी। जब आप किसी भी 'li' तत्वों पर होवर करते हैं और वे चौड़ाई को एनिमेट करते हैं, तो उनके भीतर का पाठ बाएं से दाएं वास्तव में विचित्र रूप से shivers। स्क्रीन के दाईं ओर बारीकी से देखो। एकमात्र तरीका मैं आपको दिखा सकता हूं एक वीडियो है। मैंने कई मशीनों पर कोशिश की है और एक ही प्रभाव को अजीब तरीके से प्राप्त किया है। मैं उलझन में हूं। यह वास्तविक 'li' तत्व नहीं है जो shivers, यह इसके अंदर पाठ है। मैं सवाल स्पष्ट कर दूंगा। – wnajar

उत्तर

3

मैंने अपना सीएसएस बदल दिया: ul.nav li a, इसमें float: right जोड़कर और शेक को ठीक करें।

वैसे भी अगर यह मदद करता है, तो मुझे एक ही समस्या थी जब एक div की ऊंचाई ऊंचाई के साथ एक div के भीतर एनिमेटिंग: ऑटो। ऊंचाई को एक चौड़ाई चौड़ाई में बदलकर इसे हल किया गया।

उम्मीद है कि यह मदद करता है।

+0

यह पूरी तरह से तय ... अच्छी तरह से किया! – wnajar

+0

:) खुशी है कि यह मदद करता है। – Jaster

2

यह क्रोम संस्करण 21.0.1180.60 में एक बग प्रतीत होता है और यह अन्य संस्करणों में भी मौजूद हो सकता है। यहां कोड के साथ कुछ भी गलत नहीं है और मुझे लगता है कि हम इसे वर्कअराउंड पर छोड़ दें या अब एक बग रिपोर्ट सबमिट कर रहे हैं।

श्वास।

+1

ठीक है, मैंने एक क्रोमियम बग रिपोर्ट दायर की है - यदि आप रुचि रखते हैं तो आप इसे यहां ट्रैक कर सकते हैं [https://code.google.com/p/chromium/issues/detail?id=140038)! :) –

+0

बहुत बढ़िया! मैं निश्चित रूप से इसे ट्रैक करूँगा। – wnajar

+1

वाह, एक बग रिपोर्ट भरने के लिए धन्यवाद, यह एक बड़ा मुद्दा है ,((मेरे कुछ एनिमेशन अजीब अभिनय कर रहे हैं :( –

0

यह समस्या कुछ div एस के साथ हुई जब मैं इसके भीतर एक और div एनिमेट करने की कोशिश कर रहा था। मैंने जो देखा वह यह है कि ऐसा होता है यदि div या तत्व में सीएसएस गुण display:inline-block है। तत्व फ्लोट बनाने से समस्या हल हो गई होगी, लेकिन मेरे मामले में inline-block आवश्यक था।

मैंने देखा कि तत्व में vertical-align:middle सीएसएस संपत्ति भी थी। इसे vertical-align:text-bottom में बदलकर समस्या हल हो गई। क्रोम v23 में कोई और प्रभाव नहीं पड़ रहा है (बग अभी भी नए संस्करणों में जारी हो सकता है)।

4

मैं इस मुद्दे को भी देख रहा था और यह: -webkit-backface-visibility: hidden; मेरी समस्या का समाधान। एसवीजी पर CSS3 ट्रांसफॉर्म का उपयोग करते समय मैं इस अजीब हिलाता हूं।

अधिक जानकारी यहां पाया जा सकता: CSS3 transform rotate causing 1px shift in Chrome

आशा है कि यह मदद करता है

+0

इस चाल ने आपको धन्यवाद दिया! एक संक्रमण के साथ बॉक्स-छाया होवर प्रभाव के बाद क्षैतिज बचे हुए रेखाएं (कलाकृतियों) थीं। – Max

0

SVGs मिलाते हुए जब वहाँ पैरेंट टैग करने के लिए लागू एक सीएसएस संक्रमण के साथ इसी तरह की समस्या हुई। मैं सब कुछ मैं बेतरतीब ढंग से कर सकते थे लागू करने की कोशिश, और यह ठीक अंत में मदद की:

svg { 
    transform: translate3d(0, 0, 0); 
} 
संबंधित मुद्दे