• js模拟html锚链接


    当我们在html页面内部进行锚点内部链接时,锚点会将目标定位到页面顶部,而某些情况下,我们的需求可能除了内部链接之外,还要讲锚点目标置于特定位置。比如下面这个例子

    可以看到,这个例子中,由于顶部盒子fixed定位,这种情况下,我们内部链接的时候,对应内容置顶到窗口顶部,会被顶部盒子遮住一部分内容。

    怎么办呢?

    憋慌,如果你熟悉js,那我们可以轻松的搞定这个问题!

    原理很简单,只需要点击标签的时候,让滚动条滚动到你想定位的位置就好了。

    demo如下:

    html代码:

    <ul class="ul">
          <li class="li on" data-info="StrokeFeature">行程特色</li>
          <li class="li" data-info="ReferenceTravel">参考行程</li>
          <li class="li" data-info="cost">费用包含</li>
          <li class="li" data-info="exclusive">不含项目</li>
    </ul>
    <div id="StrokeFeature">……</div>
    <div id="ReferenceTravel">……</div>
    <div id="cost">……</div>
    <div id="exclusive">……</div>

    JavaScript代码:

    var list = document.querySelectorAll(".li");
    // alert(list.length);
    for (var i = 0; i < list.length; i++) {
        list[i].onclick = function() {
            for (var k = 0; k < list.length; k++) {
                list[k].className = "li";
            };
            // alert(StrokeFeature.offsetTop);
            this.className = "li on";
            var attr = this.getAttribute("data-info");
            var classDiv = document.querySelector("#" + attr);
            // 滚动条滚动到对应标签内容
            window.scrollTo(0, classDiv.offsetTop - StrokeFeature.offsetTop);
        }
    };
    
    var StrokeFeature = document.querySelector("#StrokeFeature"),
        ReferenceTravel = document.querySelector("#ReferenceTravel"),
        cost = document.querySelector("#cost"),
        exclusive = document.querySelector("#exclusive");

    是不是很简单呢?!

    其实一开始,我用了个很蠢的方法,就是直接设置滚动条的高度

    这个方法虽然解决了定位的问题,但是会带来一个影响,如下图:

    当你在同一个页面还需要用到onscroll事件的时候,上面的方法会将scrollTop的值设置为常量值。如果你需要用到scrollTop进行一些逻辑判断,那么问题就出现了……

    好了,说了这么多,其实只想说明一个方法,就是window.scrollTo(x,y);关于此方法的更多详解,请自行百度,(*^__^*) 嘻嘻……

    最后,在线demo

  • 相关阅读:
    CSS3---用户界面
    CSS3---媒体查询与响应式布局
    HDU 5285 wyh2000 and pupil
    POJ 2488 A Knight's Journey
    POJ 1067 取石子游戏
    POJ 2777 Count Color
    POJ 3259 Wormholes
    Project Euler 26 Reciprocal cycles
    POJ 2104 K-th Number
    POJ 1013 Counterfeit Dollar
  • 原文地址:https://www.cnblogs.com/guiren/p/5091953.html
Copyright © 2020-2023  润新知