Disappearing images in IE8 jQuery Cycle

2019-01-12 09:56发布

问题:

http://www.lunatestsite.co.uk/products/lifestation

Cannot for the life of me fix this. Only in IE8 so far. I had the same issue on the homepage cycle, but managed to fix by declaring width, height and background: none !important on the img's in question.

I thought it might be a png issue, but the same happens with jpgs:

http://www.lunatestsite.co.uk/test-disappearing-jpgs

Same result: often a flicker of the first of the two images in the slideshow, then disappears.

Any ideas at all appreciated.

SOLVED: My original fix worked for this in the end too : adding the background: none important!, and declaring the width / height. It didn't work on the additional templates because I was using a class instead of id for ul#product-images.

The shame, it burns! Sorry for wasting anyone's time.

body.home #front-slider #front-slides .slide{
background:none !important;
width: 980px;
height: 389px;
}

body.home #front-slider #front-slides .slide .slide-image img{
    background:none !important;
    width: 629px;
    height: 345px;
}

body.page-template-page-product-view-php ul#product-images .slide, body.page-template-page-product-view-wide-php ul#product-images .slide{
    background:none !important;
    width: 970px;
    height: 300px;
}

回答1:

I was having this issue also and I traced it back to the CSS rule

img {
  max-width: 100%;
}

Once I removed the above rule (I didn't need it in this case) the images stopped disappearing.



回答2:

If you want to keep the

max-width: 100%;

then also add

width: auto;

OR remove the explicit width and height attributes from the HTML

OR put the image in a non-floated container

OR assign the container a specific width.

There is a pretty good article on this bug here:

http://www.456bereastreet.com/archive/201202/using_max-width_on_images_can_make_them_disappear_in_ie8/



回答3:

It sounds like the images are still loading.

Try this...

$(window).load(function() {
    $('#product-images, #front-slides').cycle({
        timeout: '7000',
        next: '#next',
        prev: '#prev',
        pager: '#pager',
        pagerAnchorBuilder: function(idx, el) {
                return '<a href="#"></a>';
            }
    });
 });

window.load() will fire after the DOM and the page's images have loaded, where document.ready() only fires after the DOM has loaded.



回答4:

Change

img {
    max-width: 100%;
}

to

img {
    max-width: auto;
}