锚点定位-元素相对父级滚动

本文介绍了如何利用JavaScript中的Element.scrollIntoView()方法进行锚点定位,该方法可使元素在父级视口内可见,适用于网页滚动交互设计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>锚点定位-元素相对父级滚动</title>
    <style>
    .link{margin: 100px;}
    .link a{margin: 0 5px;}
    .parent{width: 300px;height: 100px;border: 1px solid #f00;
            margin-left: 100px;background: #999;overflow-y: auto;}
    .child{position: relative;}
    .child1{color: #ff0;word-break:break-all;}
    .child2{color: #f0f;word-break:break-all;}
    .child3{color: #00f;word-break:break-all;}
    .child4{color: #0f0;word-break:break-all;}
    .child5{color: #0ff;word-break:break-all;}
    </style>
</head>
<body>
    <div class="link">
        <a id="c1" href="#">child1</a>
        <a id="c2" href="#">child2</a>
        <a id="c3" href="#">child3</a>
        <a id="c4" href="#">child4</a>
        <a id="c5" href="#">child5</a>
    </div>

    <div class="parent">
        <div class="child">
            <div class="child1">
                沙发child1child1child1child1child1child1
                child1child1child1child1child1child1child1
                child1child1child1child1child1child1child1
                child1child1child1child1child1child1child1
                child1child1child1child1child1child1child1
                child1child1child1child1child1child1child1
                child1child1child1child1child1child1child1
            </div>
            <div class="child2">
                    沙发child2child2child2child2child2child2
                child2child2child2child2child2child2child2
                child2child2child2child2child2child2child2
                child2child2child2child2child2child2child2
            </div>
            <div class="child3">
                    沙发child3child3child3child3child3child3
                child3child3child3child3child3child3child3
            </div>
            <div class="child4">
                    沙发child4child4child4child4child4child4
            </div>
            <div class="child5">
                沙发child5child5child5child5child5child5
                child5child5child5child5child5child5child5
            </div>
        </div>
    </div>

    <script src="jquery-1.9.1.min.js"></script>
    <script>
    
    $('.parent').scroll(function () {
        console.log($(this).scrollTop());
    })
    pointLink($('#c1'),$('.child1'))
    pointLink($('#c2'),$('.child2'))
    pointLink($('#c3'),$('.child3'))
    pointLink($('#c4'),$('.child4'))
    pointLink($('#c5'),$('.child5'))
    
    //ele       需要点击的元素
    //target    需要滚动的目标元素
    function pointLink(ele,target) {
        ele.click(function () {
            //length为目标元素到父级的距离,父级必须要有相对定位
            var length = target.position().top;     
            $('.parent').animate({"scrollTop":length},500);
            return false;       //阻止a标签的默认事件 或用 e.preventDefault();
        })
    }

    </script>
</body>
</html>

 

 

第二种方法可以用Element.scrollIntoView()来进行锚点定位

https://developer.mozilla.org/zh-CN/docs/Web/API/Element/scrollIntoView

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值