2013-04-29 4 views
6

मैं bxslider तत्व की स्टाइल और जावास्क्रिप्ट को हटाने की कोशिश कर रहा हूं, जब ब्राउज़र विंडो किसी निश्चित आकार में घट जाती है और सूची में एक अलग शैली लागू करती है, लेकिन यह अजीब चीजें कर रही है।बीएक्सस्लाइडर के साथ विंडो का आकार बदल गया ब्रेक स्टाइल

502px से नीचे स्केलिंग, सबकुछ ठीक दिखता है और ठीक काम करता है, लेकिन जब वापस फिर से स्केलिंग होता है तो स्लाइडर गायब हो जाता है, लेकिन नई स्टाइल टूट जाती है। फिलहाल मैं पेज को फिर से लोड करता हूं अगर यह 502 पीएक्स के तहत चला जाता है, जो सिर्फ भयानक लगता है।

संपादित करें:

यहाँ मेरी कोड है के रूप में अनुरोध किया है, मैं एक JSFiddle के लिए प्रासंगिक HTML, जावास्क्रिप्ट और सीएसएस जोड़ दिया है: http://jsfiddle.net/tYRJ2/2/। (सीएसएस पूरा नहीं हुआ है, लेकिन यह समस्या दिखाता है।)

var sliderActive = false; 
var slider; 

function createSlider() { 
    slider = jQuery('.bxslider').bxSlider({ 
     adaptiveHeight: false, 
     swipeThreshold: 40, 
     controls: true, 
     auto: true, 
     pause: 6000, 
     autoHover: true, 
     }); 
     return true; 
} 

//create slider if new page is wide 
jQuery(document).ready(function(){ 
    if (window.innerWidth > 502) { 
     sliderActive = createSlider(); 
    } 
}); 

//create/destroy slider based on width 
jQuery(window).resize(function() { 

    //if wide and no slider, create slider 
    if (window.innerWidth > 502 && sliderActive == false) { 
     sliderActive = createSlider(); 
    } 

    //else if narrow and active slider, destroy slider 
    else if (window.innerWidth <= 502 && sliderActive == true){ 
     slider.destroySlider(); 
     sliderActive = false; 
     location.reload(); //fudgey 
    } 
    //else if wide and active slider, or narrow and no slider, do nothing 
}); 

किसी भी मदद की बहुत सराहना की जाती है!

+0

मैं तुम्हें एक [*** jsFiddle यहाँ ***] (http शुरू कर दिया: //jsfiddle.net/SpYk3/tYRJ2/), अगर आप अपना एचटीएमएल जोड़ सकते हैं, इसे सेव करें, और लिंक पोस्ट करें, हम इसे बहुत आसान समझ सकते हैं – SpYk3HH

+0

अब अगली समस्या, मैं नहीं देखता कि आपके पास "माध्यमिक" स्टाइल सेटअप कहां है। जहां तक ​​मैं देख सकता हूं, स्लाइडर नष्ट हो रहा है और खिड़की के आकार में बदलाव के रूप में पुनर्निर्माण कर रहा है। एक विचार, यदि आप 'ul' के लिए एक अलग "गैर-स्लाइडर" शैली चाहते हैं, जब bxslider नष्ट हो जाता है, तो नाम को एक div में रखें। यदि आप लोड के बाद अपना एचटीएमएल देखते हैं, तो आप देखेंगे कि बीएक्सस्लाइडर आपके उल को अपने स्वयं के divs के अंदर ले जाता है, इस प्रकार यदि आपके पास '#myDiv> ul' जैसे कुछ सीएसएस थे तो स्लाइडर नष्ट होने पर आपकी उल स्टाइल केवल तभी लागू होगी, इस प्रकार आपको छोटी खिड़कियों के लिए अपनी शैली दे रही है – SpYk3HH

+0

ओयू, एनएम, आगे की समीक्षा पर, मुझे लगता है कि बीएक्सस्लाइडर नष्ट नहीं हो रहा है। पूरी तरह से नहीं। सीएसएस बदल जाता है, और एचटीएमएल, लेकिन आदेश अभी भी वर्ग "bxslider" वाले elment को भेजा जा रहा है। यह मामला है। अपने यूएल पर एक आईडी डालें और अपने चयनकर्ता के रूप में इसका इस्तेमाल करें। जब आप नष्ट करते हैं और – SpYk3HH

उत्तर

3

यह दिखाई देगा (और मैंने पहले यह समस्या देखी है, वास्तव में जो समाधान मैं देने वाला हूं, वह मुझे एक और छवि स्लाइडर के साथ एक ही समस्या है), "नष्ट" आदेश पूरी तरह से नष्ट नहीं कर रहा है स्लाइडर। इस तरह के मामले में, एक "आसान" चीज समय से पहले स्लाइडर के बैक अप क्लोन को सहेजना होगा, फिर इसे नष्ट करने के बाद अपने स्लाइडर को एक साथ बदलने के लिए इसका उपयोग करें।

उदाहरण:

//create slider if page is wide 
jQuery(document).ready(function(){ 
    sliderClone = jQuery('.bxslider').clone(); // here we create our clone to hold on to original HTML 
    if (window.innerWidth > 502) { 
...... some time later ................. 
    sliderActive = false; 
    slider.replaceWith(sliderClone.clone()); // here i replace the "tampered" HTML with a clone of the "original" that we cloned off for safe keeping earlier 

इसके अलावा, मैं टिप्पणी में पहले उल्लेख किया है के रूप में। BXSlider divs बनाता है यह आपके यूएल के चारों ओर लपेटता है। इसलिए यदि आप छोटे होने के लिए पूरी तरह से अलग स्टाइल चाहते हैं, तो बस अपने यूएल को एक आईडी में एक आईडी के साथ शुरू करने के लिए लपेटें, फिर उस DIV> UL के लिए सीधी स्टाइल लिखें।

उदाहरण:

एचटीएमएल

<div id="myBXSlider"> 
    <ul class="bxslider"> 
     <li> 
      ...... 

सीएसएस

// the following first applies to the "slider" when active, 
// using bx-slider's class structure 
.bx-viewport { 
    margin: 0; 
} 

.bx-viewport h2 { 
    margin-top: 1em; 
} 

.bx-viewport li { 
    list-style: none; 
    padding: 0 1em; 
    margin: 1%; 
    background-color: #eee; 
    -moz-box-shadow: 0 0 10px #bbb; 
    -webkit-box-shadow: 0 0 10px #bbb; 
    box-shadow: 0 0 10px #bbb; 
    border: solid #919396 2px; 
} 
// now for custom styling for when it's just our div then list 
#myBXSlider > ul { 
    display: block; 
    margin: 0 auto; 
} 
#myBXSlider > ul li { 
    background: #FFA; 
    color: #F00; 
    padding: .5em 1em; 
} 
#myBXSlider > ul h2 { 
    font-style: italic; 
} 
// etc... etc ..... and so on 
+0

अब यह इस विधि के साथ काम कर रहा है, धन्यवाद! – Koozer

+0

@ कुज़र केवल, मैंने अभी थोड़ा और जानकारी के साथ अपना जवाब अपडेट किया है, उम्मीद है कि यह आपके अंतिम लक्ष्य की ओर मदद करेगा! शुभ लाभ! – SpYk3HH

संबंधित मुद्दे