jQuery-ScrollTop和On.Click不起作用

乔治·史密斯

目前,我正在学习如何用javascript和jquery编写代码。我编写了一个简单的jquery代码,其中有一个导航菜单,单击该菜单会滚动到溢出容器内的特定div。但是,滚动功能不起作用。如果有人可以帮助我,我将非常感激。先感谢您。

我的代码:

$(document).ready(function() {
	$("#Anchor_A").on('click', function() {
		$('.Container').animate({
			scrollTop: $("#Box_A").offset().top
		}, 'slow');
	});
  
	$("#Anchor_B").on('click', function() {
		$('.Container').animate({
			scrollTop: $("#Box_B").offset().top
		}, 'slow');
	});
  
	$("#Anchor_C").on('click', function() {
		$('.Container').animate({
			scrollTop: $("#Box_C").offset().top
		}, 'slow');
	});
  
	$("#Anchor_D").on('click', function() {
		$('.Container').animate({
			scrollTop: $("#Box_D").offset().top
		}, 'slow');
  });
    
	$("#Anchor_E").on('click', function() {
		$('.Container').animate({
			scrollTop: $("#Box_E").offset().top
		}, 'slow');
	});
});
.Wrapper{
  display:flex;
  position:relative;
  width:90vw;
  height:90vh;
  background-color:purple;
}

.Menu{
  position:relative;
  width:10vw;
  height:90vh;
  background-color:blue;
}

.Menu li{
  position:relative;
  font-size:4vw;
  line-height:5vw;
  text-align:center;
  color:white;
  cursor:pointer;
	list-style-type: none;
}

.Container{
  position:relative;
  width:80vw;
  height:90vh;
  background-color:red;
  overflow-y:hidden;
}

.Box{
  position:relative;
  width:80vw;
  height:90vh;
  background-color:purple;
	cursor:pointer;
 }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="Wrapper">
    <div class="Menu">
        <li id="Anchor_A">A</li>
        <li id="Anchor_B">B</li>
        <li id="Anchor_C">C</li>
        <li id="Anchor_D">D</li>
        <li id="Anchor_E">E</li>
    </div>
    <div class="Container">
        <div class="Box" id="Box_A">
            Box A
        </div>
        <div class="Box" id="Box_B">
            Box B
        </div>
        <div class="Box" id="Box_C">
            Box C
        </div>
        <div class="Box" id="Box_D">
            Box D
        </div>
        <div class="Box" id="Box_E">
            Box E
        </div>
    </div>
</div>

最好的祝福,

乔治·S。

伊戈尔·布金(Igor Bukin)

这里的关键点是您需要使用position()而不是offset()方法。偏移()方法返回的坐标相对于文档。

描述:获取匹配元素集中第一个元素相对于文档的当前坐标。

但是,您正在尝试在容器中滚动它们。查看实现:

注意1:我已经对代码进行了一些优化,因此不是使用多个类似的块,而是使用data-target属性来定义滚动到哪个块。

注意2: position()方法从容器的左上角返回坐标。因此,一旦滚动了内容,坐标就会更改。这就是为什么我们需要通过添加$('。Container')。scrollTop()来对其进行补偿

$(document).ready(function() {
  $(".Menu li").on('click', function() {
    $('.Container').animate({
      scrollTop: $($(this).data('target')).position().top + $('.Container').scrollTop()
    }, 'slow');
  });
});
.Wrapper {
  display: flex;
  position: relative;
  width: 90vw;
  height: 90vh;
  background-color: purple;
}
.Menu {
  position: relative;
  width: 10vw;
  height: 90vh;
  background-color: blue;
}
.Menu li {
  position: relative;
  font-size: 4vw;
  line-height: 5vw;
  text-align: center;
  color: white;
  cursor: pointer;
  list-style-type: none;
}
.Container {
  position: relative;
  width: 80vw;
  height: 90vh;
  background-color: red;
  overflow-y: hidden;
}
.Box {
  position: relative;
  width: 80vw;
  height: 90vh;
  background-color: purple;
  cursor: pointer;
}
<html>

<head>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
</head>

<body>
  <div class="Wrapper">
    <div class="Menu">
      <li id="Anchor_A" data-target="#Box_A">A</li>
      <li id="Anchor_B" data-target="#Box_B">B</li>
      <li id="Anchor_C" data-target="#Box_C">C</li>
      <li id="Anchor_D" data-target="#Box_D">D</li>
      <li id="Anchor_E" data-target="#Box_E">E</li>
    </div>
    <div class="Container">
      <div class="Box" id="Box_A">
        Box A
      </div>
      <div class="Box" id="Box_B">
        Box B
      </div>
      <div class="Box" id="Box_C">
        Box C
      </div>
      <div class="Box" id="Box_D">
        Box D
      </div>
      <div class="Box" id="Box_E">
        Box E
      </div>
    </div>
  </div>
</body>

</html>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

jQuery-ScrollTop和On.Click不起作用

来自分类Dev

jQuery:scrollspy() 和 scrollTop() 不起作用

来自分类Dev

jQuery scrollTop()在Safari中不起作用

来自分类Dev

jQuery scrollTop()在Safari中不起作用

来自分类Dev

jQuery(“。element”)。scrollTop(0); 不起作用

来自分类Dev

jQuery scrollTop() 不起作用并返回零

来自分类Dev

jQuery .not()和:not()不起作用

来自分类Dev

jQuery .Click()不起作用

来自分类Dev

jQuery .Click()不起作用

来自分类Dev

jQuery .click()不起作用

来自分类Dev

jQuery`.click()`不起作用

来自分类Dev

jQuery on('click)不起作用

来自分类Dev

Anchor Click和jQuery GET在FF和Safari中不起作用,但在Chrome中起作用,为什么?

来自分类Dev

div中的scrolltop在jQuery中不起作用

来自分类Dev

jQuery scrollTop()在Firefox中的'body'元素上不起作用

来自分类Dev

为什么jQuery中的scrollTop在Firefox上不起作用?

来自分类Dev

jQuery scrolltop-首次使用后不起作用

来自分类Dev

jQuery scrollTop在实时环境中不起作用

来自分类Dev

jQuery动画:scrolltop在Firefox或Web Explorer中不起作用

来自分类Dev

jQuery Animate scrollTop在Firefox中不起作用

来自分类Dev

jQuery scrollTop(val) 在页面刷新时不起作用

来自分类Dev

jquery .animate scrollTop 功能不起作用

来自分类Dev

jQuery和Wordpress链接不起作用

来自分类Dev

IE和jQuery帖子不起作用

来自分类Dev

jQuery toggleclass和单击不起作用

来自分类Dev

$(this)和find在JQuery中不起作用

来自分类Dev

jquery next() 和 prev() 不起作用

来自分类Dev

jQuery addClass 和 removeClass 不起作用

来自分类Dev

jquery 和删除类不起作用

Related 相关文章

热门标签

归档