HTML中锚点的使用_动力节点Java学院整理

所属分类: 网页制作 / HTML/Xhtml 阅读数: 1301
收藏 0 赞 0 分享

现在总结一下控制锚点的几种情况:

1. 在同一页面中
 

<a name="add"></a><!-- 定义锚点 -->
<a href="#add">跳转到add</a>

2. 在不同页面中,锚点定位在a.html中,从另外一个页面的链接跳转到这个锚点 

<a href="a.html#add">跳转到a.add</a>

3. 点击链接触发js事件,同时跳转到锚点,有两种处理方式:

第一种:

<a href="#add" onclick="add()">触发add函数并跳转到add锚点</a>

第二种: 

<div id="divNode"><!-- contents --></div><!-- 假设一个需要跳转到的节点 -->
<a href="#" onclick="document.getElemetnById('divNode').scrollIntoView(true);return false;">通过scrollIntoView实现锚点效果</a>  

在html中设置锚点定位有几种方法,使用id定位、使用name定位、使用js定位,这些方法不一定是最全的,只可以参考下

1、使用id定位:

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

这样的定位可以针对任何标签来定位。

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标签来定位,而对div等其他标签就不能起到定位作用。

3、使用js定位

<li class="" onclick="javascript:document.getElementById('here').scrollIntoView()"></li>  

实例:

js 锚点平滑定位  

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
    <head>
        <style type="text/css" mce_bogus="1">
            div.test {
                width: 400px;
                margin: 5px auto;
                border: 1px solid #ccc;
            }
             
            div.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;
            }
             
            div.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 != 'object') {
                    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>
        <div class="test">
            <a name="header_1" id="header_1"></a>
            <strong onclick="javascript:scroller('header_4', 800);">header_1 --> header_4</strong>
            <p>
            </p>
        </div>
        <div class="test">
            <a name="header_2" id="header_2"></a>
            <strong onclick="javascript:scroller('header_5', 800);">header_2 --> header_5</strong>
            <p>
            </p>
        </div>
        <div class="test">
            <a name="header_3" id="header_3"></a>
            <strong onclick="javascript:scroller('header_6', 800);">header_3 --> header_6</strong>
            <p>
            </p>
        </div>
        <div class="test">
            <a name="header_4" id="header_4"></a>
            <strong onclick="javascript:scroller('header_7', 800);">header_4 --> header_7</strong>
            <p>
            </p>
        </div>
        <div class="test">
            <a name="header_5" id="header_5"></a>
            <strong onclick="javascript:scroller('header_3', 800);">header_5 --> header_3</strong>
            <p>
            </p>
        </div>
        <div class="test">
            <a name="header_6" id="header_6"></a>
            <strong onclick="javascript:scroller('header_2', 800);">header_6 --> header_2</strong>
            <p>
            </p>
        </div>
        <div class="test">
            <a name="header_7" id="header_7"></a>
            <strong onclick="javascript:scroller('header_1', 800);">header_7 --> header_1</strong>
            <p>
            </p>
        </div>
    </body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

更多精彩内容其他人还在看

Table相关整理及Javascript操作table,tr,td

很多人都有这种经历:当某个td中没有内容或者没有可见元素时,td的border也会消失。本文将给出解决方案,感兴趣的朋友可以了解下,或许本文对你有所帮助
收藏 0 赞 0 分享

td 内容自动换行 table表格td设置宽度后文字太多自动换行

table表格td设置宽度后文字太多导致自动换行,这是一个很常见的问题,或许很多的网友已经有了好的解决方法,如果依然有童鞋们不会的,可以参考下本文,可能会有意外的收获
收藏 0 赞 0 分享

html4和html5区别之如何在一个input上添加焦点实现代码

如何在一个input上添加焦点,有很多的实现方法,本文分别用html4和html5做了下演示,感兴趣的朋友可以参考下,或许本文对你有所帮助
收藏 0 赞 0 分享

纯css为select添加样式(无脚本)实现

改变select默认的样式,一般情路情况下通过ul,li来模拟来实现;Jquery插件也是这样,接下来介绍一种不写脚本,只用单纯的css来实现。在IE系列下,选中某个选项的时候会有背景色块,IE7-IE10都有此bug,感兴趣的朋友可以参考下啊
收藏 0 赞 0 分享

iframe的src赋值问题(服务器端)

frame的src赋值的问题,本文将进行详细探讨:服务器端的iframe重新src重新赋值,给iframe加一个ID,再加上runat=server,感兴趣的你可不要错过了哈
收藏 0 赞 0 分享

iframe的src设置为about:blank之后细节探讨

不设置为about:blank,内存不会释放掉。还必须用 iframe.document.write(''); 这样才能将内容清空,本文将详细探讨一下iframe的src设置为about:blank之后细节,感兴趣的你可不要错过了哈
收藏 0 赞 0 分享

无法定义IE6字体:13px大小无效,IE6自动显示更大的字体的解决方法

前些天调整网页一个模块的时候将页面字体的大小设置为13px大小了,由于当时用的是Chrome浏览器以及IE8,并没有发现原来font-size:13px在IE6下居然不听使唤总是自动显示为一个更大的大小,变现上又及其难看
收藏 0 赞 0 分享

为何html中嵌入mp4格式视频播放不了

只是在页面中加载了一个播放器的样子,各个按钮都不管用,不知道是哪个地方出了问题,很是郁闷,于是搜集整理下,拿出来和大家分享,希望可以帮助你们
收藏 0 赞 0 分享

如何把select下拉框的值传到id中实现代码

把select下拉框的值传到id中,是网友们比较在意的问题,本人搜索整理下,晒出来和大家分享
收藏 0 赞 0 分享

怎么把select下拉菜单里的文字设置成左右滚动效果

希望用marquee标签来设置字体滚动,代码是下面这样写的,但是没有效果,字体还是不会滚动,应该怎么来写,才会实现这个效果呢
收藏 0 赞 0 分享
查看更多