jQuery的介绍/jQuery的选择器/jQuery动画效果

一.jQuery的介绍

1.为什么要使用jQuery

在用JS写代码时,会遇到一些问题:

  window.onload 事件有些事件覆盖的问题,因此只能写一个事件

  代码容错性差

  浏览器兼容性问题

  书写很繁琐,代码量多

  代码很乱,各个页面到处都是

  动画效果很难实现

jQuery的出现,解决了这一问题

2.什么是jQuery

jQuery是JS的一个库,封装了我们开发过程中常用的一些功能,方便我们调用,提高了开发效率

JS库是把我们常用的功能放到一个单独的文件中,我们用的时候,直接引用到页面里即可

关于jQuery的相关资料:

  官网:http://jquery.com/

  官方API文档:http://api.jquery.com/

  汉化API文档:http://www.css88.com/jqapi-1.9/

3.学习jQuery,主要是学什么

初期,主要学习如何使用jQuery操作DOM,其实就是学习jQuery封装好的哪些功能API

这些API的共同特点是: 几乎全都是方法,在使用jQuery的API时,都是方法调用,也就是说要加小括号(), 小括号里面是相应的参数,参数不同,功能不同.

4.jQuery的第一个代码

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>初识jQuery</title>
        <style type="text/css">
            #box{
                width: 200px;
                height: 200px;
                background-color: #6495ED;
            }
        </style>
    </head>
    <body>
        <div id="box" class="wrap">娃哈哈</div>
        <!-- from xxx import ooo -->
        <!-- 导入模块 在前端中一个JS文件就是一个模块, 一个CSS也可以是一个模块, 一个html/pong/mp3 -->
        <script type="text/javascript" src="jQuery/jquery.js"></script>
        
        <script>
            
            //jQuery内部的api 99% 都是方法
            console.log(jQuery);
            
            console.log($("#box"));
            
            //三步走:
            //1.获取事件源, 2.事件, 3.事件驱动
            
            $("#box").click(function(){
                
                //千万不要调用JS的属性和方法, JS调用JS的属性和方法, jquery对象是调用jquery的对象和方法
                
//                console.log($(/.wrap).style);
                
//                $(".wrap").css("color","aquamarine");

                $(".wrap").css({
                    "background-color":"yellow",
                    //"backgroundColor":"yellow",
                    width:"300px"
                })
            })
        </script>
    </body>
</html>
第一个jQuery代码
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>jQuery的入口函数</title>
    </head>
    <body>
        <div  id="box"></div>
        
        <script type="text/javascript" src="jQuery/jquery.js"></script>
        
        <script>
            
            //入口函数:不用等待图片资源加载完成之后就可以调用,它没有事件覆盖现象
            
//            $(document).ready(function(){
//                //回调函数
//                console.log($("box"));
//            });
//            
//            $(document).ready(function(){
//                //回调函数
//                console.log($("#box"));
//            });

            //容易理解的入口函数:
            $(function(){
                console.log($("#box"));
            });
            
            //简洁的入口函数:
            $(function(){
                
            })
            
        </script>
    </body>
</html>
jQuery的入口函数

用原生JS来实现下面的代码效果 :

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            div{
                width: 100px;
                height: 100px;
                background-color: aquamarine;
                margin-top: 20px;
                display: none;
            }
        </style>
    </head>
    <body>
        
        <button>操作</button>
        <div></div>
        <div></div>
        <div></div>        
        
        <script type="text/javascript">
            window.onload = function(){
                var oBtn = document.getElementsByTagName("button")[0];
                var divArr = document.getElementsByTagName('div');
                oBtn.onclick = function(){
                    for(var i = 0; i<divArr.length; i++){
                        divArr[i].style.display = "block";
                        divArr[i].innerHTML = "娃哈哈";
                    }
                }
            }
        </script>
    </body>
</html>
View Code

如果用jQuery来写,保持其他的代码不变,<script>部分的代码修改为:(需要提前引入)

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            div{
                width: 300px;
                height: 300px;
                background-color: palegoldenrod;
                margin-top: 20px;
                display: none;
            }
        </style>
    </head>
    <body>
        
        <button>操作</button>
        <div></div>
        <div></div>
        <div></div>
        
        <script type="text/javascript" src="jQuery/jquery.js"></script>
        <script type="text/javascript">
            
            $(document).ready(function(){
                //获取DOM元素
                var oBtn = $("button");        //根据标签名获取元素
                var oDiv = $("div");    //根据标签名获取元素
                oBtn.click(function(){
                    oDiv.show(1000);    //显示盒子
                    oDiv.html("娃哈哈");    //设置内容
                });    //事件是通过方法绑定的
            })
            
        </script>
        
    </body>
</html>
使用jQuery来写

5.jQuery的两大特点

(1).链式编程: 比如 .show() 和 .html() 可以连写成 .show().html()

(2).隐式迭代: 隐式对应的是显示, 隐式迭代的意思是: 在方法的内部进行循环遍历,而不用我们自己再进行循环,简化我们的操作,方便我们调用

6.jQuery的使用

(1).使用jQuery的基本步骤

  引包

  入口函数

  功能实现代码(事件处理)

重要:导包的代码一定要放在JS代码的最上面

(2).jQuery的版本

jQuery有两个大版本

  1.x版本: 最新版为v1.11.3

  2.x版本: 最新版为v2.1.4(不在支持IE6,7,8)

  3.x版本

下载jQuery包之后里面会有两个文件,一个是jQuery-3.3.1.js, 一个是jQuery-3.3.1.min.js

它们的区别是:

  第一个是未压缩版,第二个是压缩版

  平时开发过程中,可以使用任意一个版本; 但是项目上线的时候,推荐使用压缩版

6.jQuery的入口函数和$符号

(1).入口函数(重要)

原生JS的入口函数指的是:window.onload = function(){}; 如下:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>jQuery的入口函数</title>
    </head>
    <body>
        <div  id="box"></div>
        
        <script type="text/javascript" src="jQuery/jquery.js"></script>
        
        <script>
            
            //入口函数:不用等待图片资源加载完成之后就可以调用,它没有事件覆盖现象
            
//            $(document).ready(function(){
//                //回调函数
//                console.log($("box"));
//            });
//            
//            $(document).ready(function(){
//                //回调函数
//                console.log($("#box"));
//            });

            //容易理解的入口函数:
            $(function(){
                console.log($("#box"));
            });
            
            //简洁的入口函数:
            $(function(){
                
            })
            
        </script>
    </body>
</html>
jQuery的入口函数
//原生JS的入口函数,页面上所有的内容加载完毕,才执行
//不仅要等文本加载完毕,而且还要等图片也要加载完毕,才执行函数
window.onload = function(){
   alert(1);
}

而jQuery的入口函数,有以下几种写法:

写法一:

//文档加载完毕,图片不加载的时候,就可以执行这个函数
$(document).ready(function(){
    alert(1);
})

 写法二:(写法一的简洁版)

//文档加载完毕,图片不加载的后,就可以执行这个函数
$(function(){
      alert(1);
})

写法三:

//文档加载完毕,图片也加载完毕的时候,就执行这个函数
$(window).ready(function(){
      alert(1)
})

jQuery入口函数与JS入口函数的区别:

 区别一:书写个数不同

    JS的入口函数只能出现一次,出现多次会存在事件覆盖问题

    jQuery的入口函数,可以出现任意多次,并不存在事件覆盖问题

 区别二:执行时机不同:

    JS的入口函数是在所有的文件资源加载完毕后,才执行,这些文件资源包括: 页面文档,外部的JS文件,外部的CSS文件,,图片等

    jQuery的入口函数,是在文档加载完毕后,就执行,文档加载完成指的是: DOM树加载完成后, 就可以操作DOM了, 不用等到所有的外部资源都加载完成

文档加载的顺序:从上往下,边解析边执行

(2).jQuery的$符号

jQuery使用$符号原因: 书写简洁, 相对于其他字符与众不同,容易被记住

jQuery占用了我们两个变量: $和jQuery,当我们在代码中打印它们俩的时候

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <script type="text/javascript" src="jQuery/jquery.js"></script>
        <script type="text/javascript">
            console.log($);
            console.log(jQuery);
            console.log($===jQuery);
        </script>
    </body>
</html>

从打印结果可以看出,$代表的就是jQuery

那么怎么理解jQuery里面的$符号呐>>>:

$实际上表示的是一个函数名,如下:

$();    //调用上面我们自定义的函数$

$(document).ready(function(){});    //调用入口函数

$(function(){});    //调用入口函数

$("#btnShow")    //获取id属性为btnShow的元素

$("div")    //获取所有的div标签元素

如上方所示,jQuery 里面的 $ 函数,根据传入参数的不同,进行不同的调用,实现不同的功能。返回的是jQuery对象。

jQuery这个js库,除了$ 之外,还提供了另外一个函数:jQuery。jQuery函数跟 $ 函数的关系:jQuery === $。 

7.JS中的DOM对象和jQuery对象比较(重点,难点)

(1).两者的区别

通过jQuery获取的元素是一个数组,数组中包含着原生JS中的DOM对象,

针对下面这样的一个div结构:

<div></div>
<div id="app"></div>
<div class="box"></div>
<div class="box"><div>
<div></div>

通过原生JS获取这些元素节点的方式是:

var myBox = document.getElementById("app");    //通过id获取单个元素
var boxArr = document.getElementByClassName("box");    //通过class获取的是伪数组
var divArr = document.getElementByTagName("div")    //通过标签获取的是伪数组

通过jQuery获取这些元素节点的方式是: (获取的都是数值)

//获取的是数组,里面包含着原生JS中的DOM对象
console.log($("#app"));
console.log($(".box"));
console.log($("div"));

设置当前4个div的样式:

$("div").css({
        "width": "200px";
        "height": "200px";
        "background-color": "red";
        "margin-top": "20px";
})

由于jQuery自带了CSS()方法, 我们还可以直接在代码中给div设置CSS属性,

总结: jQuery就是把DOM对象重新包装了一下, 让其具有了jQuery方法

(2).两者的互相转换

①.DOM对象转为jQuery对象:

$(JS对象)

②.jQuery对象转为DOM对象

jQuery对象[index];    //方式一 (推荐)

jQuery对象.get(index);    //方式二

③.jQuery对象转换成了DOM对象之后,可以直接调用DOM提供的一些功能,如:

$("div")[1].style.backgroundColor = "blue";
$("div")[3].style.backgroundColor = "yellow";

总结:如果想要用哪种方式设置属性或方法,必须转换成该类型

8.示例:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>隔行换色</title>
    </head>
    <body>
        <div>娃哈哈</div>
        <div>娃哈哈</div>
        <div>娃哈哈</div>
        <div>娃哈哈</div>
        
        <script type="text/javascript" src="jQuery/jquery.js"></script>
        
        <script type="text/javascript">
            
            //入口函数
            jQuery(function(){
                var jqdiv = $("div")
                for (var i = 0; i < jqdiv.length; i++) {
                    if(i % 2 === 0){
                        //jquery对象,转换成了JS对象
                        jqdiv[i].style.backgroundColor = "pink";
                    }else{
                        jqdiv[i].style.backgroundColor = "yellow";
                    }
                }
            });
            
        </script>
        
    </body>
</html>
隔行换色

二.jQuery的选择器

1.我们以前在CSS中学习的选择器有:

现在来学习一下jQuery的选择器

jQuery选择器是jQuery强大的体现,它提供了一组方法,让我们更加方便的获取到页面中的元素

2.jQuery的基本选择器

代码如下:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>基本选择器</title>
    </head>
    <body>
        
        <div></div>
        <div id="box"></div>
        <div class="box"></div>
        <div class="box"></div>
        <div></div>
        
        <script type="text/javascript" src="JS/jquery.js"></script>
        
        <script type="text/javascript">
            
            //$入口函数
            $(function(){
                //三种方式获取jQuery对象
                var jQuery1 = $("#box");
                var jQuery2 = $(".box");
                var jQuery3 = $("div");
                
                //操作标签选择器
                jQuery3.css("width","100");
                jQuery3.css("height",100);
                jQuery3.css("background-color","orangered");
                jQuery3.css("margin-top",10);
                
                //操作类选择器(隐式迭代,不用一个一个设置)
                jQuery2.css("background-color","burlywood");
                jQuery2.text("娃哈哈")
                
                //操作id选择器
                jQuery1.css("background-color",'aquamarine');
            })
            
        </script>
        
    </body>
</html>
基本选择器

3.层级选择器

代码如下:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>层级选择器</title>
    </head>
    <body>
        
        <ul>
            <li>111</li>
            <li>222</li>
            <li>333</li>
            <ol>
                <li>aaa</li>
                <li>bbb</li>
                <li>ccc</li>
            </ol>
        </ul>
        
        <script type="text/javascript" src="JS/jquery.js"></script>
        
        <script type="text/javascript">
            
            $(function(){
                //获取ul中的li设置为粉色
                //后代: 儿孙重孙曾孙玄孙...
                
                var jqLi = $("ul li");
                jqLi.css("margin",5);
                jqLi.css("background","pink");
                
                //子代: 亲儿子
                var jqOtherLi = $("ul>li");
                jqOtherLi.css("background", "aquamarine");
            });
            
        </script>
        
    </body>
</html>
层级选择器

4.基本过滤选择器

代码如下:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>基本过滤选择器</title>
    </head>
    <body>
        
        <ul>
            <li>娃哈哈</li>
            <li>爽歪歪</li>
            <li>乳娃娃</li>
            <li>优酸乳</li>
        </ul>
        
        <script type="text/javascript" src="JS/jquery.js"></script>
        
        <script type="text/javascript">
                $(function(){
                    
                    //获取第一个: first; 获取最后一个: last
                    
                    //奇数
                    $("li:odd").css("color","red");
                    
                    //偶数
                    $("li:even").css("color","green");
                    
                    //选中索引值为1的元素
                    $("li:eq(1)").css("font-size", "30px");
                    
                    //大于索引值1
                    $("li:gt(1)").css("font-size", "50px");
                    
                    //小于索引值1
                    $("li:lt(1)").css("font-size","12px")
                })
        </script>
        
    </body>
</html>
基本过滤选择器

5.属性选择器

代码如下:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>属性选择器</title>
    </head>
    <body>
        
        <div id="box">
            <h2 class="title">属性元素器</h2>
            <!--<p class="p1">我是一个段落</p>-->
            <ul>
                <li id="li1">分手应该体面</li>
                <li class="what" id="li2">分手应该体面</li>
                <li class="what">分手应该体面</li>
                <li class="heihei">分手应该体面</li>

            </ul>

            <form action="" method="post">

                <input name="username" type='text' value="1" checked="checked" />
                <input name="username1111" type='text' value="1" />
                <input name="username2222" type='text' value="1" />
                <input name="username3333" type='text' value="1" />
                <button class="btn-default">按钮1</button>
                <button class="btn-info">按钮1</button>
                <button class="btn-success">按钮1</button>
                <button class="btn-danger">按钮1</button>

            </form>
        </div>
        
        <script type="text/javascript" src="JS/jquery.js"></script>
        
        <script type="text/javascript">
            
            $(function(){
                
                //标签名[属性名]查找所有含有id属性的该标签名的元素
                $("li[id]").css("color", "red");
                
                //匹配给定的属性是what值得元素
                $("li[class=what]").css("font-size", "30px");
                
                //[attr!=value] 匹配所有不含有指定的属性, 或者属性不等于特定值得元素
                $("li[class!=what]").css("font-size", "50px");
                
                //匹配给定的属性是以某些值开始的元素
                $("input[name^=username]").css('background',"gray");
                
                //匹配给定的属性是以某些值结尾的元素
                $('input[name$=222]').css('background','greenyellow');
                
                //匹配给定的属性是以包含某些值的元素
                $('button[class*=btn]').css('background','burlywood')
                
                
            })
            
        </script>
        
    </body>
</html>
属性选择器

6.筛选选择器

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        
        <div id="box">
            <p class="p1">
                <span>我是第一个span标签</span>
                <span>我是第二个span标签</span>
                <span>我是第三个span标签</span>
            </p>
            <button>按钮</button>
        </div>
        <ul>
            <li class="list">2</li>
            <li>3</li>
            <li>4</li>
            <li>5</li>
        </ul>
        
        <script type="text/javascript" src="JS/jquery.js"></script>
        
        <script type="text/javascript">
            
            //获取第n个元素,数值从0开始
            $("span").eq(1).css("color","#FF0000");
            
            //获取第一个元素: first; 获取最后一个元素: last    点语法 和 set方法
            $("span").last().css("color","aquamarine");
            $("span").first().css("color", "aquamarine");
            
            //查找span标签的父元素(亲的)
            $('span').parent('.p1').css({"width":'200px','height':'200px',"background":'red'});
            
            //选择所有的兄弟元素(不包括自己)
            $(".list").siblings("li").css("background","coral");
            
            //查找所有的后代元素
            $("div").find("button").css("background","darkcyan");
            
            //不写参数代表获取所有的子元素
            $("ul").children().css("background","darkseagreen");
            $("ul").children("li").css("margin-top",10);
            
        </script>
        
    </body>
</html>
筛选选择器

选择器介绍完毕,内容比较多,大家根据之前学习到的css选择器可以更好的使用jquery选择器的用法

三.jQuery动画效果

jQuery提供的一组网页中常见的动画效果,这些都是标准的,有规律的效果;同时还提供给我们自定义动画的功能

1.显示动画

方式一:

$("div").show();

解释:无参数,表示让指定的元素直接显示出来。其实这个方法的底层就是通过display: block;实现的。

方式二:

$('div').show(3000);

解释:通过控制元素的宽高、透明度、display属性,逐渐显示,2秒后显示完毕。

方式三:

$("div").show("slow");

 参数可以是:

  show 慢: 600ms

  normal 正常: 400ms

  fast 快: 200ms

解释: 和方式二类似, 也是通过控制元素的高度, 透明度, display属性, 逐渐显示

方式四:

//show(毫秒值,回调函数;
$("div").show(5000,function () {
     alert("动画执行完毕!");
});

解释: 动画执行完后,立即执行回调函数

总结:

上面的四中方式几乎一致:参数可以有两个,第一个是动画的执行时长,第二个是动画结束后执行回调函数

2.隐藏动画:

方式参照上面的show()方法的方式。如下:

$(selector).hide();

$(selector).hide(1000); 

$(selector).hide("slow");

$(selector).hide(1000, function(){});

3.实现点击按钮显示盒子,再点击按钮隐藏盒子

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            #box{
                width: 200px;
                height: 200px;
                background-color: green;
                border: 1px solid red;
                display: none;
            }
        </style>
    </head>
    <body>
        <div id="box">        
        </div>
        <button id="btn">隐藏</button>    
    </body>
    <script src="jquery-3.3.1.js"></script>
    
    <script type="text/javascript">
        
        //jquery 提供了一些方法 show() hide() 控制元素显示隐藏
        var isShow = true;
        $('#btn').click(function(){
            if(isShow){
                $('#box').show('slow',function(){
                    $(this).text('盒子出来了');            
                    $('#btn').text('显示');
                    isShow = false;
                })
            }else{
                $('#box').hide(2000,function(){
                    $(this).text('');    
                    $('#btn').text('隐藏');
                    isShow = true;
                    
                })
            }
        })
    
        
    </script>
</html>
View Code

4.开关式显示隐藏动画

$('#box').toggle(3000,function(){});

显示和隐藏的来回切换采用的是toggle()方法:就是先执行show(),再执行hide()。

$('#btn').click(function(){
            $('#box').toggle(3000,function(){
                $(this).text('盒子出来了');    
                if ($('#btn').text()=='隐藏') {
                    $('#btn').text('显示');    
                }else{
                    $('#btn').text('隐藏');    
                }
            });
        })
View Code

5.滑入和滑出

(1).滑入动画效果:(类似生化中的卷帘门)

$(selector).slideDown(speed, 回调函数);

解释: 下拉动画,显示元素

注意: 省略参数或者传入不合法的字符串,那么则使用默认值:400毫秒(同样适用于fadeIn/slideDown/slideUp)

(2).滑出动画效果:

$(selector).slideUp(speed, 回调函数);

解释:上拉动画,隐藏元素。

(3).滑入滑出切换动画效果:

$(selector).slideToggle(speed, 回调函数);
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        div {
            width: 300px;
            height: 300px;
            display: none;
            background-color: green;
        }
    </style>

    <script src="jquery-3.3.1.js"></script>
    <script>
        $(function () {
            //点击按钮后产生动画
            $("button:eq(0)").click(function () {

                //滑入动画: slideDown(毫秒值,回调函数[显示完毕执行什么]);
                $("div").slideDown(2000, function () {
                    alert("动画执行完毕!");
                });
            })

            //滑出动画
            $("button:eq(1)").click(function () {

                //滑出动画:slideUp(毫秒值,回调函数[显示完毕后执行什么]);
                $("div").slideUp(2000, function () {
                    alert("动画执行完毕!");
                });
            })

            $("button:eq(2)").click(function () {
                //滑入滑出切换(同样有四种用法)
                $("div").slideToggle(1000);
            })

        })
    </script>
</head>
<body>
<button>滑入</button>
<button>滑出</button>
<button>切换</button>
<div></div>

</body>
</html>
示例

6.淡入淡出动画

(1).淡入动画效果:

$(selector).fadeIn(speed, callback);

作用:让元素以淡淡的进入视线的方式展示出来。

(2).淡出动画效果:

$(selector).fadeOut(1000);

作用:让元素以渐渐消失的方式隐藏起来

(3).淡入淡出切换动画效果:

$(selector).fadeToggle('fast', callback);

作用:通过改变透明度,切换匹配元素的显示或隐藏状态。

参数的含义同show()方法.

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        div {
            width: 300px;
            height: 300px;
            display: none;
            /*透明度*/
            opacity: 0.5;
            background-color: red;
        }
    </style>

    <script src="jquery-3.3.1.js"></script>
    <script>
        $(function () {
            //点击按钮后产生动画
            $("button:eq(0)").click(function () {

//                //淡入动画用法1:   fadeIn();   不加参数
                $("div").fadeIn();

//                //淡入动画用法2:   fadeIn(2000);   毫秒值
//                $("div").fadeIn(2000);
//                //通过控制  透明度和display

                //淡入动画用法3:   fadeIn(字符串);   slow慢:600ms   normal正常:400ms   fast快:200ms
//                $("div").fadeIn("slow");
//                $("div").fadeIn("fast");
//                $("div").fadeIn("normal");

                //淡入动画用法4:   fadeIn(毫秒值,回调函数[显示完毕执行什么]);
//                $("div").fadeIn(5000,function () {
//                    alert("动画执行完毕!");
//                });
            })

            //滑出动画
            $("button:eq(1)").click(function () {
//                //滑出动画用法1:   fadeOut();   不加参数
               $("div").fadeOut();

//                //滑出动画用法2:   fadeOut(2000);   毫秒值
//                $("div").fadeOut(2000);  //通过这个方法实现的:display: none;
//                //通过控制  透明度和display

                //滑出动画用法3:   fadeOut(字符串);   slow慢:600ms   normal正常:400ms   fast快:200ms
//                $("div").fadeOut("slow");
//                $("div").fadeOut("fast");
//                $("div").fadeOut("normal");

                //滑出动画用法1:   fadeOut(毫秒值,回调函数[显示完毕执行什么]);
//                $("div").fadeOut(2000,function () {
//                    alert("动画执行完毕!");
//                });
            })

            $("button:eq(2)").click(function () {
                //滑入滑出切换
                //同样有四种用法
                $("div").fadeToggle(1000);
            })

            $("button:eq(3)").click(function () {
                //改透明度
                //同样有四种用法
                $("div").fadeTo(1000, 0.5, function () {
                    alert(1);
                });
            })
        })
    </script>
</head>
<body>
<button>淡入</button>
<button>淡出</button>
<button>切换</button>
<button>改透明度为0.5</button>
<div></div>

</body>
</html>
示例

7.自定义动画

语法:

$(selector).animate({params}, speed, callback);

作用: 执行一组CSS属性的自定义动画

  第一个参数表示: 要执行动画的CSS属性(必选)

  第二个参数表示: 执行动画时长(可选)

  第三个参数表示: 动画执行完毕后, 立即执行的回调函数(可选)

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        div {
            position: absolute;
            left: 20px;
            top: 30px;
            width: 100px;
            height: 100px;
            background-color: green;
        }
    </style>
    <script src="jquery-3.3.1.js"></script>
    <script>
        jQuery(function () {
            $("button").click(function () {
                var json = {"width": 500, "height": 500, "left": 300, "top": 300, "border-radius": 100};
                var json2 = {
                    "width": 100,
                    "height": 100,
                    "left": 100,
                    "top": 100,
                    "border-radius": 100,
                    "background-color": "red"
                };

                //自定义动画
                $("div").animate(json, 1000, function () {
                    $("div").animate(json2, 1000, function () {
                        alert("动画执行完毕!");
                    });
                });

            })
        })
    </script>
</head>
<body>
<button>自定义动画</button>
<div></div>
</body>
</html>
示例

8.停止动画

$(selector).stop(true, false);

(1).里面的两个参数,有不同的含义

①.第一个参数

  true: 后续动画不执行

  false: 后续动画会执行

②.第二个参数:

  true: 立即执行完成当前动画

  false: 立即停止当前动画

PS:参数如果都不写,默认两个都是false。实际工作中,直接写stop()用的多。

(2)案例: 鼠标悬停时,弹出下拉菜单(下拉时带动画)

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style type="text/css">
        * {
            margin: 0;
            padding: 0;
        }

        ul {
            list-style: none;
        }

        .wrap {
            width: 330px;
            height: 30px;
            margin: 100px auto 0;
            padding-left: 10px;
            background-color: pink;
        }

        .wrap li {
            background-color: green;
        }

        .wrap > ul > li {
            float: left;
            margin-right: 10px;
            position: relative;
        }

        .wrap a {
            display: block;
            height: 30px;
            width: 100px;
            text-decoration: none;
            color: #000;
            line-height: 30px;
            text-align: center;
        }

        .wrap li ul {
            position: absolute;
            top: 30px;
            display: none;
        }
    </style>
    <script src="jquery-3.3.1.js"></script>
    <script>
        //入口函数
        $(document).ready(function () {
            //需求:鼠标放入一级li中,让他里面的ul显示。移开隐藏。
            var jqli = $(".wrap>ul>li");

            //绑定事件
            jqli.mouseenter(function () {
                $(this).children("ul").stop().slideDown(1000);
            });

            //绑定事件(移开隐藏)
            jqli.mouseleave(function () {
                $(this).children("ul").stop().slideUp(1000);
            });
        });
    </script>

</head>
<body>
<div class="wrap">
    <ul>
        <li>
            <a href="javascript:void(0);">一级菜单1</a>
            <ul>
                <li><a href="javascript:void(0);">二级菜单2</a></li>
                <li><a href="javascript:void(0);">二级菜单3</a></li>
                <li><a href="javascript:void(0);">二级菜单4</a></li>
            </ul>
        </li>
        <li>
            <a href="javascript:void(0);">二级菜单1</a>
            <ul>
                <li><a href="javascript:void(0);">二级菜单2</a></li>
                <li><a href="javascript:void(0);">二级菜单3</a></li>
                <li><a href="javascript:void(0);">二级菜单4</a></li>
            </ul>
        </li>
        <li>
            <a href="javascript:void(0);">三级菜单1</a>
            <ul>
                <li><a href="javascript:void(0);">三级菜单2</a></li>
                <li><a href="javascript:void(0);">三级菜单3</a></li>
                <li><a href="javascript:void(0);">三级菜单4</a></li>
            </ul>
        </li>
    </ul>
</div>
</body>
</html>
View Code

PS: 

javascript:void(0); //跟javascript:;效果一样

上方代码中,关键的地方在于,用了stop函数,再执行动画前,先停掉之前的动画

 

posted @ 2018-09-29 20:47  骑驴老神仙  阅读(312)  评论(0)    收藏  举报