html中锚点的使用

如今总结一下控制锚点的几种情况:

1. 在同一页面中

[html] view plaincopy

<a name="add"></a><!-- 定义锚点 -->

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

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

[html] view plaincopy

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

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

第一种:

[html] view plaincopy

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

另外一种:

[html] view plaincopy

<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>
时间: 2024-12-05 02:26:10

html中锚点的使用的相关文章

Vue爬坑之旅(八):vue单页面中锚点跳转

一般情况下我们在html中使用锚点时会利用链接方式请求‘#+id名称’,此时会在url后面跟一个#号.但是在单页面中会有路由误判的情况.所以在单页面中锚点可改为参数传递的方式. 一.封装一个外部js:anchor.js //锚点跳转 function goAnchor(selector) { var anchor = this.$el.querySelector(selector);//获取元素 if(anchor) { setTimeout(()=>{//页面没有渲染完成时是无法滚动的,因此设

css中锚点剖析 &amp; 血泪教训

前记: 在工作中,如果自己发现了bug,千万不要幻想着能够蒙混过关,别人不会发现,一定要赶在别人发现之前,自己解决掉它!!不然的结果就是,明天上线,今天提出了这个bug,要求修复,然后自己晚上挑灯修改!!~~~~(>_<)~~~~ 先说一下遇到的问题: 想要实现的效果是,在A页面中通过在a的href链接(href = 'B.html#b'),链到B页面的b锚点处. 在普通页面是可以正常实现的,所谓的普通页面指的是 页面一次性渲染,不存在js动态加载elements,破坏DOM树的行为. 现在的

cocos2d-x中锚点设置及定位方式

问题 在cocos2d演示样例代码HelloCpp中,为什么要将CCMenu设置位置到CCPointZero,即使CCMenu的锚点是在(0.5, 0.5)? 回答 这是由于CCMenu没有使用锚点进行坐标定位,而是使用的坐标原点.也就是说,CCMenu的坐标原点放到了其父节点的坐标原点. 延伸 不光是CCMenu没有使用锚点定位,像CCLayer,CCScene都没有使用锚点定位.详细设定是在构造函数中设计标记m_bIgnoreAnchorPointForPosition = true;下表描

关于页面中锚跳转问题

一般页面的锚跳转都是通过href="#id"的方式跳转,但是我的项目 ,ssh框架的 ,不知道什么原因,只要是href中#开头,就跳到项目默认页面index.jsp. 后来找到了别的办法,不用超链接 ,改用方法调用,用下面代码:onClick="window.location.hash= 'topp';" topp是我定义的锚点,结果好使了. 但是超链接失效的原因至今不知道,如果有知道的朋友请告诉一下  

网站SEO外链中锚文本指向首页还是指向内页?

我们在做外链的时候,我们总会被一个问题所困扰,就是我们是如何做链接的指向呢?我想这个问题特别是那些新手seo与草根站长会常常纠结吧,不知道自己所发的外链到底有没有效果,对网站的排名有没有帮助呢?今天本站针对这个问题就给大家解答一下吧! 做外链的时候,关键词做锚链接,到底是链接到内页还是链到首页?因为锚链接对关键词排名有直接的作用,但是我们在做产品的时候,产品关键词按理来说是链到对应的内页,这样用户体验才是最好的. 但是如果是这样的话对我们首页关键词排名就不利,因为链接到内页,投票就投给了内页而非

cocos2d中锚点概念

这两天看了下锚点的概念. /** * Sets the anchor point in percent. * * anchorPoint is the point around which all transformations and positioning manipulations take place. * It's like a pin in the node where it is "attached" to its parent. * The anchorPoint is

Unity中锚点的动态设置

问题背景 在做签到系统时,需求给的效果图如下 效果图像这样,中间是模型,周围其他是签到框这样的布局,我想动态生成各个动态框,涉及到一个定位问题,锚点的设置(动态去设置每个item的位置) 实现方法 SetInsetAndSizeFromParentEdge(); 此方法属于RectTransform里面得函数,(如果想更多了解RectTransform的话前面我有分析,https://www.cnblogs.com/answer-yj/p/10623304.html),这个函数有三个参数,第一个

jq实现页面中锚点滚动跳转

$(function(){ $('a[href*=#],area[href*=#]').click(function() { if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) { var $target = $(this.hash); $target = $target.length && $t

html5中的锚点特效

html5的强大让我感觉越发兴奋,今天在写一个js demo---网页定位导航特效的时候,在涉及到页面的快速定位的时候,我还以为要用很复杂的js实现,结果之后才发现,html5有一个很酷的效果,虽然这个锚点特效只能支持Chrome,火狐,IE8以上等浏览器.但是在不考虑一些旧的浏览器的兼容情况的时候,可以使用,而且效果是杠杠的 在html5中,锚点使用id名称而不再是name属性了 demo 例子: <!DOCTYPE html>    <html>        <head