我正在使用'切换'幻灯片效果,并希望显示用户可以单击以显示整个div的div的一部分。我现在的解决方案的问题是#click_here在切换'时切换到了左右。被触发了。我想找到一个解决方案,其中#click_here随着幻灯片动画从左向右逐渐移动时切换'被触发了。
到目前为止我的jQuery脚本:
$('#click_here').click(function() {
var effect = 'slide';
var options = { direction: 'left' };
var duration = 700;
$('#info_box').toggle(effect, options, duration);
return false;
});
这是我的HTML
<div id="wrap">
<div id="click_here">
<p>Click here!</p>
</div>
<div id="info_box">
<h1>Here is some cool info!</h1>
</div>
</div>
和css
#wrap { background:gray; width:400px; margin:0 auto; height:300px; border:5px blue solid; }
#info_box { width:300px; height:200px; background:pink; float:left; display:inline-block; overflow:hidden; display:none; }
#click_here { width:100px; height:200px; float:left; background:yellow; display:inline-block; }
http://jsfiddle.net/NinoLopezWeb/92Xcm/1/
谢谢!
答案 0 :(得分:1)
似乎jQuery UI幻灯片切换的工作方式是在元素周围插入一个包装器并为元素的left
位置设置动画。但是,包装器会占用最终元素的整个宽度,因此“单击按钮”会立即向右移动。 (有关解决方法,请参阅this SO post。)
您可以使用jQuery的animate()
来设置CSS边距的动画,而不是使用切换效果。
#wrap {
...
overflow:hidden; /* hide overflowing content */
}
#info_box {
width:300px;
height:200px;
background:pink;
float:left;
display:inline-block;
margin-left:-300px; /* move the element out of sight
}
然后使用您的点击处理程序将margin-left
设置为“0px”:
$('#click_here').click(function () {
var duration = 700;
$('#info_box').animate({
'margin-left':'0px'
},duration);
return false;
});
另一种方法是使用let CSS处理动画,只需使用jQuery来切换类:
#info_box {
width:300px;
height:200px;
background:pink;
float:left;
display:inline-block;
margin-left:-300px;
-webkit-transition-duration:.7s;
-moz-transition-duration:.7s;
-ms-transition-duration:.7s;
-o-transition-duration:.7s;
transition-duration:.7s;
}
#info_box.show {
margin-left:0px;
}
然后用jQuery切换“show”类:
$('#click_here').click(function () {
$('#info_box').toggleClass('show');
return false;
});