Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 导航在特定DIV之后调整大小_Javascript_Jquery_Html_Css_Navigation - Fatal编程技术网

Javascript 导航在特定DIV之后调整大小

Javascript 导航在特定DIV之后调整大小,javascript,jquery,html,css,navigation,Javascript,Jquery,Html,Css,Navigation,我正在建立一个个人网站,我想让我的导航缩小后,我向下滚动。该网站由4个分区组成,高度为100%。现在我使用的是JS,在300px滚动后缩小导航: <script> function init() { window.addEventListener('scroll', function(e){ var distanceY = window.pageYOffset || document.documentElement.scrollTop,

我正在建立一个个人网站,我想让我的导航缩小后,我向下滚动。该网站由4个分区组成,高度为100%。现在我使用的是JS,在300px滚动后缩小导航:

 <script>
   function init() {
     window.addEventListener('scroll', function(e){
          var distanceY = window.pageYOffset || document.documentElement.scrollTop,
              shrinkOn = 300,
              header = document.querySelector("header");
          if (distanceY > shrinkOn) {
              classie.add(header,"smaller");
          } else {
              if (classie.has(header,"smaller")) {
                  classie.remove(header,"smaller");
              }
          }
      });
  }
  window.onload = init();
</script>

函数init(){
window.addEventListener('scroll',函数(e){
var distance=window.pageYOffset | | document.documentElement.scrollTop,
shrinkOn=300,
页眉=document.querySelector(“页眉”);
如果(距离>收缩){
类别添加(标题,“较小”);
}否则{
如果(类别有(标题,“较小”)){
类别移除(标题“较小”);
}
}
});
}
window.onload=init();
我的问题是如何使导航在第一次div后收缩

您可以使用

shrinkOn = firstDiv.clientHeight
你可以用

shrinkOn = firstDiv.clientHeight

您可以使用
offsetTop
获取
div
的y坐标,如果希望在窗口的上边框接触
div
的上边框时收缩导航,则可以将
收缩
变量值设置为-

shrink = div.offsetTop;
但是,如果要在穿过
div
后收缩该值,则可以将
shrink
的值设置为该值-

shrink = div.offsetTop + div.offsetHeight

希望有帮助

您可以使用
offsetTop
获取
div
的y坐标,如果您想在窗口的上边框接触
div
的上边框时收缩导航,则可以将
收缩
变量值设置为-

shrink = div.offsetTop;
但是,如果要在穿过
div
后收缩该值,则可以将
shrink
的值设置为该值-

shrink = div.offsetTop + div.offsetHeight

希望有帮助

我不确定我是否做对了,但我无法让它工作。然而,我使用了'shrinkOn=slide_one.clientHeight',效果非常好。无论如何谢谢你@Licheff它工作得很好(如果您正确使用了它),请参见此处的演示-当
first
div的上边框接触顶部窗口时,将
shrink
类添加到
\nav
@Licheff查看此演示-当用户滚动到
first
div的下边框时,此示例将添加类“shrink”,我不认为
clientHeight
解决方案会起作用,尝试在第一个div上设置边距顶部,然后看到,我认为它不会起作用,也尝试更改第一个div的高度,在这两种情况下都会失败,但你可以在我的小提琴上进行实验,更改
#first
的高度或更改任何东西,它都会起作用!结果是我把我的部门的名字拼错了。现在我决定使用
shrinkOn=slide\u one.clientHeight,
并在我的div上加了一个底部边框,它工作得非常好。问题是,我正在为JS部分使用现成的脚本,因为我不熟悉语法。总而言之,现在一切都很顺利。非常感谢您提出的建议和解决方案@利切夫,不客气!!,我已经为您提供了两种缩小的方法(在第一个div离开屏幕或窗口顶部接触
div
顶部之后),使用您想要的方法,如果您遇到任何问题,请告诉我。我不确定我是否做对了,但我无法使它工作。然而,我使用了'shrinkOn=slide_one.clientHeight',效果非常好。无论如何谢谢你@Licheff它工作得很好(如果您正确使用了它),请参见此处的演示-当
first
div的上边框接触顶部窗口时,将
shrink
类添加到
\nav
@Licheff查看此演示-当用户滚动到
first
div的下边框时,此示例将添加类“shrink”,我不认为
clientHeight
解决方案会起作用,尝试在第一个div上设置边距顶部,然后看到,我认为它不会起作用,也尝试更改第一个div的高度,在这两种情况下都会失败,但你可以在我的小提琴上进行实验,更改
#first
的高度或更改任何东西,它都会起作用!结果是我把我的部门的名字拼错了。现在我决定使用
shrinkOn=slide\u one.clientHeight,
并在我的div上加了一个底部边框,它工作得非常好。问题是,我正在为JS部分使用现成的脚本,因为我不熟悉语法。总而言之,现在一切都很顺利。非常感谢您提出的建议和解决方案@利切夫,不客气!!,我为您提供了两种缩小的方法(在第一个div离开屏幕或窗口顶部接触
div
顶部后),使用您想要的方法,如果您遇到任何问题,请告诉我。。