Miałem ten sam problem. Użyłem poniższego znacznika i początkowo ukryłem zawierający <div class="bxsliderWrapper">
z CSS display: none;
Zauważyłem, że szerokość slajdów <div class="slide">
została wyrenderowana przy 1px.
Podejrzewam, że ma to coś wspólnego z funkcją reagowania, biorąc wymiary początkowego kontenera, który był ukryty, i definiując style wbudowane dla każdego dopasowanego slajdu.
<div class="bxsliderWrapper">
<div class="bxslider">
<div class="slide">Your Content</div>
<div class="slide">Your Content</div>
<div class="slide">Your Content</div>
</div>
</div>
Moje rozwiązanie jest podobne do tego, co bradrice wspomniano o użyciu wbudowanej funkcji wywołania zwrotnego. Właśnie dodałem funkcję reloadSlider()
do funkcji show()
.
<script type="text/javascript">
var $j = jQuery.noConflict();
$j(document).ready(function(){
var homeSlider = $j('.bxslider').bxSlider();
$j(".bxsliderWrapper").show(0, "swing", function(){homeSlider.reloadSlider();});
});
</script>
Uruchamia ponowne ładowanie, gdy program show() zostanie zakończony.
.
EDITED
Oryginalny rozwiązanie powyżej pracował początkowo ale miałem problemy gdy bufor zdaje się podczas ciężkiej odświeżania shift + REFRESH
. Zakładam, że elementy kierowane przez funkcję .show()
nie były dostępne w czasie lub zasoby nie zostały jeszcze załadowane. (Zgaduję) Poniżej znajduje się poprawka dla tego zachowania.
Zamiast ukrywać suwak Bx zawierający <div>
z display: none;
, ukryłem obrazy slajdów za pomocą atrybutu visibility
CSS.
.bxslider .slide {
visibility: hidden;
}
Pozwala suwak do renderowania w odpowiednim rozmiarze, nie widząc obrazy na ekranie, aż będą gotowe. Następnie użyłem metody jQuery .css()
wyzwalanej przez $j(window).load()
, aby zmienić widoczność po wczytaniu strony. Zapewniło to, że cały kod i elementy istniały przed ich wyświetleniem.
<script type="text/javascript">
var $j = jQuery.noConflict();
$j(document).ready(function(){
var homeSlider = $j('.bxslider').bxSlider();
});
$j(window).load(function(){
$j(".bxslider .slide").css("visibility", "visible");
});
</script>
Ta metoda działa również z wielu suwaków na tej samej stronie. Zauważyłem, że metoda .show()
spowodowała pęknięcie wszystkich wystąpień suwaka. Zgaduję tylko, dlaczego jest to lepsze rozwiązanie, ale może ktoś może dodać trochę informacji, aby to lepiej zrozumieć.
Umieść 'display: hidden' na elemencie zawierającym suwak i na dokumencie. Pokaż go. –
Użyj przeliku: ukryty i wysokość: "wysokość suwaka" na elemencie zawierającym suwak. –