使用 jQuery 从 'behind' 按钮滑动 div(从左到右)
Slide div (left to right) from 'behind' a button using jQuery
使用本指南的最后一个示例 (http://www.learningjquery.com/2009/02/slide-elements-in-different-directions),我正在尝试使用 div 来切换 'behind' 按钮。
期望的结果示例:
最初 div 包括输入字段、按钮 B 和按钮 C 将被隐藏。单击 'Slide it' 按钮时,div 从按钮后面滑入,直到 div 右侧和 'Slide it' 按钮之间达到特定距离(边距) .
再次单击按钮(and/or 当按下 'Esc' 键时),div 将滑动 "into" 按钮。
这是脚本,后面是演示:
$('#button1').click(function() {
var $marginRighty = $('.inner');
$marginRighty.animate({
marginRight: parseInt(
$marginRighty.css('marginRight'),10) == 0 ?
$marginRighty.outerWidth() : 0});
});
我已经解决了你的一些问题。我承认我不太确定你希望结果如何,所以我会把调整留给你。但有两个主要问题;
- 我用 css 把一个放在另一个上面。我将内部 div 100% 放置在右侧,
position: relative
,顶部的按钮现在将其父级 div 从右侧设置为 position: absolute
,以便它可以与没有足迹。我确实将 HTML 中的按钮移到了较低的位置,这样我就不必乱用 z-index,哈哈。
- 我将你的 Javascript 移到了一个单独的函数中,这样你就可以通过按键或任何你喜欢的方式调用它。这意味着您不会有代码重复。
Fiddle: 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>
使用本指南的最后一个示例 (http://www.learningjquery.com/2009/02/slide-elements-in-different-directions),我正在尝试使用 div 来切换 'behind' 按钮。
期望的结果示例:
这是脚本,后面是演示:
$('#button1').click(function() {
var $marginRighty = $('.inner');
$marginRighty.animate({
marginRight: parseInt(
$marginRighty.css('marginRight'),10) == 0 ?
$marginRighty.outerWidth() : 0});
});
我已经解决了你的一些问题。我承认我不太确定你希望结果如何,所以我会把调整留给你。但有两个主要问题;
- 我用 css 把一个放在另一个上面。我将内部 div 100% 放置在右侧,
position: relative
,顶部的按钮现在将其父级 div 从右侧设置为position: absolute
,以便它可以与没有足迹。我确实将 HTML 中的按钮移到了较低的位置,这样我就不必乱用 z-index,哈哈。 - 我将你的 Javascript 移到了一个单独的函数中,这样你就可以通过按键或任何你喜欢的方式调用它。这意味着您不会有代码重复。
Fiddle: 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>