簡體   English   中英

jQuery檢查元素是否在視口中

[英]JQuery checking when element is in Viewport

我已經嘗試了十幾個庫來實現這種效果,但是我一定在某個地方犯了一個錯誤。 我當前正在使用此庫: -zeusdeux / isInViewport

在我的CSS中,我有一種叫做.animated-element的樣式,如下所示:-

.animation-element {
}
.in-view {
}

當添加.in-view類時,我有幾個css元素可以啟動動畫:-

.trans-1 {
  -webkit-transition: 2s;
  transition: 2s; 
}
.fade {
  opacity: 0;
}

.fade.in-view {
  opacity: 1;
}

在我的html中,我具有用於動畫的這些類的div元素:

<div class="fade trans-1 animation-element">
                <h2 class="medium-subheader-bold">Header</h2>
</div>

最后,JavaScript使用該庫檢查元素是否在視口中,如果存在,則將一個類添加到該元素中。 從而將.fade更改為.fade.in-view(不透明度0到1):

(function($) {
    $(document).ready(function() {
        $(window).scroll(function() {
            $('.animation-element').removeClass('in-view');
            $('.animation-element:in-viewport').addClass('in-view');
        });
    });
}(jQuery));

當我在瀏覽器中加載頁面時,頁面中的所有元素都會立即加載並設置動畫。 當我檢查網頁以檢查在視口中不可見的元素時,我看到它們在添加和刪除視圖內類之間迅速閃爍。 我也嘗試過刪除$('.animation-element').removeClass('in-view'); 以上javascript代碼行,但即使元素距離視口很遠,視圖內類仍會立即添加。

我已經嘗試過使用多個庫並一直遇到相同的問題,因此它一定是我實現它的方式,而不是庫的錯誤。

我還應該說我正在使用Pug生成html,常規CSS並通過node.js服務整個頁面。

我終於弄清楚了問題所在。 我花了一整天的時間嘗試在JSFiddle中重新創建它並修改不同的部分。 最后是因為我沒有將<!DOCTYPE html>放在html文檔的頂部。 瘋狂的是,其他一切都起作用了,即使是向上滾動時的動畫,也就是不向下滾動,因為那一行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM