[英]jQuery - Side Sliding Menu
在打開和關閉時讓滑出菜單正確動畫的最佳方法是什么? 單擊“打開/關閉”按鈕時,滑出菜單應平滑地進出動畫,將正文中的所有內容推到一邊。
jQuery:
var body = $('body');
var button = $('#button');
var menu = $('#menu');
var menuWidth = $('#menu').width();
menu.css({ right: -menuWidth });
button.html('OPEN');
button.on('click', function(event){
event.preventDefault();
body.animate({ right: 'menuWidth' });
if (body.css({ right: 0 })) {
body.animate({
right: +menuWidth
}, 600);
button.html('CLOSE');
} else {
body.animate({
right: 0
}, 600);
button.html('OPEN');
}
});
幻燈片當前在單擊“關閉”按鈕時跳轉,然后重新打開,而無需單擊“打開”按鈕。
當前示例jsFiddle 的鏈接。
我看不出需要body.animate({ right: 'menuWidth' });
第一次出現,所以我建議刪除它。 (無論如何,這一行會觸發您當前擁有的唯一一個動畫)
實際問題是你的情況。 我沒有弄清楚為什么你的條件不起作用,因為它似乎是正確的,但將其更改為if (body.css('right')=='0px')
就可以了。
最后,您必須為 body 的right
屬性設置初始值:
body{
right: 0;
...
}
否則,瀏覽器將其設置為right: auto
。 然后,您的第一次單擊會將其設置為 0,但顯然不會產生任何可見效果。
如果您的瀏覽器要求支持它,一種選擇是使用 CSS 轉換根據僅更改其類來為菜單設置動畫:
#menu {
width: 0;
transition: width .6s;
}
#menu.open {
width:300px;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.