我在处理滑块属性的JavaScript函数中遇到问题。我有3张.slide
类别的幻灯片,每次我“选择”其中一张时,我都将其设置为.active-slide
类别。问题在于,如果display
的active-slide
属性是table
,当我设置此类时,它会自动更改为block
,而我不明白为什么。
P.s.我也在用引导程序。
我在这里发布与该问题有关的部分代码:
HTML:
<div class="slider">
<div class="slide active-slide">
<div class="container up">
<div class="row">
<div class="col-md-5 slide-text">
<h1 class="slide-title">whatuwant</h1>
<p class="slide-par">whatuwant</p>
<a href="#" class="slide-link">whatuwant</a>
</div>
<div class="col-md-7" id="first-slide-image">
<img src="whatuwant"/>
</div>
</div>
</div>
</div>
<div class="slide">
<div class="container up">
<div class="row">
<div class="col-md-5 slide-text">
<h1 class="slide-title">whatuwant</h1>
<p class="slide-par">whatuwant</p>
</div>
<div class="col-md-7" id="second-slide-image">
<img src="whatuwant"/>
</div>
</div>
</div>
</div>
<div class="slide">
<div class="container up">
<div class="row">
<div class="col-md-5 slide-text">
<h1 class="slide-title">whatuwant</h1>
<p class="slide-par">whatuwant</p>
</div>
<div class="col-md-7 slide-image" id="third-slide-image">
<img src="whatuwant"/>
</div>
</div>
</div>
</div>
</div>
CSS:
.container {
width: 1024px;
}
.up{
display: table-cell;
vertical-align: middle;
max-width: 1024px;
max-height: 470px;
}
.row{
width: 1024px;
margin: 0 auto;
max-width: 1024px;
}
.slider {
position: relative;
width: 100%;
height: 470px;
}
.slide {
display: none;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.active-slide{
display: table;
}
JavaScript:
$(document).ready(function() {
$('.buttonfornextslide').click(function() {
var currentSlide = $('.active-slide');
var nextSlide = currentSlide.next();
if(nextSlide.length === 0) {
nextSlide = $('.slide').first();
}
currentSlide.fadeOut(600).removeClass('active-slide');
nextSlide.fadeIn(600).addClass('active-slide');
});
$('.buttonforpreviousslide').click(function() {
var currentSlide = $('.active-slide');
var prevSlide = currentSlide.prev();
if(prevSlide.length === 0) {
prevSlide = $('.slide').last();
}
currentSlide.fadeOut(600).removeClass('active-slide');
prevSlide.fadeIn(600).addClass('active-slide');
});
});
我试图将其简化到最大可能的程度。
如果问题不清楚:如何将
.active-slide
显示属性保留为table
? 最佳答案
当使用fadeIn,slideDown等时,jQuery会自动为元素分配“默认”样式。由于div的默认样式为“块”,因此将被应用。代替使用“ active-slide”类,尝试专门设置CSS
....
prevSlide.fadeIn(600).css('display','table');
参考:
jQuery bug
Fiddle-您可以看到“ display”块是类的样式,您必须在fadeIn函数之后按字面意义添加它。
在小提琴中,添加
.css('display','block');
并运行它,您将看到更改