jQuery网页锚点滚动【原】

网页中的锚点如果直接跳转,会给人一种很突然的感觉,添加一个滚动的动画效果会柔和很多。
下面的js代码包含了锚点滚动,页面滚动到一定距离时锚点容器固定(参数fixed),锚点容器垂直偏移量设置(参数offset)

<!DOCTYPE html>
<html>
<head>
    <title>网页锚点滚动</title>
    <meta charset="utf-8">
</head>
<style>
    *{margin: 0;padding: 0;font-family: "Arial";}
    ul, ol{list-style: none;}
    .anchor{position: absolute;top: 100px;left: 20px;width: 100px;padding-top: 20px;}
    .anchor.fixed{top: 0;}
    .anchor a{display: block;line-height: 50px;background: #123;border-bottom: 1px solid #fff;font-size: 24px;color: #fff;text-align: center;text-decoration: none;}
    .anchor a.active{background: #fa8000;}
    .elem{margin-top: 120px;}
    .elem li{line-height: 50px;margin-bottom: 800px;font-size: 40px;color: #333;text-indent: 150px;}
</style>
<body>
    <div class="anchor">
        <a href="#anchor-1">1</a>
        <a href="#anchor-2">2</a>
        <a href="#anchor-3">3</a>
        <a href="#anchor-4">4</a>
        <a href="#anchor-5">5</a>
        <a href="#anchor-6">6</a>
        <a href="#anchor-7">7</a>
        <a href="#anchor-8">8</a>
    </div>

    <ul class="elem">
        <li id="anchor-1">anchor-1</li>
        <li id="anchor-2">anchor-2</li>
        <li id="anchor-3">anchor-3</li>
        <li id="anchor-4">anchor-4</li>
        <li id="anchor-5">anchor-5</li>
        <li id="anchor-6">anchor-6</li>
        <li id="anchor-7">anchor-7</li>
        <li id="anchor-8">anchor-8</li>
    </ul>
</body>
<script type="text/javascript" src="http://cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script>
<script>
    $.fn.anchorScroll = function(option) {
        return this.each(function() {
            var options = $.extend({
                fixed: 0,
                offset: 0
            }, {}, typeof option === ‘object‘ && option);

            var $anchorMenu = $(this),
                $anchorItem = $anchorMenu.find(‘a‘),
                pageIsScrolling = false;

            // 点击锚点时页面滚动
            $anchorItem.click(function(e) {
                e.preventDefault ? e.preventDefault() : e.returnValue = false;

                pageIsScrolling = true;

                try {
                    var $target = $($(this).attr(‘href‘));

                    $(‘html, body‘).stop(true, false).animate({
                        scrollTop: $target.offset().top + options.offset
                    }, function() {
                        pageIsScrolling = false;
                    });

                    $(this).addClass(‘active‘).siblings().removeClass(‘active‘);
                } catch (e) {}
            });

            $(window).on(‘scroll DOMContentLoaded load‘, function() {
                // 固定锚点菜单
                if ($(window).scrollTop() > options.fixed) {
                    $anchorMenu.addClass(‘fixed‘).css({
                        position: ‘fixed‘,
                        marginTop: 0,
                        marginBottom: 0
                    });
                } else {
                    $anchorMenu.removeAttr(‘style‘).removeClass(‘fixed‘);
                }

                // 锚点菜单对应项添加高亮样式
                if (!pageIsScrolling) {
                    $anchorItem.each(function() {
                        try {
                            var $target = $($(this).attr(‘href‘));

                            if ($(window).scrollTop() >= $target.offset().top + options.offset) {
                                $(this).addClass(‘active‘).siblings().removeClass(‘active‘);
                            }
                        } catch (e) {}
                    });
                }
            });
        });
    };

    $(‘.anchor‘).anchorScroll({
        fixed: 100,
        offset: -20
    });
</script>
</html>
时间: 2024-10-13 19:52:29

jQuery网页锚点滚动【原】的相关文章

基于jquery的锚点滚动插件(百度百科效果) anchorScroll.js

1.插进使用场景 请打开https://baike.baidu.com/item/%E6%97%A5%E6%9C%AC%E5%8A%A8%E7%94%BB#hotspotmining,查看百度百科页面效果. 2.插件源代码: /* * 作者:孟繁贵 * 2017-08-25 * 版本:1.0 */ jQuery.anchorScroll = function(elem1, elem2) { var currObj, offsetTop = 0, h2List = new Array(), h3L

jQuery网页向下滚动导航固定顶部代码

<!doctype html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>jQuery网页向下滚动导航固定顶部代码</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script src=&

JQuery 实现锚点链接之间的平滑滚动

web开发前端一直用JQuery ,真正接触了才体会到,JQuery 原来比我想象的要强大的多,也可能比我体会到的还要强大的多,特别是兼容性那个好,于是把一些好玩的,酷炫的,能够取代 JS 的.统统给用上了. 从 JQuery 引入今天的正题.用 JQuery 实现锚点链接之间的平滑滚动.曾经介绍过一个用 JS 实现的页面锚点跳转缓冲特效,效果相当不错.能够在同一页面的锚点链接之间实现平滑的滚动,可是 JS 代码相对来说比較冗长.如今好了.仅仅要已经载入了 JQuery.我们就能够用较为简短的代

jQuery 实现公告无缝滚动

HTML<div id="hotTopic">              <div class="wrap"><ul id="talking">    <li><a href="#">世界经典音乐剧<妈妈咪呀>1</a></li>    <li><a href="#">阿童木</a&

jQuery粘性跟随滚动条滚动的导航栏源代码下载

jQuery粘性跟随滚动条滚动的导航栏源代码下载 作者:网页模板 大小:0.005MB 点击次数:3494 发布时间:2014-03-07 12:55 分享到:0 特效介绍 jQuery粘性跟随滚动条滚动的导航栏源代码下载,不兼容IE6.点击导航栏不同的按钮,滑动到不同的内容.滚动条滚动,导航栏会自始至终保持在浏览器可是区域的最顶端. 使用方法 第一步.在head区域引入下面的css样式: 01 <link href="http://fonts.googleapis.com/css?fam

jQuery之锚点带动画跳转特效

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <meta charset="utf-8"> <head> <title>jQuery之锚点带动画跳转特效</title> <script

【在网页中添加滚动文字】

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> <tit

基于jQuery网页步骤流程进度条代码

基于jQuery网页步骤流程进度条代码里面包含两款不同效果的jQuery步骤进度条特效.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div class="step_context test"></div> 当前步骤:第<input type="text" value="5" id="currentStepVal" />步 <button onclick=&qu

6款强大的 jQuery 网页布局创建及优化插件

本文将为您介绍6款功能强大的jQuery插件,它们能够帮助您方便快捷地创建复杂的网络布局并进行优化. 1.UI.Layout 该插件可以创建任何你想要的UI形式:包括从简单的标题或侧边栏,到一个包含工具栏,菜单,帮助面板,状态栏,子表格等复杂的应用.     2.jQUery Masonry 动态布局jQuery插件,折叠式CSS浮动面板. 3.jLayout 可提供四种网页元素布局算法.     4.jQuery pageSlide 该插件灵感来自于Aza Raskin的UI工作中.他最近发表