`
keimon
  • 浏览: 74771 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

仿百度百科的页面导航效果

阅读更多

这周不小心看到了百度百科的页面导航效果,感觉挺不错的,周末抽空写了下。

下图为导航部分的效果图:


css和图片都是抄百度的,可从附件下载。

具体的代码如下:

20131128 改进版;

暂不支持IE6

<script>
    var allEle = $(':header[class*="headline"]');
    var headLen = allEle.length;
    var ddArr = [];
    //根据页面内容生成slide导航;
    allEle.each(function(i){
        var sideIndex,
            sideName,
            ddId,
            highlight='',
            ddClass,
            sideAnchor;
        sideName = $(this).find('.headline-content').text();
        if($(this).hasClass('headline-1')){
            sideAnchor = sideIndex = $(this).find('.anchor-1').eq(0).attr('name');
            ddClass = 'sideCatalog-item1';
        }else{
            sideAnchor = $(this).find('.anchor-2').eq(0).attr('name');
            sideIndex = sideAnchor.replace('-','.');
            ddClass = 'sideCatalog-item2';
        }
        ddId = 'sideToolbar-item-0-'+ sideAnchor;
        if(i==0){
            highlight = 'highlight';
        }
        var ddHtml = '<dd id="'+ ddId +'" class="'+ddClass + ' ' + highlight +'">'
                +       '<span class="sideCatalog-index1">'+ sideIndex +'</span>'
                +       '<a class="nslog:1026" onclick="return false;" title="part'+sideAnchor+'" href="#'+sideAnchor+'">'+ sideName +'</a>'
                +       '<span class="sideCatalog-dot"></span>'
                +    '</dd>';
        ddArr.push(ddHtml);
    });
    $('#sideCatalog-catalog dl').html(ddArr.join(''));

    //设置导航的位置
    var slideTop = $(window).height() - $('.slide').height();
    $('.slide').css('top',slideTop);

    var slideInnerHeight = $('#sideCatalog-catalog dl').height();
    var slideOutHeight = $('#sideCatalog-catalog').height();
    var enableTop = slideInnerHeight - slideOutHeight;
    var step = 50;
    //点击向上的按钮
    $('#sideCatalog-down').bind('click', function () {
        if ($(this).hasClass('sideCatalog-down-enable')) {
            if ((enableTop - Math.abs(parseInt($('#sideCatalog-catalog dl').css('top')))) > step) {
                $('#sideCatalog-catalog dl').stop().animate({'top': '-=' + step}, 'fast');
                $('#sideCatalog-up').removeClass('sideCatalog-up-disable').addClass('sideCatalog-up-enable');
            } else {
                $('#sideCatalog-catalog dl').stop().animate({'top': -enableTop}, 'fast');
                $(this).removeClass('sideCatalog-down-enable').addClass('sideCatalog-down-disable');
            }
        } else {
            return false;
        }
    })
    //点击向下的按钮
    $('#sideCatalog-up').bind('click', function () {
        if ($(this).hasClass('sideCatalog-up-enable')) {
            if (Math.abs(parseInt($('#sideCatalog-catalog dl').css('top'))) > step) {
                $('#sideCatalog-catalog dl').stop().animate({'top': '+=' + step}, 'fast');
                $('#sideCatalog-down').removeClass('sideCatalog-down-disable').addClass('sideCatalog-down-enable');
            } else {
                $('#sideCatalog-catalog dl').stop().animate({'top': '0'}, 'fast');
                $(this).removeClass('sideCatalog-up-enable').addClass('sideCatalog-up-disable');
            }
        } else {
            return false;
        }
    })

    //点击导航中的各个目录
    $('#sideCatalog-catalog dl').delegate('dd', 'click', function () {
        var index = $('#sideCatalog-catalog dl dd').index($(this));
        scrollSlide($(this), index);
        var ddIndex = $(this).find('a').stop().attr('href').lastIndexOf('#');
        var ddId = $(this).find('a').stop().attr('href').substring(ddIndex+1);
        var windowTop = $('a[name="' + ddId + '"]').offset().top;
        $('body,html').animate({scrollTop: windowTop}, 'fast');
    })

    //滚动页面,即滚动条滚动
    $(window).scroll(function () {
        if($(this).scrollTop()>$(this).height()){
            $('.slide').show();
        }else{
            $('.slide').hide();
        }
        for (var i=headLen-1; i>=0; i--) {
            if ($(this).scrollTop() >=allEle.eq(i).offset().top - allEle.eq(i).height()) {
                var index = i;
                $('#sideCatalog-catalog dl dd').eq(index).addClass('highlight').siblings('dd').removeClass('highlight');
                scrollSlide($('#sideCatalog-catalog dl dd').eq(index), index);
                return false;
            } else {
                $('#sideCatalog-catalog dl dd').eq(0).addClass('highlight').siblings('dd').removeClass('highlight');
            }
        }
    })

    //导航的滚动,以及向上,向下按钮的显示隐藏
    function scrollSlide(that, index){
        if (index < 5) {
            $('#sideCatalog-catalog dl').stop().animate({'top': '0'}, 'fast');
            $('#sideCatalog-down').removeClass('sideCatalog-down-disable').addClass('sideCatalog-down-enable');
            $('#sideCatalog-up').removeClass('sideCatalog-up-enable').addClass('sideCatalog-up-disable');
        } else if (index > 11) {
            $('#sideCatalog-catalog dl').stop().animate({'top': -enableTop}, 'fast');
            $('#sideCatalog-down').removeClass('sideCatalog-down-enable').addClass('sideCatalog-down-disable');
            $('#sideCatalog-up').removeClass('sideCatalog-up-disable').addClass('sideCatalog-up-enable');
        } else {
            var dlTop = parseInt($('#sideCatalog-catalog dl').css('top')) + slideOutHeight / 2 - (that.offset().top - $('#sideCatalog-catalog').offset().top);
            $('#sideCatalog-catalog dl').stop().animate({'top': dlTop}, 'fast');
            $('#sideCatalog-down').removeClass('sideCatalog-down-disable').addClass('sideCatalog-down-enable');
            $('#sideCatalog-up').removeClass('sideCatalog-up-disable').addClass('sideCatalog-up-enable');
        }
    }

    //置顶
    $('#sideToolbar-up').bind('click', function(){
        $('body,html').animate({scrollTop: 0}, 'fast');
    })

    //slide内容的显示与隐藏
    $('#sideCatalogBtn').bind('click', function(){
        if($(this).hasClass('sideCatalogBtnDisable')){
            $(this).removeClass('sideCatalogBtnDisable');
            $('#sideCatalog').css('visibility','visible');
        }else{
            $(this).addClass('sideCatalogBtnDisable');
            $('#sideCatalog').css('visibility','hidden');
        }
    })

6
1
分享到:
评论
7 楼 ch2004 2015-02-16  
6 楼 y_hai_n 2014-07-18  
需要再加一个jquery.min.js,效果就出来了,谢谢分享
5 楼 town2you 2014-05-20  
代码很好用,谢谢!不过有个小问题不知道怎么弄:右边导航栏是固定在页面的底部的,但是把网页拉到最底部的时候,右边导航栏会被网站页脚挡住(重叠)。

百度百科的页面是没问题的,他的页脚会把右侧导航自动往上顶。可以帮忙解决这个吗?非常感谢!
4 楼 town2you 2014-05-19  
很好用,谢谢了!
3 楼 happy_linger 2014-04-08  
看到了,谢谢
2 楼 happy_linger 2014-04-08  
能不能把html也贴出来啊
1 楼 shma1664 2013-11-11  
很好 收藏啦

相关推荐

    最新仿百度百科史记2014效果

    【标题】"最新仿百度百科史记2014效果" 指的是一个基于HTML5技术构建的网站模板,其设计灵感来源于2014年百度百科的“史记”专题页面。这个模板旨在模仿百度百科在那一年特有的展示方式和用户体验,以供开发者学习...

    js仿百度百科右侧导航特效

    本文将深入探讨如何利用JavaScript技术来创建这种导航效果。 首先,我们需要理解这个特效的基本原理。百度百科的右侧导航通常包括页面内的各个标题链接,当用户滚动页面时,导航条会高亮显示当前可视区域的标题。这...

    jQuery仿百度百科右侧浮动菜单代码.zip

    在jQuery仿百度百科的实现中,这涉及到监听滚动事件(`$(window).scroll()`),计算页面滚动的距离,然后根据距离动态改变菜单项的样式,使其始终保持可见。为了实现点击跳转,菜单项通常与页面上的锚点链接对应,...

    基于Jquery实现仿百度百科右侧导航代码附源码下载

    通过以上知识点的介绍,开发者可以更深入地了解如何使用jquery来实现一个仿百度百科的右侧导航功能,并能根据提供的源码来实现定制化的导航效果。同时,这些知识点也对提升页面交互体验和实现细节优化有很大帮助。

    【超炫】仿百度页面,仿百度搜索框提示效果源代码(包括html,css文件)

    仿百度页面,仿百度搜索框提示效果源代码(包括html,css文件) 效果演示:http://bdwww.cszhan.top/ 【超炫】仿百度搜索引擎首页html代码静态 网址导航源码 仿百度首页搜索html模板 仿百度首页关键词内容列表信息...

    纯CSS仿百度百科下拉菜单代码.zip

    "纯CSS仿百度百科下拉菜单代码"是一个专门针对这一需求的解决方案,旨在实现一种高效且美观的下拉菜单效果。这个压缩包包含了实现这一效果所需的HTML文件和可能的CSS样式文件。 首先,让我们来了解CSS(Cascading ...

    CSS仿百度百科导航下拉菜单代码

    "CSS仿百度百科导航下拉菜单代码"是一个专门用于创建类似百度百科网站的蓝色风格导航菜单的实例。这个实例主要利用了CSS(层叠样式表)来实现,具有简洁、高效的特点,特别适合初学者学习和开发者参考。 首先,我们...

    仿百度百科目录树控件

    在提供的压缩包“仿百度百科目录树控件”中,可能包含了源代码文件、示例页面、CSS样式文件和可能的文档,帮助开发者理解和使用这个控件。开发者可以研究这些文件,了解其实现原理,并根据自己的项目需求进行定制。 ...

    模仿百科百科右侧导航栏

    【标题】"模仿百科百科右侧导航栏"是一个项目,旨在使用jQuery库来创建一个类似百度百科页面右侧的悬浮导航栏。这种导航栏通常在用户滚动页面时跟随滚动,始终保持可见,方便用户快速跳转到页面的不同部分。 【描述...

    jQuery仿百度百科右侧浮动菜单特效

    总的来说,"jQuery仿百度百科右侧浮动菜单特效"是通过jQuery对DOM操作、事件处理和页面滚动的监听,结合适当的动画效果,为用户创建了一个直观、易用的页面导航工具。这种技术在现代网页开发中非常常见,能提升用户...

    百度百科目录导航

    #### 描述:仿百度百科特色目录导航 该项目的主要目标是模仿百度百科的目录导航样式和技术实现,为其他网站或应用提供类似的导航功能。通过这种设计,可以提升用户体验,使用户能够更加高效地浏览和查找信息。 ###...

    jQuery仿百度百科右侧浮动菜单特效代码

    【jQuery仿百度百科右侧浮动菜单特效代码】是一种利用JavaScript库jQuery实现的网页交互效果,它模仿了百度百科页面上常见的右侧浮动菜单。这种菜单通常在页面滚动时始终保持在视口的右侧,提供一个快速导航的工具,...

    纯CSS仿百度百科下拉菜单特效代码

    "纯CSS仿百度百科下拉菜单特效代码"就是这样一个实例,它旨在通过CSS(层叠样式表)技术模仿百度百科网站的下拉菜单效果。这个项目的核心在于利用CSS的灵活性和强大的选择器来构建动态的导航菜单,无需JavaScript的...

    jquery仿百度百科底部浮动导航特效

    本例中提到了“jquery仿百度百科底部浮动导航特效”,说明使用了jQuery库来实现特定的页面效果。 2. CSS浮动布局:在本例的CSS代码中使用了“float”属性,这表明了页面布局使用了浮动的方式。浮动布局是Web开发中...

    jQuery网页右侧悬浮导航页面切换菜单.zip

    在网页设计中,导航菜单是不可或缺的部分,它帮助用户在网站的不同页面间轻松跳转。本项目"jQuery网页右侧悬浮导航页面切换菜单"利用了jQuery这一强大的JavaScript库,旨在提供一种高效、美观且用户友好的导航体验。...

    jQuery仿写百度百科的目录树

    通过以上的方法和代码实现,我们可以成功地在自己的项目中复现百度百科的目录树效果。这种功能在各种文档和教程网站中非常常见,提高了用户在长篇内容中的导航效率。在实际开发中,可以根据项目需求进行适当的调整和...

Global site tag (gtag.js) - Google Analytics