• module5-03-jQuery 排序、入口函数与动画


    jQuery排序与动画

    一、Jquery排序

    1.1 获得下标的方法

    (1)eq() 方法

    • jQuery 中获得的对象,内部包含选择的一组原生 js 对象,在 jQuery对象中会进行一个大的排序,这个排序与原来的HTML结构没有关系

    • eq()方法在 jQuery对象中通过下标获取某个对象,下标是 jQuery对象中的大的排序的下标。

    (2)index() 方法

    • jQuery对象调用index()方法时,得到的是它自己在 HTML 结构中的兄弟中的下标位置。与jQuery 大排序没有关系。

    1.2 排他思想在jQuery中的应用

    • 在一个事件中,希望自己是特殊的而其兄弟们是默认的行为就是排他

    (1)排他方法

    • jQuery中可以让this特殊设置,让兄弟sibling设置成默认

    (2)Tab栏特效中的排他

    • 自己的级别的排他:给自己this添加current类名,让其他的兄弟删除 current类。

    • 对应的部分的排他:给对应位置的元素添加current,其他的兄弟删除current类

    • 找对应关系,使用的是自己的 index()下标,让另一组中下标相同的项作为对应项。

    • 通过选中另一组的对应项利用eq()方法选择下标项。

    (3)Tab栏优化

    • 如果是上述的做法的话会出一个问题,即用jQuery选择器获得的全局的匹配项然后进行jQuery大排序

    • 如果多个Tab栏相同类名的话,会导只有第一个tab栏中的列表切换

    • 解决方法:

      • span和ul的查找全部使用链式调用,通过节点关系查找

    1.3 each() 遍历

    • 因为jQuery对象进行的操作都是批量操作,每次批量操作都可能会有一个新的jQuery排序,所以只能进行一些简单的操作

    • 当涉及到后代元素的操作的话,就不太适用批量操作

    (1)each() 遍历方法

    • 参数是一个函数

    • 作用:就是对jQuery对象中的元素每一个都执行函数内部的操作

    • 和for循环相像,就是从下标为0的项一直遍历到最后一项,然后根据函数内部进行操作

    (2)优点

    • each参数中的函数内部,也有一个this,指向的是进来遍历的每一次的元素

      • 案例:让每一个div内部的第二个元素变红

    • each函数内部有一个默认的参数i,i 表示这次遍历对象在jQuery对象排序中的下标位置相当于eq()

      • 案例:制作表格隔列变色

    二、jQuery入口函数

    • 原生的入口函数 window.onload

    • jQuery中的入口函数$(document).eady()

    (1)window.onload

    • 是我们平常用的入口函数,在页面中的所有资源加载完毕才能回调(DOM树、音频、视频、图片

    • 只能有一个,后写覆盖前面

    • 语法:

    window.onload = function () {...}

    (2)$(document).ready()

    • 在页面中DOM结构加载完毕就可以回调,无须等到图片等资源加载完毕

    • 可以有多个,后写后调用

    • 语法:

    $(document).ready(function () {...})
    // 简写
    $(function () {...})

    (3)区别

    • 加载时间不一样

      • 比window.onload快

    • 最大存在数量不一样

    三、jQuery动画

    3.1 显示隐藏方法

    (1)hide() 、show() 和toggle() 方法

    • hide():元素隐藏,相当于display:none

    • show():元素显示,相当于display:block

    • toggle():切换隐藏 / 显示,在display为none或者block切换

    • 可以传参数,会有过度动画,不传参数没有过渡时间

      • 参数:

        • 字符串形式:'slow'、’normal‘、’fast‘

        • 数字形式:毫秒单位

    • 动画效果:收缩至左上角 / 从左上角放大,伴随着宽度和高度以及透明度的变化

    (2)slideDown() 和 slideUp() 滑动显示隐藏

    • slideDown():滑动显示

    • slideUp():滑动隐藏

    • slideToggle():滑动切换

    • 让元素在display属性的block和none之间进行切换

    参数

    • 如果不传参数,默认过度时间为400ms

    • 如果传参数:

      • 字符串:'slow'、’normal‘、’fast‘

      • 数字:时间是毫秒

    注意

    • 如果滑动的元素没有设置宽高,没有滑动效果

    • 如果设置了高度和宽度,会进行上下垂直方向的滑动

    动画效果

    • 高度在0到设置值之间的变化,没有透明度动画

    • 如果设置了定位,偏移量方向如果是bottom参与了,滑动方向会发生变化

    (3)fadeIn() 和 fadeOut() 淡入淡出

    • fadeIn():淡入,透明度逐渐增大最终显示

    • fadeOut():淡出,透明度逐渐降低最终隐藏

    • fadeToggle():切换效果

    • fadeTo():淡入或淡出到某个指定的透明度

    动画效果

    • 执行的是透明度动画,也是在 display 属性的 block 和 none 之间切换

    参数

    • 不传参数,默认400毫秒

    • 传参数:同上

    3.2 animate() 方法

    • 作用:执行CSS属性集的自定义动画

    • 语法:$(selector).animate(styles, speed, easing, callback)

    • 参数:

      • ① css的属性名和运动结束位置的属性值的集合

      • ② 可选,规定动画的速度,默认’normal‘。其他的是’slow‘、’normal‘、’fast‘,单位为毫秒

      • ③ 可选,设置动画曲线,默认swing,有easing、swing、linear

      • ④ 可选,animate函数执行完之后要执行的函数

    注意

    • 其他运动方法比如slideUp等,也有参数3和参数4

    • 所有有数值的属性都可以运动

    3.3 动画排队

    • 同一个元素对象身上,如果定义了多个动画,动画会排队等待执行

    • ② 如果是不同的元素,就不会排队

    • ③ 如果是非运动动画(如改变宽高),也不会等待运动完成

    • ④ 显示隐藏、淡入淡出动画也有排队机制

    • 同一个元素身上的运动,可以简化成联式调用的方法

    3.4 动画的操作

    (1)delay() 动画延迟

    • delay:延迟的意思

    • 将delay() 设置在某个运动方法之前,表示后面的运动在规定时间后再执行,有延迟运动的效果

    • 参数:时间的数值,表示延迟的时间

    • 对于animate之外其他方法也有效果

    (2)stop() 动画暂停

    • 作用:设置元素对象身上的排队的动画以何种方式进行停止

    • 参数:

      • ① 设置是否清空后面的队列

      • ② 设置当前动画是否立即完成

    • 两个参数的默认值都是false

    • 一般应用的是清除后面动画,并且停留在当前位置

    • 所以是stop(true, false) 简写: stop(true)

    (3)清空动画排队

    • 为解决频繁触发事件带来的动画累积

    • 方法一:

      • 使用stop(true) 清空动画队列

    • 方法二:

      • 使用jQuery对象的.is(':animate')方法判断是否运动中,用条件判断来决定是否增加动画

    四、综合案例

    • 下拉菜单

    • 手凤琴轮播图

    • 淡入淡出轮播图

  • 相关阅读:
    关于js中this的指向问题
    关于css垂直水平居中的几种方法
    个人第一个jquery插件(tips)
    css3实现虚拟三角形
    js-关于唯一ID的创建
    面试题
    new Promise()
    JSON.parse()、JSON.stringify()和eval()的作用
    vue-router路由导航
    NodeJS
  • 原文地址:https://www.cnblogs.com/lezaizhu/p/14267927.html
Copyright © 2020-2023  润新知