javascript - 通过单击任何点上的 div 滚动到特定的 div
问题描述
我知道这个问题已经得到解答,但我的问题的情况完全不同,所以我会尝试解释一下。如果有人想要更多解释,我很乐意给出。
我有一个由 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 的 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>
推荐阅读
- imagemagick - Imagemagick 转换:-剥离所有内容*除了*颜色配置文件(颜色颜色配置文件)
- python - 我如何将此命令嵌入?
- r - 对 R 中的不平衡数据集进行逻辑回归
- angular-material2 - Angular Material 表抛出 nativeElement undefined
- haskell - 如何从 UTCTime 中增加或减少 n 天?
- node.js - node.js exec 命令引用
- amazon-web-services - 在 AWS Glue 作业中处理加密的 JSON
- python - 如何在 django 中迭代模型对象的特定字段
- html - 如何使颜色输入在浏览器之间显示一致的最小宽度?
- javascript - 在提交和更新数据库后保留的表格行内创建一个文本表单