使用jQuery

时间:2016-01-20 17:57:51

标签: javascript jquery html css jquery-animate

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

期望的结果示例: enter image description here 最初将隐藏包括输入字段,按钮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});
});

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

2 个答案:

答案 0 :(得分:0)

Fiddle

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

  1. 我用css将一个放在另一个之上。我将内部div放置在100%右侧position: relative,并且顶部的按钮现在使用position: absolute从右侧设置其父div,以便它可以重叠而没有占用空间。我确实把HTML中的按钮移到了较低的位置,所以我不必乱用z-index,哈哈。
  2. 我将您的Javascript移动到一个单独的功能中,因此您可以使用按键或者您喜欢的方式调用它。这意味着您不会有代码重复。

答案 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>