使用 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});
});

https://jsfiddle.net/ishq786/xqb5a7dq/

Fiddle.

我已经解决了你的一些问题。我承认我不太确定你希望结果如何,所以我会把调整留给你。但有两个主要问题;

  1. 我用 css 把一个放在另一个上面。我将内部 div 100% 放置在右侧,position: relative,顶部的按钮现在将其父级 div 从右侧设置为 position: absolute,以便它可以与没有足迹。我确实将 HTML 中的按钮移到了较低的位置,这样我就不必乱用 z-index,哈哈。
  2. 我将你的 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>