2017-08-04 187 views
0

我有一个页面布局,我想在窗口scrollTop上显示几个元素,但是我在计算元素位置时遇到了问题。 这是我正在做的事情,但我得到我的scrollTop负值,我不知道为什么。获取元素位置scrollTop

var myEl = $('.myElement').offset().top; 
 
var currPos = (myEl - $(window).scrollTop()); 
 

 

 
$(window).scroll(function(){ 
 
    var wScrollTop = $(window).scrollTop(); 
 
    
 
    if (wScrollTop > currPos) { 
 
    alert("reached"); 
 
    myEl.fadeIn(2000); 
 
    } 
 
});
body { 
 
    background-color: red; 
 
    height: 3000px; 
 
} 
 

 
.myElement { 
 
    color: #fff; 
 
    display: none; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 

 
<p>Some othe content</p> 
 

 
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Iusto ullam minima, veniam, maiores molestiae assumenda pariatur corrupti voluptatum id ea commodi aperiam dignissimos fuga, exercitationem illo eius praesentium suscipit. Velit.</p> 
 
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Iusto ullam minima, veniam, maiores molestiae assumenda pariatur corrupti voluptatum id ea commodi aperiam dignissimos fuga, exercitationem illo eius praesentium suscipit. Velit.</p> 
 
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Iusto ullam minima, veniam, maiores molestiae assumenda pariatur corrupti voluptatum id ea commodi aperiam dignissimos fuga, exercitationem illo eius praesentium suscipit. Velit.</p> 
 
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Iusto ullam minima, veniam, maiores molestiae assumenda pariatur corrupti voluptatum id ea commodi aperiam dignissimos fuga, exercitationem illo eius praesentium suscipit. Velit.</p> 
 
     
 
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Iusto ullam minima, veniam, maiores molestiae assumenda pariatur corrupti voluptatum id ea commodi aperiam dignissimos fuga, exercitationem illo eius praesentium suscipit. Velit.</p> 
 
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Iusto ullam minima, veniam, maiores molestiae assumenda pariatur corrupti voluptatum id ea commodi aperiam dignissimos fuga, exercitationem illo eius praesentium suscipit. Velit.</p> 
 
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Iusto ullam minima, veniam, maiores molestiae assumenda pariatur corrupti voluptatum id ea commodi aperiam dignissimos fuga, exercitationem illo eius praesentium suscipit. Velit.</p> 
 
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Iusto ullam minima, veniam, maiores molestiae assumenda pariatur corrupti voluptatum id ea commodi aperiam dignissimos fuga, exercitationem illo eius praesentium suscipit. Velit.</p> 
 

 
<div class="myElement">My Element</div>

我想只有一次运行该代码不喜欢在我的例子很少的时间提醒已到达的位置。另外我不知道计算我的元素的currPos。任何建议,这是最好的方式如何计算元素的当前位置,然后在窗口滚动顶部只显示一次我想要的元素。

回答

1

这是更新的脚本。

jQuery(document).ready(function() { 
    var myEl = jQuery('.myElement'); 
    var myElem = myEl.offset().top-100; 
    $(window).scroll(function(){ 
     var wScrollTop = $(window).scrollTop(); 

     if (wScrollTop > myElem) { 
     myEl.fadeIn(2000); 
     } else { 
     myEl.fadeOut(2000); 
     } 
    }); 
    }); 
+0

多数民众赞成在良好的一个,但有没有办法让窗口滚动的底部?这个想法是为了显示窗口底部滚动到这个元素的效果,因为如果顶部滚动显示它太晚了? @Ankit –

+0

我不明白你的观点。 – Ankit