本节涉及到的知识点主要有jQuery对元素的查找,jQuery中的find()函数、animate()函数、hover()函数、focus()函数、blur()函数、slideUp()函数、slideDown()函数和layui布局。主要实现的功能是jQuery在首页导航界面中的动画效果。
以下是一些示例代码
1、jQuery导航
实例
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>jQuery导航</title> <link rel="icon" type="image/x-icon" href="2.png"> <script src="jquery-3.3.1.js"></script> <link rel="stylesheet" type="text/css" href="layui/css/layui.css"> <style type="text/css"> * { margin: 0; padding: 0; } .box { width: 100%; height: 70px; background: #f5f5f5; box-shadow: 1px 1px 10px #ccc; line-height: 70px; position: relative; top: -65px; } form { width: 800px; margin: 0 auto; position: relative; } input { width: 800px; height: 35px; border: 0; border-radius: 4px; padding-left: 15px; } form i { font-size: 28px; position: absolute; top: 0; right: 10px; } span { position: absolute; width: 48px; height: 48px; display: block; background: url(show.jpg) -64px 168px; right: 0; } .menu { width: 1000px; height: 40px; line-height: 40px; margin: 20px auto; background: #f5f5f5; } .menu li { float: left; text-align: center; width: 10%; font-weight: bold; } .one li:hover a { color: #fff; } .three li { position: relative; } .three li i { font-size: 12px; margin-left: 8px; } .three li ul { width: 100px; box-shadow: 0 2px 5px #f5f5f5; position: absolute; } .three li ul li { width: 100px; line-height: 40px; } .three li ul li:hover { background: #f5f5f5; } </style> </head> <body> <div class="box"> <form> <input type="text" placeholder="# 请输入关键词"> <i class="layui-icon"></i> </form> <span></span> </div> <ul class="menu one"> <li><a href="">要闻</a></li> <li><a href="">国际</a></li> <li><a href="">国内</a></li> <li><a href="">社会</a></li> <li><a href="">军事</a></li> <li><a href="">娱乐</a></li> <li><a href="">体育</a></li> <li><a href="">汽车</a></li> <li><a href="">科技</a></li> <li><a href="">其他</a></li> </ul> <ul class="menu two" style="position:relative;"> <li name="0"><a href="">要闻</a></li> <li name="1"><a href="">国际</a></li> <li name="2"><a href="">国内</a></li> <li name="3"><a href="">社会</a></li> <li name="4"><a href="">军事</a></li> <li name="5"><a href="">娱乐</a></li> <li name="6"><a href="">体育</a></li> <li name="7"><a href="">汽车</a></li> <li name="8"><a href="">科技</a></li> <li name="9"><a href="">其他</a></li> <div class="ba" style="position: absolute;width:100px;height: 3px;background:#ff6500;top: 37px; "></div> </ul> <ul class="menu three"> <li><a href="">要闻</a></li> <li><a href="">国际</a></li> <li><a href="">国内</a></li> <li><a href="">社会</a></li> <li><a href="">军事</a></li> <li><a href="">娱乐</a></li> <li><a href="">体育</a></li> <li><a href="">汽车</a></li> <li><a href="">科技</a></li> <li><a href="">其他</a><i class="layui-icon layui-icon-up"></i> <ul> <li><a href="">你说</a></li> <li><a href="">你说</a></li> <li><a href="">你说</a></li> </ul> </li> </ul> <script type="text/javascript"> $(function() { $('input').focus(function() { $(this).css('box-shadow', '0 0 5px #ff6500 inset') }) $('input').blur(function() { $(this).css('box-shadow', '') }) $('.box').hover(function() { $(this).stop().animate({ 'top': '2px' }, 500) }, function() { $(this).stop().animate({ 'top': '-65px' }, 500) }) //第一个导航 $('.one>li').hover(function() { $(this).css('background', '#ff6500') }, function() { $(this).css('background', '#f5f5f5') }) //第二个导航 $('.two>li').hover(function() { $x = parseInt($(this).attr('name')) * 100 $('.ba').stop().animate({ left: $x + 'px' }, 300) }, function() { $('.ba').stop().animate({ left: '0' }, 100) }) //第三个导航 $('.three ul').hide() $('.three>li').hover(function(){ $(this).find('i').attr('class','layui-icon layui-icon-down') $(this).find('ul').slideDown(100) },function(){ $(this).find('i').attr('class','layui-icon layui-icon-up') $(this).find('ul').slideUp(100) }) }) </script> </body> </html>
运行实例 »
点击 "运行实例" 按钮查看在线实例
运行结果
2、jQuery动画
实例
<!DOCTYPE html> <html> <head> <title>jQuery动画</title> <link rel="icon" type="image/x-icon" href="images/2.png"> <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script> <style type="text/css"> *{margin:0;padding: 0; } .content{margin:20px;font-size:20px;color: #fff;float: left; } .content p{height: 160px;width: 200px;background: red;text-align: center;line-height: 160px;position: relative;} .content button{height: 40px;width: 200px;border:none;} #box{width: 95px;height: 40px;border:none;} #text{text-shadow: 3px 3px 3px #ff6500;color: #fff;font-size: 25px;} </style> </head> <body> <div class="content"> <button class="btu1">点我隐藏</button> <p class="box1">~ 我是hide ~</p> </div> <div class="content"> <button class="btu2">点我显示</button> <p class="box2">~ 我是show ~</p> </div> <div class="content"> <button class="btu3">事件切换</button> <p class="box3">~ 我是toggle ~</p> </div> <div class="content"> <button class="btu4">淡入元素</button> <p class="box4">~ 我是fadeIn ~</p> </div> <div class="content"> <button class="btu5">淡出元素</button> <p class="box5">~ 我是fadeOut ~</p> </div> <div class="content"> <button class="btu6">淡出到指定值</button> <p class="box6">~ 我是fadeOut ~</p> </div> <div class="content"> <button class="btu7">下滑效果</button> <p class="box7">~ 我是slideDown~</p> </div> <div class="content"> <button class="btu8">上滑效果</button> <p class="box8">~ 我是slideUp ~</p> </div> <div class="content"> <button class="btu9">动画效果</button> <p class="box9">~ 我是animate ~</p> </div> <div class="content "> <button class="btu10" id="box">动画效果</button> <button class="btu11" id="box">停止动画</button> <p class="box10">~ 我是animate ~</p> </div> <div class="content"> <button class="btu12">callback</button> <p class="box12">~ 我是callback ~</p> </div> <script> $(function(){ // jQuery显示/隐藏 // hide(speed,callback) 隐藏显示的元素 $('.btu1').click(function(){ $('.box1').hide() }) // show(speed,callback) 显示隐藏的元素 $('.box2').hide() $('.btu2').click(function(){ $('.box2').show() }) // toggle(speed,callback)事件切换 显示被隐藏的元素,并隐藏已显示的元素; $('.btu3').click(function(){ $('.box3').toggle() }) //淡入淡出效果 // jQuery是通过控制不透明度的变化来控制匹配到的元素的淡入淡出效果 // fadeIn(speed,callback)用于淡入已隐藏的元素; $('.box4').hide() $('.btu4').click(function(){ $('.box4').fadeIn(3000) }) // fadeOut(speed,callback)用于淡出可见元素; $('.btu5').click(function(){ $('.box5').fadeOut(3000) }) // fadeTo(speed,opacity,callback) 把所有匹配到元素的不透明度以渐进发方式调整到指定的不透明度; //opacity:fadeTo()方法中必须参数,控制淡入淡出的效果的不透明度(值介于0与1之间) $('.btu6').click(function(){ $('.box6').fadeTo(3000,0.3) }) // 滑动效果 // slideDown(speed,callback)通过高度的变化,向下增大的动态效果 下滑效果; $('.box7').hide() $('.btu7').click(function(){ $('.box7').slideDown(500) }) // slideUp(speed,callback)通过高度的变化,向上减小的动态效果 上滑效果; $('.btu8').click(function(){ $('.box8').slideUp(500) }) // 动画效果 // jQuery中我们使用 animate()方法创建自定义的动画 // animate(speed,callback) 方法用于创建自定义动画; // 语法: $(selector).animate({params},speed,callback); $('.btu9').click(function(){ $('.box9').animate({fontSize:'10px'},1500)//属性名称font-size 一律改成驼峰写法:fontSize }) $('.btu10').click(function(){ $('.box10').animate({ opacity:'0.3', left:'400px', width:'200px', height:'200px', lineHeight:'200px' },1500) }) // 停止动画: // stop() 方法用于停止动画或效果,在它们完成之前,该方法适用于所有 jQuery 效果函数,包括滑动、淡入淡出和自定义动画 $('.btu11').click(function(){ $('.box10').stop() }) // callback $('.btu12').click(function(){ $('.box12').hide(1000,function(){ $('body').css('background','#05F5E5') }) }) }) </script> </body> </html>
运行实例 »
点击 "运行实例" 按钮查看在线实例
运行结果
手写代码
总结
jQuery 事件方法:
事件方法会触发匹配元素的事件,或将函数绑定到所有匹配元素的某个事件。
触发实例:
$("button#demo").click()
上面的例子将触发 id="demo" 的 button 元素的 click 事件。
绑定实例:
$("button#demo").click(function(){$("img").hide()})
上面的例子会在点击 id="demo" 的按钮时隐藏所有图像。
还有其他方法:
bind() 向匹配元素附加一个或更多事件处理器
blur() 触发、或将函数绑定到指定元素的 blur 事件
change() 触发、或将函数绑定到指定元素的 change 事件
click() 触发、或将函数绑定到指定元素的 click 事件
dblclick() 触发、或将函数绑定到指定元素的 double click 事件
delegate() 向匹配元素的当前或未来的子元素附加一个或多个事件处理器
die() 移除所有通过 live() 函数添加的事件处理程序。
error() 触发、或将函数绑定到指定元素的 error 事件
event.isDefaultPrevented() 返回 event 对象上是否调用了 event.preventDefault()。
event.pageX 相对于文档左边缘的鼠标位置。
event.pageY 相对于文档上边缘的鼠标位置。
event.preventDefault() 阻止事件的默认动作。
event.result 包含由被指定事件触发的事件处理器返回的最后一个值。
event.target 触发该事件的 DOM 元素。
event.timeStamp 该属性返回从 1970 年 1 月 1 日到事件发生时的毫秒数。
event.type 描述事件的类型。
event.which 指示按了哪个键或按钮。
focus() 触发、或将函数绑定到指定元素的 focus 事件
keydown() 触发、或将函数绑定到指定元素的 key down 事件
keypress() 触发、或将函数绑定到指定元素的 key press 事件
keyup() 触发、或将函数绑定到指定元素的 key up 事件
live() 为当前或未来的匹配元素添加一个或多个事件处理器
load() 触发、或将函数绑定到指定元素的 load 事件
mousedown() 触发、或将函数绑定到指定元素的 mouse down 事件
mouseenter() 触发、或将函数绑定到指定元素的 mouse enter 事件
mouseleave() 触发、或将函数绑定到指定元素的 mouse leave 事件
mousemove() 触发、或将函数绑定到指定元素的 mouse move 事件
mouseout() 触发、或将函数绑定到指定元素的 mouse out 事件
mouseover() 触发、或将函数绑定到指定元素的 mouse over 事件
mouseup() 触发、或将函数绑定到指定元素的 mouse up 事件
one() 向匹配元素添加事件处理器。每个元素只能触发一次该处理器。
ready() 文档就绪事件(当 HTML 文档就绪可用时)
resize() 触发、或将函数绑定到指定元素的 resize 事件
scroll() 触发、或将函数绑定到指定元素的 scroll 事件
select() 触发、或将函数绑定到指定元素的 select 事件
submit() 触发、或将函数绑定到指定元素的 submit 事件
toggle() 绑定两个或多个事件处理器函数,当发生轮流的 click 事件时执行。
trigger() 所有匹配元素的指定事件
triggerHandler() 第一个被匹配元素的指定事件
unbind() 从匹配元素移除一个被添加的事件处理器
undelegate() 从匹配元素移除一个被添加的事件处理器,现在或将来
unload() 触发、或将函数绑定到指定元素的 unload 事件
animate() 创建自定义的动画
stop() 用于停止动画或效果,在它们完成之前,该方法适用于所有 jQuery 效果函数,包括滑动、淡入淡出和自定义动画
slideUp(speed,callback) 通过高度的变化,向上减小的动态效果 上滑效果
slideDown(speed,callback) 通过高度的变化,向下增大的动态效果 下滑效果
fadeIn(speed,callback) 用于淡入已隐藏的元素
fadeOut(speed,callback) 用于淡出可见元素
fadeTo(speed,opacity,callback) 把所有匹配到元素的不透明度以渐进发方式调整到指定的不透明度
show(speed,callback) 显示隐藏的元素
hide(speed,callback) 隐藏显示的元素