javascript - 通过单击任意点上的 div 滚动到特定的 div

标签 javascript jquery html css

我知道这个问题已经得到回答,但我的问题的场景完全不同,所以我会尝试解释一下。如果有人想要更多解释,我很乐意给出。

我有一个由 8 个框组成的过滤栏。

 <div class="filter-box  filter-box--green px-2 pt-3 pb-4" data-box-id="web-dev">
     <img width="60" height="60" src="{!! asset('images/Service-page/Web Development-hover.svg') !!}" alt="Web Dev" />
         <div class="title text-center mt-2 pb-4">
                            Web<br />Development
         </div>

         <div class="arrow">
             <img src="{!! asset('images/Service-page/Green.svg') !!}">
         </div>
  </div>

当我点击框时,它会根据 data-box-id

滚动到特定的 div

下面是滚动到特定 div 的 JavaScript 代码。

    <script type="text/javascript">
    $(document).ready(function() {
        $('.filter-box').on('click', function(e) {
            // console.log(window.scroll)
            var boxId = $(this).attr('data-box-id');

            $('html, body').animate({
                scrollTop: $("#" + boxId).offset().top
            }, 'slow');
        });
    })
</script>

这里我使用了offset。问题是有时光标不在目标上。我想要实现的是,当我点击过滤器框上的任意位置时,它应该滚动并且我的光标位置应该在预期的 div 上。

最佳答案

使用 Jquery .animate 平滑滚动到所需的元素,请参见示例。

$( "#notelement" ).click(function() {
  $('html, body').animate({
      scrollTop: ($('#element').offset().top)
  },500);
});
#notelement{
  margin-bottom:800px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="notelement">Other element</div>
<div id="element">Scroll to element</div>

关于javascript - 通过单击任意点上的 div 滚动到特定的 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51190007/

相关文章:

javascript - 正则表达式不会按预期匹配单词

javascript - Rails 3.2.13 - 没有路线匹配 [GET] "/js/jquery.fancybox.js"

javascript - ES6 - 决定是对象还是 promise

javascript - JS 监控数据使用情况?

Jquery - 无法隐藏父div

php - 从子文件夹调用 header

javascript - JQuery - 切换效果不起作用

javascript - 页面加载时推特框的 jQuery CSS 高度

html - 如何使用显示垂直对齐网格元素:grid and fill all vertical empty space?

javascript - 无法点击带有 ajax 加载的按钮