代码之家  ›  专栏  ›  技术社区  ›  Ali

使用jQuery从按钮后面滑动div(从左到右)

  •  1
  • Ali  · 技术社区  · 9 年前

    使用本指南的最后一个示例( http://www.learningjquery.com/2009/02/slide-elements-in-different-directions ),我试图让一个div在按钮后面切换。

    期望结果示例: enter image description here 最初,包含输入字段、按钮B和按钮C的div将被隐藏。当点击“滑动”按钮时,div从按钮后面滑入,直到div右侧与“滑动”键之间达到特定距离(边距)。 再次单击按钮(和/或按下“Esc”键时),div将“滑入”按钮。

    下面是脚本,后面是演示:

    $('#button1').click(function() {
        var $marginRighty = $('.inner');
        $marginRighty.animate({
            marginRight: parseInt(
                $marginRighty.css('marginRight'),10) == 0 ?
                    $marginRighty.outerWidth() : 0});
    });
    

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

    2 回复  |  直到 9 年前
        1
  •  0
  •   mark_c    9 年前

    小提琴: 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>
        2
  •  0
  •   Thomas    9 年前

    Fiddle .

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

    1. 我用css把一个放在另一个上面。我将内部div定位为100%正确, position: relative ,顶部的按钮现在从右侧设置了其父div position: absolute 从而它可以重叠而没有足迹。我真的把HTML中的按钮移到了较低的位置,这样我就不必乱搞z索引了,哈哈。
    2. 我把你的Javascript移动到一个单独的函数中,这样你就可以按一下键或者你喜欢的任何方式调用它。这意味着您不会有代码重复。