是否有任何消除if
聲明後,它已被解僱一次?刪除If語句後,它已被激發一次
我有一個菜單容器,顯示在頁面加載和想要它,所以當用戶滾動1px它滑過。我不想讓瀏覽器經常跟蹤scrollTop()
方法,因爲這樣會導致性能下降。
使用過一次後,刪除或取消if
語句的最佳方法是什麼?
的代碼如下,我有一個在這裏codepen:http://codepen.io/emilychews/pen/evbzMQ
jQuery(document).ready(function($) {
$(window).scroll(function() {
if ($(document).scrollTop() > 1) {
$('.menubox').css('left', '-25%');
}
});
$('.mybutton').on('click', function() {
$('.menubox').css('left', '0%');
});
});
body {
margin: 0;
padding: 0;
height: 200vh;
}
.menubox {
top: 100;
position: fixed;
width: 20%;
height: 100%;
background: red;
padding: 10px;
color: white;
transition: all 1s;
}
.mybutton {
position: fixed;
left: 40%;
top: 50px;
padding: 5px 10px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="menubox">Menu Box</div>
<button class="mybutton">menu</button>
嗨大衛 - 謝謝你。現在我發現我的localhost網站上的這個bug很好用。我可以問 - 如果我想在點擊按鈕後的一段毫秒內暫時禁用滾動觸發器,我該怎麼做?我似乎只能找到關於setTimeOut的信息。原因是當按鈕被點擊以使菜單重新進入時,如果在菜單進入時有人意外滾動,則觸發它在動畫中途再次返回,並且將其移除1000ms的動畫。 –
@EmilyChewy:我想你可以做兩個發佈的答案建議的一些組合。也許使用一個變量來存儲狀態,但也可以設置一個超時,其回調函數再次更新該變量。所以你應該將'scrolled'設置爲true,然後使用'setTimeout'來安排一個將'scrolled'設置爲false的函數。 (如果我正確理解所需的行爲。根據需要調整值,但我認爲一般方法可行。) – David