JQuery事件处理

JQuery为咱们提供方便的事件注册机制,但有以下优缺点。
1.长处:操作简略,且不必放心事件笼罩等问题
2.毛病:不能解绑事件,且不能实现事件委托
<body>    <div></div>    <script>        $(function() {            // 1. 单个事件注册            $("div").click(function() {                $(this).css("background", "purple");            });            $("div").mouseenter(function() {                $(this).css("background", "skyblue");            });        })    </script></body>

事件处理程序on()绑定事件

  • on():用于事件绑定,是目前最好用的事件绑定办法
  • off()事件解绑
  • trigger()/triggerHandler():事件触发


<!DOCTYPE html><html>    <head>        <meta charset="utf-8">        <title>on()事件处理程序</title>        <script src="jquery-3.5.1.js"></script>        <style>            * {                margin: 0;                padding: 0;            }            .box,.container {                width: 200px;                height: 200px;                background-color: #0000FF;                margin: 200px auto;            }            .curent {                background-color: #008000;            }        </style>    </head>    <body>        <div class="box"></div>                <div class="container"></div>        <script>            // on()办法能够增加多个事件处理程序             $(function(){                 $('.box').on({                     mouseenter:function(){                         $(this).css('background','red')                     },                                              mouseleave:function(){                          $(this).css('background','purple')                     },                     click:function(){                         $(this).css('background','yellow')                     }                 })                      //事件处理程序雷同的状况下                     $('.container').on('mouseenter mouseleave',function(){                         $(this).toggleClass('curent')                      })             })                             </script>    </body></html>

<!DOCTYPE html><html>    <head>        <meta charset="utf-8">        <title>on()事件处理程序</title>        <script src="jquery-3.5.1.js"></script>    </head>    <body>        <ul>            <li>平庸的光荣 十分难看</li>            <li>平庸的光荣 十分难看</li>            <li>平庸的光荣 十分难看</li>            <li>平庸的光荣 十分难看</li>            <li>平庸的光荣 十分难看</li>            <li>平庸的光荣 十分难看</li>        </ul>        <div class="box"></div>                <script>            $(function(){                // on()办法能够实现事件委托                $('ul').on('click','li',function(){                    alert('very good')                })                                // on()能够给动静元素元素实现绑定事件                $('.box').on('click','p',function(){                    alert('咻咻咻')                })                                                var p =$("<p>hello</p>")                $('.box').append(p)            })                    </script>    </body></html>

微博留言

1.点击公布按钮, 动态创建一个小li,放入文本框的内容和删除按钮, 并且增加到ul 中。
2.点击的删除按钮,能够删除以后的微博留言

<!DOCTYPE html><html><head>    <meta charset="utf-8">    <title>微博公布性能</title>    <script src="jquery-3.5.1.js"></script>    <style>        * {            margin: 0;            padding: 0;        }        ul {            list-style: none;        }        .box {            width: 600px;            margin: 100px auto;            border: 1px solid #000;            padding: 20px        }        textarea {            width: 450px;            height: 160px;            outline: none;            resize: none;        }        ul {            list-style: none;            padding-left: 80px;        }        ul li {            line-height: 25px;            border-bottom: 1px solid #CCCCCC;            display: none;        }        input {            float: right;        }        ul li a {            float: right;        }    </style></head><body><div class="box">    <span>微博公布</span>    <textarea></textarea>    <button class="bth">公布</button>    <ul>    </ul></div><script>    $(function () {                $('.bth').on('click', function () {            //点击公布按钮 动态创建一个小li .放入文本框的内容和删除按钮,并且增加到ul外面            let li = $("<li></li>");            li.html($("textarea").val() + "<a href ='javascript:;'>删除</a>");            $('ul').prepend(li);            li.slideDown();            $('textarea').val('')        })                // on能够给动态创建的元素绑定事件        $('ul').on('click', 'a', function () {            $(this).parent().remove()        })    })</script></body></html>

解绑事件

jQuery 为咱们提供 了多种事件解绑办法:die() / undelegate() / off() 等
甚至还有只触发一次的事件绑定办法 one(),在这里咱们重点解说一下 off() ;

<!DOCTYPE html><html lang="en">    <head>        <meta charset="UTF-8">        <title>事件解绑off</title>        <style>            * {                margin: 0;                padding: 0;            }            div {                width: 200px;                height: 200px;                background-color: black;            }            p {                width: 200px;                height: 200px;                background-color: red;            }        </style>        <script src="jquery-3.5.1.js"></script>        <script>            // 入口函数            $(function() {                $('div').on({                    mouseenter: function() {                        $(this).css("background", "yellow")                    },                    mouseleave: function() {                        $(this).css("background", "purple")                    }                })                //解绑div身上的鼠标挪动事件                $('div').off('mouseenter');                //事件委托                $('ul').on('click', 'li', function() {                    alert('事件委托')                })                //解除事件委托                $('ul').off('click', "li");                // 只触发一次事件                $('p').one('click', function() {                    alert("只触发一次事件")                })            })        </script>    </head>    <body>        <div></div>        <ul>            <li>知否</li>            <li>知否</li>            <li>知否</li>            <li>知否</li>            <li>知否</li>            <li>知否</li>        </ul>        <p></p>    </body></html>

事件处理trigger()主动触发事件

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>主动触发事件</title>    <style>        div {            width: 200px;            height: 200px;            background-color: red;        }    </style></head>    <script src="jquery-3.5.1.js"></script>    <script>    $(function () {        $('div').on('click', function () {            alert("how are you")        })        $('input').on('focus',function(){            $(this).val('how are you')        })        // 主动触发事件的三种办法        //第一种办法        $('div').click()        //第二种办法        $('div').trigger('click');        //第三种办法  不会触发元素的默认行为        $('input').triggerHandler('focus')    })    </script><body>    <div></div>    <input type="text"></body></html>

JQuery事件对象

jQuery 对DOM中的事件对象 event 进行了封装,兼容性更好,获取更不便,应用变动不大。
事件被触发,就会有事件对象的产生

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>JQuery事件对象</title>    <style>        * {            margin: 0;            padding: 0;        }        div {            width: 500px;            height: 500px;            background-color: red;            margin: 200px auto;        }    </style></head><script src="jquery-3.5.1.js"></script><script>    $(function(){        $(document).on('click',function(e){            console.log(e)            alert('document')        })        $('div').on('click',function(e){            alert('div');            //勾销事件冒泡            e.stopPropagation()        })    })</script><body>    <div></div></body></html>

JQuery拷贝对象

JQuery为咱们提供两套的疾速获取和设置元素尺寸和地位的API,不便易用

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>JQuery拷贝对象</title></head><script src="jquery-3.5.1.js"></script><script>    $(function () {        //浅拷贝  会把原来对象外面的简单类型地址拷贝给指标对象        var targetObj = {            msg:{                work:"it"            }        };        var obj = {            name:"尧子陌",            sex:"男",            age:'24',            msg :{                id:1,            }        };        $.extend(targetObj,obj);        console.log(targetObj)        // 深拷贝 会把原来对象外面的数据齐全复制一份给指标对象,如果外面有不抵触的属性,则会合并在一起        var targetObj2 = {            age:'18',            msg:{                id:2            },        };        var obj2 = {            name:"尧子陌",            sex:"男",            age:'24',            msg:{                work:"it"            },        };        $.extend(true,targetObj2,obj2);        console.log(targetObj2)    })</script><body></body></html>

JQuery多库共存

随着jQuery的风行,采纳jQuery和$符为命名空间的js库越来越多便产生冲库,于是呈现JQuery多库共存。

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>JQuery多库共存</title></head><script src="jquery-3.5.1.js"></script><script>        $(function () {            //让JQuery放弃对$的控制权            var zero = jQuery.noConflict();            console.log(zero("span"))        } )</script><body>    <span></span></body></html>

JQuery插件

jQuery 性能比拟无限,想要更简单的特效成果,能够借助于 jQuery 插件实现。插件也是依赖于jQuery来实现的,所以必须要先引入

jQuery文件,因而也称为 jQuery 插件。

JQuery插件的罕用网站

jQuery 插件罕用的网站:

  1. jQuery 插件库 http://www.jq22.com/
  2. jQuery 之家 http://www.htmleaf.com/

jQuery 插件应用步骤:

  • 引入相干文件。(jQuery 文件 和 插件文件)
  • 复制相干html、css、js (调用插件)。

瀑布流插件

<!doctype html><html lang="en">    <head>        <meta charset="UTF-8">        <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">        <meta http-equiv="X-UA-Compatible" content="ie=edge">        <title>JQuery瀑布流</title>        <!-- 引进相干插件和文件 -->        <link rel="stylesheet" href="./css/normalize.css">        <link rel="stylesheet" href="./css/default.css">        <script src="js/jquery-1.11.0.min.js"></script>        <script src="js/pinterest_grid.js"></script>        <style type="text/css">            #gallery-wrapper {                position: relative;                max-width: 75%;                width: 75%;                margin: 50px auto;            }            img.thumb {                width: 100%;                max-width: 100%;                height: auto;            }            .white-panel {                position: absolute;                background: white;                border-radius: 5px;                box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.3);                padding: 10px;            }            .white-panel h1 {                font-size: 1em;            }            .white-panel h1 a {                color: #A92733;            }            .white-panel:hover {                box-shadow: 1px 1px 10px rgba(0, 0, 0, 0.5);                margin-top: -5px;                -webkit-transition: all 0.3s ease-in-out;                -moz-transition: all 0.3s ease-in-out;                -o-transition: all 0.3s ease-in-out;                transition: all 0.3s ease-in-out;            }        </style>        <!--[if IE]>    <script src="http://libs.useso.com/js/html5shiv/3.7/html5shiv.min.js"></script>    <![endif]-->    </head>    <body>        <section class="htmleaf-container">            <header class="htmleaf-header">                <h1>兼容IE8的响应式网格瀑布流布局jQuery插件 <span>A Simple jQuery Plugin To Create Pinterest Style Grid Layout</span></h1>                <div class="htmleaf-links">                    <a class="htmleaf-icon icon-htmleaf-home-outline" href="http://www.htmleaf.com/" title="jQuery之家" target="_blank"><span>                            jQuery之家</span></a>                    <a class="htmleaf-icon icon-htmleaf-arrow-forward-outline" href="http://www.htmleaf.com/jQuery/pubuliuchajian/201601093003.html"                     title="返回下载页" target="_blank"><span> 返回下载页</span></a>                </div>            </header>        </section>        <section id="gallery-wrapper">            <article class="white-panel">                <img src="img/focus1.jpg" class="thumb">                <h1><a href="#">Title 1</a></h1>                <p>Description 1</p>            </article>            <article class="white-panel">                <img src="img/focus2.jpg" class="thumb">                <h1><a href="#">Title 1</a></h1>                <p>Description 1</p>            </article>            <article class="white-panel">                <img src="img/focus3.jpg" class="thumb">                <h1><a href="#">Title 1</a></h1>                <p>Description 1</p>            </article>            <article class="white-panel">                <img src="img/focus4.jpg" class="thumb">                <h1><a href="#">Title 1</a></h1>                <p>Description 1</p>            </article>            <article class="white-panel">                <img src="img/focus1.jpg" class="thumb">                <h1><a href="#">Title 1</a></h1>                <p>Description 1</p>            </article>            <article class="white-panel">                <img src="img/focus2.jpg" class="thumb">                <h1><a href="#">Title 1</a></h1>                <p>Description 1</p>            </article>            <article class="white-panel">                <img src="img/focus3.jpg" class="thumb">                <h1><a href="#">Title 1</a></h1>                <p>Description 1</p>            </article>            <article class="white-panel">                <img src="img/focus4.jpg" class="thumb">                <h1><a href="#">Title 1</a></h1>                <p>Description 1</p>            </article>            <article class="white-panel">                <img src="img/focus1.jpg" class="thumb">                <h1><a href="#">Title 1</a></h1>                <p>Description 1</p>            </article>            <article class="white-panel">                <img src="img/focus2.jpg" class="thumb">                <h1><a href="#">Title 1</a></h1>                <p>Description 1</p>            </article>            <article class="white-panel">                <img src="img/focus3.jpg" class="thumb">                <h1><a href="#">Title 1</a></h1>                <p>Description 1</p>            </article>            <article class="white-panel">                <img src="img/focus4.jpg" class="thumb">                <h1><a href="#">Title 1</a></h1>                <p>Description 1</p>            </article>            <article class="white-panel">                <img src="img/focus1.jpg" class="thumb">                <h1><a href="#">Title 1</a></h1>                <p>Description 1</p>            </article>            <article class="white-panel">                <img src="img/focus2.jpg" class="thumb">                <h1><a href="#">Title 1</a></h1>                <p>Description 1</p>            </article>            <article class="white-panel">                <img src="img/focus3.jpg" class="thumb">                <h1><a href="#">Title 1</a></h1>                <p>Description 1</p>            </article>            <article class="white-panel">                <img src="img/focus4.jpg" class="thumb">                <h1><a href="#">Title 1</a></h1>                <p>Description 1</p>            </article>        </section>        <script type="text/javascript">            $(function() {                $("#gallery-wrapper").pinterest_grid({                    no_columns: 4,                    padding_x: 10,                    padding_y: 10,                    margin_bottom: 50,                    single_column_breakpoint: 700                });            });        </script>    </body></html>

懒加载插件

当页面滑动到有图片的地位,图片才开始加载,大大的进步页面的加载速度及用户体验
<!DOCTYPE html><html lang="en">    <head>        <meta charset="UTF-8">        <title>jQuery图片懒加载</title>        <style>            img {                display: block;                margin: 0 auto;                margin-top: 100px;            }        </style>    </head>    <body>        <img data-lazy-src="./img/focus1.jpg" alt="">        <img data-lazy-src="./img/focus2.jpg" alt="">        <img data-lazy-src="./img/focus3.jpg" alt="">        <img data-lazy-src="./img/focus4.jpg" alt="">        <!--引进相干插件 -->        <script src="./js/jquery-3.5.1.js"></script>        <script src="js/EasyLazyload.min.js"></script>        <script>            lazyLoadInit({                offsetBottom: 0,                offsetTopm: 0,                showTime: 1100,                onLoadBackEnd: function(i, e) {                    console.log("onLoadBackEnd:" + i);                },                onLoadBackStart: function(i, e) {                    console.log("onLoadBackStart:" + i);                }            });        </script>    </body></html>

全屏滚动插件(很重要)

全屏滚动插件比拟大,所以,个别大型插件都会有帮忙文档:http://www.dowebok.com/demo/2014/77/

<!DOCTYPE html><html lang="en">    <head>        <meta charset="UTF-8">        <title>全屏滚动</title>        <style>            .section1 {                background: url('./img/focus1.jpg') 50%;            }            .section2 {                background: url(./img/focus2.jpg) 50%;            }            .section3 {                background: url(./img/focus3.jpg) 50%;            }            .section4 {                background: url(./img/focus4.jpg) 50%;            }            #menu {                margin: 0;                padding: 0;                position: fixed;                left: 10px;                top: 10px;                list-style-type: none;                z-index: 70;            }            #menu li {                float: left;                margin: 0 10px 0 0;                font-size: 14px;            }            #menu a {                float: left;                padding: 10px 20px;                background-color: #fff;                color: #333;                text-decoration: none;            }            #menu .active a {                color: #fff;                background-color: #333;            }            #fp-nav ul li a.active span,            #fp-nav ul li:hover a.active span,            .fp-slidesNav ul li a.active span,            .fp-slidesNav ul li:hover a.active span {                background-color: whitesmoke;            }        </style>    </head>    <!--引进相干插件-->    <link rel="stylesheet" href="./css/fullpage.min.css">    <script src="./js/jquery-3.5.1.js"></script>    <script src="js/fullpage.min.js"></script>    <body>        <div id="dowebok">            <div class="section section1">            </div>            <div class="section section2">            </div>            <div class="section section3">            </div>            <div class="section section4">            </div>            <ul id="menu">                <li data-menuanchor="page1" class="active"><a href="#page1">第一屏</a></li>                <li data-menuanchor="page2"><a href="#page2">第二屏</a></li>                <li data-menuanchor="page3"><a href="#page3">第三屏</a></li>                <li data-menuanchor="page4"><a href="#page4">第四屏</a></li>            </ul>        </div>    </body>    <script>        $(function() {            $('#dowebok').fullpage({                'navigation': true,                anchors: ['page1', 'page2', 'page3', 'page4'],                menu: '#menu'            });            $('#dowebok').fullpage({                sectionsColor: ['#1bbc9b', '#4BBFC3', '#7BAABE', '#f90'],                continuousVertical: true            });            setInterval(function() {                $.fn.fullpage.moveSectionDown();            }, 3000);        });    </script></html>

bootstrap插件

Bootstrap是 Twitter 公司设计的基于HTML、CSS、JavaScript开发的简洁、直观、强悍的前端开发框架,他依附jQuery实现,且反对响应式

组件是有数可复用的性能

<!DOCTYPE html><html lang="en">    <head>        <meta charset="UTF-8">        <title>JQuery组件</title>    </head>    <!--引进相干插件-->    <link rel="stylesheet" href="./css/bootstrap.min.css">    <!--引进JQuery文件-->    <script src="jquery-3.5.1.js"></script>    <!--引进bootstrap相干的js文件-->    <script src="js/bootstrap.min.js"></script>    <body>        <div class="container-fluid">            <nav class="navbar navbar-default">                <!-- Brand and toggle get grouped for better mobile display -->                <div class="navbar-header">                    <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"                     aria-expanded="false">                        <span class="sr-only">Toggle navigation</span>                        <span class="icon-bar"></span>                        <span class="icon-bar"></span>                        <span class="icon-bar"></span>                    </button>                    <a class="navbar-brand" href="#">主页</a>                </div>                <!-- Collect the nav links, forms, and other content for toggling -->                <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">                    <ul class="nav navbar-nav">                        <li class="active"><a href="#">导航 <span class="sr-only">(current)</span></a></li>                        <li><a href="#">首页</a></li>                        <li class="dropdown">                            <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">选项卡                                <span class="caret"></span></a>                            <ul class="dropdown-menu">                                <li><a href="#">Action</a></li>                                <li><a href="#">Another action</a></li>                                <li><a href="#">Something else here</a></li>                                <li role="separator" class="divider"></li>                                <li><a href="#">Separated link</a></li>                                <li role="separator" class="divider"></li>                                <li><a href="#">One more separated link</a></li>                            </ul>                        </li>                    </ul>                    <form class="navbar-form navbar-left">                        <div class="form-group">                            <input type="text" class="form-control" placeholder="Search">                        </div>                        <button type="submit" class="btn btn-default">提交</button>                    </form>                    <ul class="nav navbar-nav navbar-right">                        <li><a href="#">首页</a></li>                        <li class="dropdown">                            <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">选项卡<span                                 class="caret"></span></a>                            <ul class="dropdown-menu">                                <li><a href="#">Action</a></li>                                <li><a href="#">Another action</a></li>                                <li><a href="#">Something else here</a></li>                                <li role="separator" class="divider"></li>                                <li><a href="#">Separated link</a></li>                            </ul>                        </li>                    </ul>                </div><!-- /.navbar-collapse -->            </nav>        </div>    </body></html>

bootstrap插件

bootstrap中的js插件其实也是组件的一部分,只不过是须要js调用性能的组件

<!DOCTYPE html><html lang="en">    <head>        <meta charset="UTF-8">        <title>Jquery中的javascript插件</title>        <style>            .carousel-control span:nth-of-type(1) {             position: absolute;             top: 50%;             font-weight: 700;             font-size: 50px;        }        img {            display: block;        }        .focus {            width: 1920px;            height: 1080px;            overflow: hidden;        }    </style>    </head>    <!--引进相干插件-->    <link rel="stylesheet" href="./css/bootstrap.min.css">    <script src="js/jquery-3.5.1.js"></script>    <script src="js/bootstrap.js"></script>    <body>        <div class="container-fluid">            <!--选项卡-->            <div>                <!-- Nav tabs -->                <ul class="nav nav-tabs" role="tablist">                    <li role="presentation" class="active"><a href="#home" aria-controls="home" role="tab" data-toggle="tab">Home</a></li>                    <li role="presentation"><a href="#profile" aria-controls="profile" role="tab" data-toggle="tab">Profile</a></li>                    <li role="presentation"><a href="#messages" aria-controls="messages" role="tab" data-toggle="tab">Messages</a></li>                    <li role="presentation"><a href="#settings" aria-controls="settings" role="tab" data-toggle="tab">Settings</a></li>                </ul>                <!-- Tab panes -->                <div class="tab-content">                    <div role="tabpanel" class="tab-pane fade in active" id="home">...</div>                    <div role="tabpanel" class="tab-pane fade" id="profile">...</div>                    <div role="tabpanel" class="tab-pane fade" id="messages">...</div>                    <div role="tabpanel" class="tab-pane fade" id="settings">...</div>                </div>            </div>            <div class="focus">                <!--轮播图-->                <div id="carousel-example-generic" class="carousel slide" data-ride="carousel">                    <!-- Indicators -->                    <ol class="carousel-indicators">                        <li data-target="#carousel-example-generic" data-slide-to="0" class="active"></li>                        <li data-target="#carousel-example-generic" data-slide-to="1"></li>                        <li data-target="#carousel-example-generic" data-slide-to="2"></li>                        <li data-target="#carousel-example-generic" data-slide-to="3"></li>                    </ol>                    <!-- Wrapper for slides -->                    <div class="carousel-inner" role="listbox">                        <div class="item active">                            <img src="./img/focus1.jpg" alt="...">                            <div class="carousel-caption">                                ...                            </div>                        </div>                        <div class="item">                            <img src="./img/focus2.jpg" alt="...">                            <div class="carousel-caption">                                ...                            </div>                        </div>                        <div class="item">                            <img src="./img/focus3.jpg" alt="...">                            <div class="carousel-caption">                                ...                            </div>                        </div>                        <div class="item">                            <img src="./img/focus3.jpg" alt="...">                            <div class="carousel-caption">                                ...                            </div>                        </div>                        ...                    </div>                    <!-- Controls -->                    <a class="left carousel-control" href="#carousel-example-generic" role="button" data-slide="prev">                        <span>                            <</span> <span class="sr-only">Previous                        </span>                    </a>                    <a class="right carousel-control" href="#carousel-example-generic" role="button" data-slide="next">                        <span>></span>                        <span class="sr-only">Next</span>                    </a>                </div>            </div>            <!-- 模态框 -->            <button type="button" class="btn btn-primary btn-lg" id="bth">                模态框            </button>            <!-- Modal -->            <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">                <div class="modal-dialog" role="document">                    <div class="modal-content">                        <div class="modal-header">                            <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>                            <h4 class="modal-title" id="myModalLabel">Modal title</h4>                        </div>                        <div class="modal-body">                            china I love you                        </div>                        <div class="modal-footer">                            <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>                            <button type="button" class="btn btn-primary">Save changes</button>                        </div>                    </div>                </div>            </div>        </div>    </body>    <script>        $(function() {            $('#bth').on('click', function() {                console.log('hello word')                $('#myModal').modal()            })            $('.carousel').carousel({                interval: 2000            })        })    </script></html>

JQuery取得元素的尺寸

<!DOCTYPE html><html lang="en">    <head>        <meta charset="UTF-8">        <title>JQuery尺寸</title>        <style>            * {                margin: 0;                padding: 0;            }            .box {                width: 200px;                height: 200px;                margin: 200px auto;                padding: 20px;                border: 10px solid red;                background-color: blue;            }        </style>        <script src="jquery-3.5.1.js"></script>    </head>    <body>        <div class="box"></div>    </body>    <script>        $(function() {            //获取匹配元素的宽度            console.log($('.box').width());            console.log($('.box').innerWidth());            console.log($('.box').outerWidth());            console.log($('.box').outerWidth(true))            //获取匹配元素的高度            console.log($('.box').height());            console.log($('.box').innerHeight());            console.log($('.box').outerHeight());            console.log($('.box').outerHeight(true))        })    </script></html>

JQuery地位

offset():取得设置间隔文档的地位
<!DOCTYPE html><html lang="en">    <head>        <meta charset="UTF-8">        <title>Jquery地位之offset()</title>        <style>            * {                margin: 0;                padding: 0;            }            .father {                width: 600px;                height: 600px;                background: red;                margin: 200px auto;            }            .son {                width: 200px;                height: 200px;                background-color: blue;            }        </style>    </head>    <script src="jquery-3.5.1.js"></script>    <body>        <div class="father">            <div class="son"></div>        </div>    </body>    <script>        $(function() {            //offset()取得设置间隔文档的地位            console.log($('.son').offset());            console.log($('.son').offset().top);            console.log($('.son').offset().left);            console.log($('.son').offset({                top: 200,                left: 680            }))        })    </script></html>

position():取得间隔定位父元素的间隔

留神:不能设置,只能读取

<!DOCTYPE html><html lang="en">    <head>        <meta charset="UTF-8">        <title>Jquery地位之position()</title>        <style>            * {                margin: 0;                padding: 0;            }            .father {                position: relative;                width: 600px;                height: 600px;                background: red;                margin: 200px auto;            }            .son {                position: absolute;                top: 20px;                left: 20px;                width: 200px;                height: 200px;                background-color: blue;            }        </style>    </head>    <script src="jquery-3.5.1.js"></script>    <body>        <div class="father">            <div class="son"></div>        </div>    </body>    <script>        $(function() {            //offset()取得设置间隔定位父元素之间的间隔            console.log($('.son').position());            console.log($('.son').position().top);            console.log($('.son').position().left);        })    </script></html>

scrolLeft()及scrollTop()
(1)scrollLeft() : 设置或返回被选元素的程度滚动条地位;
(2)scrollTop() : 设置或返回垂直滚动条地位;
<!DOCTYPE html><html lang="en">    <head>        <meta charset="UTF-8">        <title>Jquery地位之scrollTop()及scrollLeft()</title>        <style>            * {                margin: 0;                padding: 0;            }            .container {                width: 800px;                height: 800px;                background-color: blue;                margin: 200px auto;            }            .goBack {                display: none;                position: fixed;                bottom: 50px;                right: 0;                width: 100px;                height: 50px;                color: whitesmoke;                font-weight: 700;                text-align: center;                line-height: 50px;                background-color: purple;            }        </style>    </head>    <script src="jquery-3.5.1.js"></script>    <body>        <div class="goBack">返回顶部</div>        <div class="container"></div>    </body>    <script>        $(function() {            let conTop = $('.container').offset().top;            $(window).scroll(function() {                if ($(document).scrollTop() >= conTop) {                    $('.goBack').fadeIn()                } else {                    $('.goBack').fadeOut()                }            })            //返回顶部            $('.goBack').click(function() {                $('body,html').stop().animate({                    scrollTop: 0,                })            })        })    </script></html>

电梯导航案例

1、当页面滚动绝对应的模块,就让电梯导航显示进去
2、当点击电梯导航页面就能够滚动到相应页面
3、电梯导航模块与内容区模块意义对应
4、当咱们点击电梯导航某个小模块,就能够拿到以后小模块的索引号
5、就能够把annimate要挪动的间隔求进去;以后索引号内容区模块它的offset().top
6、而后执行动画即可

<!DOCTYPE html><html lang="en">    <head>        <meta charset="UTF-8">        <title>电梯导航</title>        <style>            * {                margin: 0;                padding: 0;            }            body {                height: 6000px;            }            .bg_c {                background-color: red;            }            .box {                width: 1200px;                height: 600px;                margin: 200px auto;                background-color: black;            }            .header,            .nav,            .section,            .footer {                width: 1200px;                height: 500px;                text-align: center;                line-height: 500px !important;                font: normal 700 20px '楷体';                color: white;                margin: 50px auto;            }            .header {                background-color: pink;            }            .nav {                background-color: red;            }            .section {                background-color: blue;            }            .footer {                background-color: purple;            }            .aside {                display: none;                position: fixed;                top: 200px;                left: 50%;                width: 200px;                background-color: purple;                margin-left: -800px;            }            .aside ul {                list-style: none;            }            .aside ul li {                cursor: pointer;                width: 100%;                color: white;                text-align: center;                padding: 5px 0px;                border-bottom: 1px dashed white;            }            .goBack {                cursor: pointer;                width: 100%;                height: 30px;                text-align: center;                line-height: 30px;            }        </style>        <script src="jquery-3.5.1.js"></script>    </head>    <body>        <div class="box"></div>        <div class="floor">            <div class="header item">header</div>            <div class="nav item">nav</div>            <div class="section item">section</div>            <div class="footer item">footer</div>        </div>        <div class="aside">            <ul>                <li class="bg_c">header</li>                <li>nav</li>                <li>section</li>                <li>purple</li>            </ul>            <div class="goBack">顶部</div>        </div>    </body>    <script>        $(function() {            let boxTop = $('.box').offset().top            togleClass()            function togleClass() {                $(window).scroll(function() {                    if ($(document).scrollTop() >= boxTop) {                        $('.aside').fadeIn()                    } else {                        $(".aside").fadeOut()                    }                })            }            $('.aside li').click(function() {                console.log($(this).index())                $(this).addClass('bg_c').siblings('li').removeClass('bg_c')                // 当咱们每次点击小li的时候,页面会去往绝对应的地位                var cuRent = $('.floor .item').eq($(this).index()).offset().top - 200                //    须要做动画                $('body,html').stop().animate({                    scrollTop: cuRent,                })            })            $('.goBack').one('click', function() {                $('html,body').stop().animate({                    scrollTop: 0                })            })        })    </script></html>