jQuery淡出淡入
jQuery FadeOut FadeIn
我正在搞乱 html、css 和 jquery,我已经 运行 解决了这个问题。
我有一个幻灯片,它使用容器中的 fadeIn 和 fadeOut 获取图像,但是当我按 'next' 时,它正在重置页面并在底部某处加载下一张图像。
你能告诉我有什么问题吗?
HTML
<div class="slideshow ">
<div class="container">
<div class="slides">
<img class ="slide active-slide" src="http://gearnuke.com/wp-content/uploads/2015/06/GTA-5.jpg">
<img class ="slide" src="http://cdn.wegotthiscovered.com/wp-content/uploads/gta5.jpg">
<img class ="slide" src="http://www.igta5.com/images/official-artwork-trevor-yellow-jack-inn.jpg">
<img class="slide" src="http://cdn2.knowyourmobile.com/sites/knowyourmobilecom/files/styles/gallery_wide/public/0/67/GTAV-GTA5-Michael-Sweatshop-1280-2277432.jpg?itok=nKEHENTW">
</div>
</div>
<div class="container ">
<ul class="slider-dots">
<a href="#/" class="arrow-prev"><<</a>
<li class="dot active-dot">•</li>
<li class="dot">•</li>
<li class="dot">•</li>
<li class="dot">•</li>
<a href="#/" class="arrow-next">>></a>
</ul>
</div>
</div>
jquery
var main=function(){
$('.arrow-next').click(function(event){
event.stopPropagation();
var currentSlide=$('.active-slide');
var nextSlide=$('.active-slide').next();
var currentDot=$('.active-dot');
var nextDot=currentDot.next();
if(nextSlide.length==0) {nextDot=$('.dot').first(); nextSlide=$('.slide').first();}
currentSlide.fadeOut().removeClass('active-slide');
nextSlide.fadeIn().addClass('active-slide');
currentDot.removeClass('active-dot');
nextDot.addClass('active-dot');
});
$('.arrow-prev').click(function(event){
event.stopPropagation();
var currentSlide=$('.active-slide');
var prevSlide=currentSlide.prev();
var currentDot=$('.active-dot');
var prevDot=currentDot.prev();
if(prevSlide.length==0) {prevDot=$('.dot').last(); prevSlide=$('.slide').last();}
currentSlide.fadeOut().removeClass('active-slide');
prevSlide.fadeIn().addClass('active-slide');
currentDot.removeClass('active-dot');
prevDot.addClass('active-dot');
});
};
$(文档).ready(主要);
你可以在这看到一切
fiddle
http://jsfiddle.net/1zLd58yo/
看起来你有一个淡出然后一个淡入。
淡出后,图像消失,然后出现新图像。
淡出后有一个repaint/happening。
应用以下 css 规则来解决您的问题。
在 div.slides,
- 设置固定的宽度和高度
- 将位置设置为相对
在图像上,
- 设置位置=绝对
将 div 幻灯片设置为特定高度,然后将 fadeIn 添加到 fadeOut 之后的函数中,这将确保高度不会变得太大。这样你就可以避免将位置设置为绝对。
currentSlide.fadeOut().removeClass('active-slide', function(){
prevSlide.fadeIn().addClass('active-slide');
});
第一张幻灯片将完全淡出,然后下一张幻灯片将淡入。
我正在搞乱 html、css 和 jquery,我已经 运行 解决了这个问题。 我有一个幻灯片,它使用容器中的 fadeIn 和 fadeOut 获取图像,但是当我按 'next' 时,它正在重置页面并在底部某处加载下一张图像。 你能告诉我有什么问题吗?
HTML
<div class="slideshow ">
<div class="container">
<div class="slides">
<img class ="slide active-slide" src="http://gearnuke.com/wp-content/uploads/2015/06/GTA-5.jpg">
<img class ="slide" src="http://cdn.wegotthiscovered.com/wp-content/uploads/gta5.jpg">
<img class ="slide" src="http://www.igta5.com/images/official-artwork-trevor-yellow-jack-inn.jpg">
<img class="slide" src="http://cdn2.knowyourmobile.com/sites/knowyourmobilecom/files/styles/gallery_wide/public/0/67/GTAV-GTA5-Michael-Sweatshop-1280-2277432.jpg?itok=nKEHENTW">
</div>
</div>
<div class="container ">
<ul class="slider-dots">
<a href="#/" class="arrow-prev"><<</a>
<li class="dot active-dot">•</li>
<li class="dot">•</li>
<li class="dot">•</li>
<li class="dot">•</li>
<a href="#/" class="arrow-next">>></a>
</ul>
</div>
</div>
jquery
var main=function(){
$('.arrow-next').click(function(event){
event.stopPropagation();
var currentSlide=$('.active-slide');
var nextSlide=$('.active-slide').next();
var currentDot=$('.active-dot');
var nextDot=currentDot.next();
if(nextSlide.length==0) {nextDot=$('.dot').first(); nextSlide=$('.slide').first();}
currentSlide.fadeOut().removeClass('active-slide');
nextSlide.fadeIn().addClass('active-slide');
currentDot.removeClass('active-dot');
nextDot.addClass('active-dot');
});
$('.arrow-prev').click(function(event){
event.stopPropagation();
var currentSlide=$('.active-slide');
var prevSlide=currentSlide.prev();
var currentDot=$('.active-dot');
var prevDot=currentDot.prev();
if(prevSlide.length==0) {prevDot=$('.dot').last(); prevSlide=$('.slide').last();}
currentSlide.fadeOut().removeClass('active-slide');
prevSlide.fadeIn().addClass('active-slide');
currentDot.removeClass('active-dot');
prevDot.addClass('active-dot');
});
};
$(文档).ready(主要);
你可以在这看到一切
fiddle
http://jsfiddle.net/1zLd58yo/
看起来你有一个淡出然后一个淡入。 淡出后,图像消失,然后出现新图像。 淡出后有一个repaint/happening。
应用以下 css 规则来解决您的问题。
在 div.slides, - 设置固定的宽度和高度 - 将位置设置为相对
在图像上, - 设置位置=绝对
将 div 幻灯片设置为特定高度,然后将 fadeIn 添加到 fadeOut 之后的函数中,这将确保高度不会变得太大。这样你就可以避免将位置设置为绝对。
currentSlide.fadeOut().removeClass('active-slide', function(){
prevSlide.fadeIn().addClass('active-slide');
});
第一张幻灯片将完全淡出,然后下一张幻灯片将淡入。