2015-07-12 89 views
2

所以我得到了這個幻燈片代碼工作,當你點擊一個圖像,它淡入另一個圖像。但是,例如,如果右側有空白空間的垂直定向圖像,如果您單擊該空間,整個幻燈片將會出現一些毛刺。JavaScript幻燈片故障點擊圖像周圍的空白處

這裏是我的網站,你可以測試一下:

http://danielshultz.github.io

代碼:

$(document).ready(function() { 
$.fn.nextOrFirst = function (selector) { 
    var next = this.next(selector); 
    return (next.length) ? next : this.prevAll(selector).last(); 
}; 
$("#cf2 img").click(function() { 
    $(this) 
    .removeClass('visible') 
    .nextOrFirst() 
    .addClass('visible'); 
    }); 
}); 

CSS:

#cf2 { 
    position:relative; 
    height:281px; 
    width:450px; 
    margin:0 auto; 
} 
#cf2 img { 
    position:absolute; 
    left:0; 
    max-height: 600px; 
    max-width: 600px; 
    opacity: 0; 
    z-index: 0; 
    -webkit-transition: opacity 1s ease-in-out; 
    -moz-transition: opacity 1s ease-in-out; 
    -o-transition: opacity 1s ease-in-out; 
    transition: opacity 1s ease-in-out; 
} 

#cf2 img.visible { 
    opacity: 1; 
    z-index: 1; 
} 

HTML:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<div id="cf2" class="shadow"> 
    <img class="visible" src="http://static.ddmcdn.com/gif/storymaker-best-hubble-space-telescope-images-20092-514x268.jpg" alt="1"/> 
    <img src="http://economictimes.indiatimes.com/thumb/msid-45891755,width-640,resizemode-4/nasas-images-of-most-remarkable-events-you-cant-miss.jpg" alt="2"/> 
    <img src="http://i.dailymail.co.uk/i/pix/2013/11/03/article-2486855-192ACC5200000578-958_964x682.jpg" alt="3"/> 
    <img src="http://mstatic.mit.edu/nom150/items/199-HybridImage.jpg" alt="4"/> 
</div> 
+0

試圖找到毛刺,我無法找到任何東西。你能更具體地說明這個故障是如何發生的嗎?頁面凍結了嗎?選擇高亮棒?一羣蝗蟲侵入你的家? (這種情況偶爾會發生在我身上)。 – zer00ne

+0

我明白了。但非常感謝你的幫助! –

回答

2

如果我的理解,這裏的問題是,當你點擊圖片外,但上一個圖像的正方形內,然後滑不改變

這種方法不會改變yout javascript,但會改變html和一些選擇器。

在下面的示例中,我將每個<img>包裝成一個'<div>',並將選擇器更改爲與這些部門相匹配。輕微的風格。

因此,如果您單擊圖像外部但在div上方,幻燈片會按預期更改。

$(document).ready(function() { 
 
    $.fn.nextOrFirst = function (selector) { 
 
     var next = this.next(selector); 
 
     return (next.length) ? next : this.prevAll(selector).last(); 
 
    }; 
 
    $("#cf2 div.holder").click(function() { 
 
     $(this) 
 
     .removeClass('visible') 
 
     .nextOrFirst() 
 
     .addClass('visible'); 
 
    }); 
 
});
body { 
 
\t font-family: verdana; 
 
\t font-size: 8pt; 
 
\t color: #000; 
 
} 
 

 
#cf2 { 
 
    position: relative; 
 
    height: 600px; 
 
    width: 600px; 
 
    margin: 0 auto; 
 
} 
 
#cf2 div.holder { 
 
    position: absolute; 
 
    left: 0; 
 
    height: 600px; 
 
    width: 600px; 
 
    opacity: 0; 
 
    z-index: 0; 
 
    -webkit-transition: opacity 1s ease-in-out; 
 
    -moz-transition: opacity 1s ease-in-out; 
 
    -o-transition: opacity 1s ease-in-out; 
 
    transition: opacity 1s ease-in-out; 
 
} 
 

 
#cf2 div.holder img { 
 
    max-height: 600px; 
 
    max-width: 600px; 
 
} 
 

 
#cf2 div.holder.visible { 
 
    opacity: 1; 
 
    z-index: 1; 
 
} 
 

 

 
.hidden { 
 
    display: none; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table> 
 

 
<td valign="center"> 
 
<div id="cf2" class="shadow"> 
 
<div class="holder visible"> 
 
<img src="//danielshultz.github.io/Images/Cute-Door-1.jpg" alt="1"/></div> 
 
<div class="holder"><img src="//danielshultz.github.io/Images/Cute-Door-2.jpg" alt="2"/></div> 
 
<div class="holder"><img src="//danielshultz.github.io/Images/Cute-Door-3.jpg" alt="3"/></div> 
 
</div> 
 
</td> 
 
</table>

+0

啊!這很有道理。非常感謝你,完美工作。 :)對Java仍然很陌生! –