首頁  >  文章  >  web前端  >  html 錨點三種實作方法

html 錨點三種實作方法

PHPz
PHPz原創
2017-04-03 16:57:564791瀏覽

在網頁中常用到錨點,特別是比較長的頁面中錨點的使用會增加使用者體驗,現在php中文網介紹html 錨點三種實作方法        

1. 在同一頁中

5b62bd7d775b2adbc1bb9c77cffa9ea45db79b134e9f6b82c0b36e0489ee08eddd807cd6091abd35b058645ec54b9c99
938982549c59a5488a452fa0c36127cf跳到add5db79b134e9f6b82c0b36e0489ee08ed
2. 在不同頁面中,錨點定位在a.html中,從另外一個頁面的連結跳到這個錨點
59baaeaf69a9f8e28ce84a8d935b5eba跳到a.add5db79b134e9f6b82c0b36e0489ee08ed
3. 點擊連結觸發js事件,同時跳到錨點,有兩種處理方式:
第一種:
de348a754106d073e6fc33e6b97d532e觸發add函數並跳到add錨點2d3eabd8b0d197cc2b0814e57ca0387ea0586c6af6e275ce5e5474c26327430394b3e26ee717c64999d7867364b1b4a3c0250df641b4d1f1fb31f4398df8e5c2
3a9badff1b4e8850784e83015b3e70c5透過scrollIntoView實現錨點效果5db79b134e9f6b82c0b36e0489ee08ed  

在html中設定錨點定位有幾種方法,使用id定位、使用name定位、使用js定位,這些方法不一定是最全的,只可以參考下

1、使用id定位: 

<a href="#1F" name="1F">锚点1</a> 
<p name="1F"> 
<p> 
11111111111 
</br> 
11111111111 
</br>11111111111 
</br>11111111111 
</br>11111111111 
</br> 
</p> 
</p>

這樣的定位可以針對任何標籤來定位。

2、使用name定位: 

<a href="#5F">锚点5</a> 
</br></br></br></br></br></br></br></br></br></br></br></br></br></br></br></br></br></br></br> 
<a name="5F">1111111</href>

使用name屬性只能針對a標籤來定位,而對p等其他標籤就不能起到定位作用。

3、使用js定位 

<li class="" onclick="javascript:document.getElementById(&#39;here&#39;).scrollIntoView()"></li>

实例:

js 锚点平滑定位

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
    <head>
        <style type="text/css" mce_bogus="1">
            p.test {
                width: 400px;
                margin: 5px auto;
                border: 1px solid #ccc;
            }
             
            p.test strong {
                font-size: 16px;
                background: #fff;
                border-bottom: 1px solid #aaa;
                margin: 0;
                display: block;
                padding: 5px 0;
                text-decoration: underline;
                color: #059B9A;
                cursor: pointer;
            }
             
            p.test p {
                height: 400px;
                background: #f1f1f1;
                margin: 0;
            }
        </style>
        <script type="text/javascript">
             
            function intval(v){
                v = parseInt(v);
                return isNaN(v) ? 0 : v;
            } // ?取元素信息   
            function getPos(e){
                var l = 0;
                var t = 0;
                var w = intval(e.style.width);
                var h = intval(e.style.height);
                var wb = e.offsetWidth;
                var hb = e.offsetHeight;
                while (e.offsetParent) {
                    l += e.offsetLeft + (e.currentStyle ? intval(e.currentStyle.borderLeftWidth) : 0);
                    t += e.offsetTop + (e.currentStyle ? intval(e.currentStyle.borderTopWidth) : 0);
                    e = e.offsetParent;
                }
                l += e.offsetLeft + (e.currentStyle ? intval(e.currentStyle.borderLeftWidth) : 0);
                t += e.offsetTop + (e.currentStyle ? intval(e.currentStyle.borderTopWidth) : 0);
                return {
                    x: l,
                    y: t,
                    w: w,
                    h: h,
                    wb: wb,
                    hb: hb
                };
            } // ?取??条信息   
            function getScroll(){
                var t, l, w, h;
                if (document.documentElement && document.documentElement.scrollTop) {
                    t = document.documentElement.scrollTop;
                    l = document.documentElement.scrollLeft;
                    w = document.documentElement.scrollWidth;
                    h = document.documentElement.scrollHeight;
                }
                else
                    if (document.body) {
                        t = document.body.scrollTop;
                        l = document.body.scrollLeft;
                        w = document.body.scrollWidth;
                        h = document.body.scrollHeight;
                    }
                return {
                    t: t,
                    l: l,
                    w: w,
                    h: h
                };
            } // ?点(Anchor)?平滑跳?   
            function scroller(el, duration){
                if (typeof el != &#39;object&#39;) {
                    el = document.getElementById(el);
                }
                if (!el)
                    return;
                var z = this;
                z.el = el;
                z.p = getPos(el);
                z.s = getScroll();
                z.clear = function(){
                    window.clearInterval(z.timer);
                    z.timer = null
                };
                z.t = (new Date).getTime();
                z.step = function(){
                    var t = (new Date).getTime();
                    var p = (t - z.t) / duration;
                    if (t >= duration + z.t) {
                        z.clear();
                        window.setTimeout(function(){
                            z.scroll(z.p.y, z.p.x)
                        }, 13);
                    }
                    else {
                        st = ((-Math.cos(p * Math.PI) / 2) + 0.5) * (z.p.y - z.s.t) + z.s.t;
                        sl = ((-Math.cos(p * Math.PI) / 2) + 0.5) * (z.p.x - z.s.l) + z.s.l;
                        z.scroll(st, sl);
                    }
                };
                z.scroll = function(t, l){
                    window.scrollTo(l, t)
                };
                z.timer = window.setInterval(function(){
                    z.step();
                }, 13);
            }
        </script>
    </head>
    <body>
        <p class="test">
            <a name="header_1" id="header_1"></a>
            <strong onclick="javascript:scroller(&#39;header_4&#39;, 800);">header_1 --> header_4</strong>
            <p>
            </p>
        </p>
        <p class="test">
            <a name="header_2" id="header_2"></a>
            <strong onclick="javascript:scroller(&#39;header_5&#39;, 800);">header_2 --> header_5</strong>
            <p>
            </p>
        </p>
        <p class="test">
            <a name="header_3" id="header_3"></a>
            <strong onclick="javascript:scroller(&#39;header_6&#39;, 800);">header_3 --> header_6</strong>
            <p>
            </p>
        </p>
        <p class="test">
            <a name="header_4" id="header_4"></a>
            <strong onclick="javascript:scroller(&#39;header_7&#39;, 800);">header_4 --> header_7</strong>
            <p>
            </p>
        </p>
        <p class="test">
            <a name="header_5" id="header_5"></a>
            <strong onclick="javascript:scroller(&#39;header_3&#39;, 800);">header_5 --> header_3</strong>
            <p>
            </p>
        </p>
        <p class="test">
            <a name="header_6" id="header_6"></a>
            <strong onclick="javascript:scroller(&#39;header_2&#39;, 800);">header_6 --> header_2</strong>
            <p>
            </p>
        </p>
        <p class="test">
            <a name="header_7" id="header_7"></a>
            <strong onclick="javascript:scroller(&#39;header_1&#39;, 800);">header_7 --> header_1</strong>
            <p>
            </p>
        </p>
    </body>
</html>

以上是html 錨點三種實作方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn