Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to hide images until AFTER jquery flexslider finishes loading

I tried to integrate wootheme's Flexslider on my site and it looks/works great except for when it is loading.

When you refresh the page with the slider, before flexslider loads (about 1 second) the first slide appears very big and flashes to black then dissapears and then the carousel appears.

I think the image is loading faster than the jquery? How can I hide the image unti jquery loads (like on the demo website, even if i refresh 3 billion times, the problem is never repeated on their website, it all loads gracefully! - http://flexslider.woothemes.com/carousel-min-max.html )

I loaded the flexlisder.js right after jquery and copied the same html code from the demo (to match the .css file that is also loaded. And here is the init code I am using - from the demo site also:

$(document).ready(function() {

  $('.flexslider').flexslider({
    animation: "slide",
    animationLoop: false,
    itemWidth: 210,
    itemMargin: 5,
    minItems: 2,
    maxItems: 4
  });
});
like image 284
user1945912 Avatar asked Feb 01 '13 21:02

user1945912


4 Answers

… i had the same problem, tried the js solution above - it worked well but then i realized when js is disabled for some reason - that nothing will be shown up, so i decided to look for a non js solution:

i just put some thing like that for the specific slider:

.MySlider {
  .flexslider .slides img { 
  max-height: 400px; 
  width: 940px;
 }
}

worked well, even responsive. Hope that may help!

like image 59
Chris Avatar answered Nov 08 '22 05:11

Chris


You need to deal with the callback functions for the plugin you are using hide all the images from CSS by using a class let's say flexImages

$(document).ready(function() {

  $('.flexslider').flexslider({
    animation: "slide",
    animationLoop: false,
    itemWidth: 210,
    itemMargin: 5,
    minItems: 2,
    maxItems: 4, 
    start: function(){
         $('.flexImages').show(); 
    },
  });
});
like image 24
Seder Avatar answered Nov 08 '22 05:11

Seder


Set the default style for "display" to "none". using show() will change this style value.

like image 43
Steve H. Avatar answered Nov 08 '22 05:11

Steve H.


Also Found that the slides flash before loading and display stacked down the page with list item bullets.

Only for a second. Then it worked fine. I didn't realize I hadn't included the flexslider.css file because I had already turned of any navigation that would have shown broken nav img links.

Remember to Include the CSS!

like image 1
dasCode Avatar answered Nov 08 '22 05:11

dasCode