使用本指南的最后一个示例(http://www.learningjquery.com/2009/02/slide-elements-in-different-directions),我试图让div在“按钮”后面切换。
期望的结果示例: 最初将隐藏包括输入字段,按钮B和按钮C的div。当单击“滑动它”按钮时,div在按钮后面的FROM中滑动,直到div的右侧和“滑动它”按钮之间达到特定距离(边距)。 再次单击该按钮(和/或按下'Esc'键时),div将滑入“按钮”。
这是脚本,然后是演示:
$('#button1').click(function() {
var $marginRighty = $('.inner');
$marginRighty.animate({
marginRight: parseInt(
$marginRighty.css('marginRight'),10) == 0 ?
$marginRighty.outerWidth() : 0});
});
答案 0 :(得分:0)
我已经解决了你的一些问题。我承认,我不确定你希望结果如何,所以我将把调整留给你。但是有两件事;
position: relative
,并且顶部的按钮现在使用position: absolute
从右侧设置其父div,以便它可以重叠而没有占用空间。我确实把HTML中的按钮移到了较低的位置,所以我不必乱用z-index,哈哈。答案 1 :(得分:0)
小提琴:https://jsfiddle.net/xqb5a7dq/6/
$('#button1').on('click', function() {
animateDiv();
})
$(document).keyup(function(e) {
if (e.keyCode === 27 && $('.inner').hasClass('visible')) {
animateDiv();
}
})
function animateDiv () {
$('.inner').toggleClass('visible');
$('.inner').animate({
width: 'toggle',
},350);
}
.toolbar {
width: 100%;
display: inline-block;
overflow: hidden;
white-space: nowrap;
margin: 0px auto;
padding: 5px 0px;
background-color: skyblue;
}
#divA,
#divB {
display: inline;
}
.inner {
float: right;
display: none;
padding-right: 20px;
}
#button1 {
float: right;
margin-right: 5px;
}
input,
button {
padding: 5px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class='toolbar'>
<div>
<button id="button1">Slide it</button>
</div>
<div class="inner is-hidden">
<div id="divA">
<input type="text" />
<input type="password" />
</div>
<div id="divB">
<button>Button B</button>
<button>Button C</button>
</div>
</div>
</div>