试图找到一个不需要 jQuery 来操作的 slider 库。根据演示,我在同一个 swipejs 容器内有两个不同宽度的图像,
<div id='mSwipe' style='background-color:#ffb6c1;width:300px;height:250px;position:relative; left:800px;' class='swipe'>
<div id="swipewrape" class='swipe-wrap'>
<div id="slideone" style="text-align:right;"><img src="http://www.totallygaming.com/sites/default/files/rotor/Commercial%20Intelligence.JPG"/></div>
<div id="slidetwo" style="text-align:right;"><img src="http://in-formatio.com/wp-content/uploads/2012/02/ihop-free-pancake-day-20091-600x250.jpg"/></div>
</div>
</div>
<div style='text-align:center;padding-top:20px;'>
<button onclick='state_change();mySwipe.prev()'>prev</button>
<button onclick='state_change();mySwipe.next()'>next</button>
</div>
<script>
var state = 0;
function state_change() //Dumb state change function
{
if(state)
{
state = 0;
document.getElementById('mSwipe').style.width = "300px";
}
else
{
state = 1;
document.getElementById('mSwipe').style.width = "600px";
}
}
我放入了一个简单的小型两种状态状态机,看看如果在幻灯片效果生效之前更改 div 宽度可以做什么。我首先将 swipejs 中包含的回调方法中的大小更改设置为 no有用。 我只想在每次按下按钮时更改 div 大小,以便传入的图像适合它
按下按钮时,div 会调整到正确的大小,但似乎对于大图像(这是一堆美味的煎饼),它会滑过并显示大图像的一半在滑动 div 中两次。我可以改回较小的图像就好了
如果我打开 Chrome 控制台,则会显示完整图像,并且不会再出现任何问题。
这是怎么回事?
最佳答案
圆锥,
我对你的代码做了一些更改,并在下面为你创建了一个 fiddle 。 还为您提供了注释掉的 Javascript 上的 jQuery 命令,以防您稍后改变对 jQuery 的想法。
JavaScript
// pure JS
var elem = document.getElementById('slider');
window.mySwipe1 = Swipe(elem, {
// startSlide: 4,
// auto: 3000,
continuous: true,
// disableScroll: true,
// stopPropagation: true,
// callback: function(index, element) {},
// transitionEnd: function(index, element) {}
});
// with jQuery
// window.mySwipe = $('#mySwipe').Swipe().data('Swipe');
HTML
<div id='slider' class='swipe'>
<div class='swipe-wrap'>
<div>
<img src="http://www.totallygaming.com/sites/default/files/rotor/Commercial%20Intelligence.JPG" />
</div>
<div>
<img src="http://in-formatio.com/wp-content/uploads/2012/02/ihop-free-pancake-day-20091-600x250.jpg" />
</div>
</div>
</div>
<div style='text-align:center;padding-top:20px;'>
<button class='prev' onclick='mySwipe1.prev()'>prev</button>
<button class='next' onclick='mySwipe1.next()'>next</button>
</div>
CSS
.swipe {
overflow: hidden;
visibility: hidden;
position: relative;
}
.swipe-wrap {
overflow: hidden;
position: relative;
}
.swipe-wrap > div {
float:left;
width:100%;
position: relative;
}
.swipe-wrap > div > img {
margin:10%;
width:90%;
}
#slider {
height: auto;
width:50%;
left:200px;
}
<强> EXAMPLE
编辑:更新了 fiddle ,添加了原始图像大小
<强> EXAMPLE 2
关于javascript - Div 将自身的一半显示两次 - 使用 swipe.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18068442/