视频课:https://edu.csdn.net/course/play/7621

学习内容

  • jQuery UI核心
  • jQuery UI交互组件
  • jQuery UI微件
  • jQuery效果库

能力目标

  • 熟悉jQuery UI库
  • 能熟练使用UI库中的常用组件

本章简介

jQuery本身注重于后台,没有漂亮的界面,而jQuery UI的出现则补充了前者的不足,它提供了诸多的组件和华丽的界面,使用方便、灵活。

jQuery UI是在jQuery的基础上,利用jQuery的扩展性而设计的针对UI的插件。它提供了一些常用的界面元素,诸如对话框、拖动行为、改变大小行为等等。 本章将学习jQuery UI中的各种组件。

核心技能部分

9.1            jQuery UI简介

UI即User Interface,指的是用户界面。jQueryUI是以jQuery为基础的开源JavaScript网页用户界面插件。包含底层用户交互、动画特效和可更换主题的可视组件。开发人员可以直接用它来构建具有很好交互性的Web前端界面。所有插件经测试能兼容IE 6.0+, Firefox 3+, Safari 3.1+, Opera 9.6+和Google Chrome等浏览器。

jQuery UI主要分为4个部分:核心部分、交互行为组件、微件和动画效果组件。

核心:这是jQuery UI的核心代码,包含最底层、最基本的函数和初始化组件,供其他地方调用。

交互行为组件:交互部件是一些与鼠标交互相关的内容,包括Draggable(拖动)、Droppable(置放)、Resizable(缩放)、Selectable(选择)和Sortable(排序)等。

微件:主要是一些界面的扩展,包括Accordion(手风琴)、AutoComplete(自动完成)、Dialog(对话框)、Slider(滑块)、Tabs(选项卡)、DatePicker(日历)、ProgressBar(进度条)等。

我们可以从http://jqueryui.com/download下载最新的jQuery UI库,目前版本是1.8.21。下载的时候可以有选择的进行定制下载。

下载后会得到一个压缩包,解压该文件,里面会有很多js文件和css文件,开发时需要导入这些文件才能使用jQuery UI组件。

9.1            Widgets微件

Widgets即小部件、微件,是跟HTML中的页面元素(例如:按钮、对话框等)比较相似的组件。jQuery UI提供的微件的界面更好看,功能更强大,详见表9-1-1所示。

表9-1-1  jQuery UI微件

微件名称

说明

Accordion

手风琴组件

Button

按钮组件

Dialog

对话框组件

Tabs

选项卡组件

Datepicker

日历组件

9.1.1         Accordion

Accordion即手风琴,这是一种常见的界面组件。我们先认识一下这个组件的最简单用法,参考代码如下所示。

示例9.1

<!DOCTYPE html>
<html>
<head><title>示例9.1</title><metahttp-equiv="Content-Type" content="text/html;charset=gb2312" />
<link rel="stylesheet"href="../../themes/base/jquery.ui.all.css"><scriptsrc="../../jquery-1.7.2.js"></script><script src="../../ui/jquery.ui.core.js"></script><scriptsrc="../../ui/jquery.ui.widget.js"></script><scriptsrc="../../ui/jquery.ui.accordion.js"></script><script>$(function() {$( "#acc" ).accordion();});</script>
</head>
<body>
<div id="acc"><h3><a href="#">我的家人</a></h3><div><ul><li>Jack</li><li>Tom</li><li>Mary</li></ul></div><h3><a href="#">我的好友</a></h3><div><ul><li>Jack</li><li>Tom</li><li>Mary</li></ul></div><h3><a href="#">我的同事</a></h3><div><ul><li>Jack</li><li>Tom</li><li>Mary</li></ul></div><h3><a href="#">我的同学</a></h3><div><ul><li>Jack</li><li>Tom</li><li>Mary</li></ul></div>
</div>
</body>
</html>

上述代码加粗部分是我们实现手风琴组件必须要导入的文件,jquery.ui.all.css是一个包含了手风琴组件样式的文件;jquery-1.7.2.js是jQuery库文件;jquery.ui.widget.js包含了所有jQuery UI微件都需要用到的底层、核心函数;jquery.ui.accordion.js是实现手风琴组件的js文件。前四个文件几乎是在使用jQueryUI微件时都需要导入的文件。

上述代码使用accordion函数使一个id是acc的div元素初始化成了手风琴组件,见斜体部分。成为手风琴组件的元素需要满足以下条件:

Ø        尽量使用块状标签布局,否则布局会乱

Ø        每个组都分为标题和身体,上述代码中的超链接相当于标题,无序列表所在的div相当于身体,身体必须紧挨着标题

上述代码给我们展示的是jQuery中手风琴组件的默认效果,我们还可以通过该组件的相关参数来定制多种多样的手风琴组件。

accordion参数主要用来设置手风琴组件的外观,常用的参参数下所示:

Ø        active:设置手风琴组件加载完毕时默认展开哪一组,默认是第一组。

Ø        autoHeight:用来设置手风琴组件中的所有组的高度都一样,即采用最高组的高度,默认值是true。

Ø        autoWidth:用来设置手风琴组件中的所有组的宽度都一样,即采用最宽组的宽度,

默认值是true。

Ø        event:用来设置使用哪个事件来触发手风琴组件中每组的展开,默认值是click。

Ø        fillSpace:用来设置手风琴组件的高度与其父容器一致,将覆盖autoHeight,默认值是false。

Ø        icons:用来设置每组标题的图标,子属性header用来设置分组闭合时的图标,headerSelected用来设置分组展开时的图标。jQuery提供了超过150种的图标,请参考jQuery官方网站。

Ø        collapsible:用来设置是否可以单独展开/闭合手风琴组件中的某个组,默认值是false。

参数的使用方式有三种:

1.初始化组件时设置参数的值

jQuery对象. accordion ( { 参数名 :参数值,... ... } )

2.获得参数的值

jQuery对象. accordion ( "option" ,  "参数名" )

3.设置参数的值

jQuery对象. accordion ( "option" , "参数名" , 参数值 )

jQuery UI中其他组件参数的用法与之一样,后面不再多述。下面我们通过一个示例来演示上述部分参数的用法,参考代码如下所示。

示例9.2

//其他代码跟示例9.1一样

 <script>$(function() {$( "#acc").accordion({active:3,event:"mouseover"});var icons = {header:"ui-icon-circle-arrow-e",headerSelected:"ui-icon-circle-arrow-s"};$("#acc" ).accordion("option","icons",icons);});
</script>

//其他代码跟示例9.1一样

上述代码设置手风琴组件默认展开第3组,通过鼠标悬浮事件来展开组,并且标题的图标也进行了更换

9.1.1         Button

Button即按钮,但是jQuery UI中的按钮丰富多样,包括类似于HTML中的按钮,以及复选按钮、单选按钮、工具栏等。我们先认识一下这个组件的最简单用法,参考代码如下所示。

示例9.3

<!DOCTYPE html>
<html>
<head><metacharset="utf-8"><title>示例9.3</title><linkrel="stylesheet"href="../../themes/base/jquery.ui.all.css"><scriptsrc="../../jquery-1.7.2.js"></script><scriptsrc="../../ui/jquery.ui.core.js"></script><scriptsrc="../../ui/jquery.ui.widget.js"></script><scriptsrc="../../ui/jquery.ui.button.js"></script><script>$(function() {$("input, a, span").button();$("a").click(function(){alert("鼠标单击事件有效");});});</script>
</head>
<body>
<span>span标签</span>
<input type="button" value="HTML按钮"/>
<a href="#">HTML超链接</a>
</body>
</html>

上述代码加粗部分是我们实现按钮组件必须要导入的文件,其中jquery.ui.button.js是实现按钮组件的js文件。

上述代码使用button函数使页面中的span、提交按钮和超链接初始化成了按钮组件,见斜体部分。button函数还可以把HTML中的radio、checkbox封装成Button组件,例如下面的代码。

示例9.4

<!DOCTYPE html>
<html>
<head><metahttp-equiv="Content-Type" content="text/html;charset=gb2312" /><title>示例9.4</title><linkrel="stylesheet"href="../../themes/base/jquery.ui.all.css"><scriptsrc="../../jquery-1.7.2.js"></script><scriptsrc="../../ui/jquery.ui.core.js"></script><scriptsrc="../../ui/jquery.ui.widget.js"></script><scriptsrc="../../ui/jquery.ui.button.js"></script><script>$(function() {$("input").button();});</script>
</head>
<body><inputtype="checkbox" id="check1"/><labelfor="check1">篮球</label><inputtype="checkbox" id="check2"/><labelfor="check2">足球</label><br/><br/><inputtype="radio" id="radio1" name="radio"checked="checked"/><labelfor="radio1">男</label><inputtype="radio" id="radio2" name="radio"/><labelfor="radio2">女</label>
</body>
</html>

要使HTML中的radio和checkbox能顺利被封装成Button组件,就必须为每个radio或checkbox设置一个label标签,该标签用来设置文本信息。它的for属性用来关联某个radio或checkbox,即该属性的值是某个radio或checkbox的id。上述代码的运行效果如图9.1.6所示。

上述代码给我们展示的是jQuery中按钮组件的默认效果,我们还可以通过该组件的相关参数来定制多种多样的按钮组件。

Button参数主要用来设置按钮组件的外观,常用的参数下所示:

Ø        text:用来设置是否显示按钮上的文本,默认值是true。

icons:用来设置按钮上的图标,子属性primary用来设置文本左边的图标,子属性

secondary用来设置文本右边的图标。

Ø        label:用来设置按钮上的文本信息。

下面我们通过一个示例来演示上述参数的用法,参考代码如下所示。

示例9.5

<!DOCTYPE html>
<html>
<head><metahttp-equiv="Content-Type" content="text/html;charset=gb2312" /><title>示例9.5</title><linkrel="stylesheet"href="../../themes/base/jquery.ui.all.css"><scriptsrc="../../jquery-1.7.2.js"></script><scriptsrc="../../ui/jquery.ui.core.js"></script><scriptsrc="../../ui/jquery.ui.widget.js"></script><scriptsrc="../../ui/jquery.ui.button.js"></script><script>$(function() {$("span").button({icons: {primary:"ui-icon-locked"},text: false});$("input").button({icons: {primary:"ui-icon-locked"}});$("a").button({icons: {primary:"ui-icon-gear",secondary:"ui-icon-triangle-1-s"}});$("div").button({icons: {primary:"ui-icon-gear",secondary:"ui-icon-triangle-1-s"},text: false});});</script>
</head>
<body><span>span标签</span><br/><br/><inputtype="button" value="HTML按钮"/><br/><br/><ahref="#">HTML超链接</a><br/><br/><div>div标签</div>
</body>
</html>

上述代码给Button组件设置了几种不同的图标

9.1.1         Datepicker

Datepicker即日期选择器,类似于JavaScript中的日历控件。jQuery UI中的日期选择器灵活易用,可自由定制多种风格的界面。我们先认识一下这个组件的最简单用法,参考代码如下所示。

示例9.6

<!DOCTYPE html>
<html>
<head><title>示例9.6</title><metahttp-equiv="Content-Type" content="text/html;charset=gb2312" /><linkrel="stylesheet" href="../../themes/base/jquery.ui.all.css"><scriptsrc="../../jquery-1.7.2.js"></script><scriptsrc="../../ui/jquery.ui.core.js"></script><scriptsrc="../../ui/jquery.ui.widget.js"></script><scriptsrc="../../ui/jquery.ui.datepicker.js"></script><script>$(function() {$( "#dp").datepicker();});</script>
</head>
<body>
请选择日期: <input type="text" id="dp">
</body>
</html>

上述代码加粗部分是我们实现日期选择器组件必须要导入的文件,其中jquery.ui.datepicker.js是实现该组件的js文件。

上述代码使用datepicker函数为页面中的某个文本框提供了日期选择器,见斜体部分。

上述代码给我们展示的是jQuery中日期选择器组件的默认效果,我们还可以通过该组件的相关参数来定制多种多样的日期选择器。

Datepicker参数主要用来设置日期选择器组件的外观,常用的参数下所示:

Ø        dateFormat : 用来设置选取日期的格式,例如mm/dd/yy、yy-mm-dd等。

Ø        changeMonth/changeYear : 用来设置月份和年份以下拉列表框的形式显示,默认值是false。

Ø        showOtherMonths : 用来设置是否在日期面板中显示其他月份的日期,默认值是false。

Ø        selectOtherMonths : 用来设置是否可以在日期面板中选择其他月份的日期,默认值是false。

Ø        dayNamesShort/dayNamesMin : 用来设置日期面板上显示的星期的字符串,默认是英文,例如Sun、Mon、Tue等。

Ø        monthNamesShort/monthNamesMin :用来设置日期面板上显示的月份的字符串,默认是英文,例如Jan、Feb、Mar等。

下面我们通过一个示例来演示上述参数的用法,参考代码如下所示。

示例9.7

<!DOCTYPE html>
<html>
<head><title>示例9.7</title><metahttp-equiv="Content-Type" content="text/html;charset=gb2312" /><linkrel="stylesheet"href="../../themes/base/jquery.ui.all.css"><scriptsrc="../../jquery-1.7.2.js"></script><scriptsrc="../../ui/jquery.ui.core.js"></script><scriptsrc="../../ui/jquery.ui.widget.js"></script><scriptsrc="../../ui/jquery.ui.datepicker.js"></script><script>$(function(){$("#dp").datepicker({changeMonth:true,changeYear:true,showOtherMonths:true,selectOtherMonths:true});$("#dp").datepicker("option","monthNamesShort",['一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月']);$("#dp").datepicker("option","dayNamesMin",['日','一','二','三','四','五','六']);$("#format").change(function(){$("#dp").datepicker("option","dateFormat", $(this).val());});});</script>
</head>
<body>
请选择格式:<selectid="format"><option value="mm/dd/yy">mm/dd/yy</option><option value="yy-mm-dd">yy-mm-dd</option><option value="d MM, y">d MM, y</option><optionvalue="DD, d MM, yy">DD, d MM, yy</option></select><br/><br/>
请选择日期: <input type="text" id="dp">
</body>
</html>

9.1.1         Dialog

Dialog即对话框,类似于DOM中的alert或confirm,但是jQuery中的对话框更加美观易用,它可以浮动、可以拖动、可以改变大小。我们先认识一下这个组件最简单的用法,参考代码如下所示。

示例9.8

<!DOCTYPE html>
<html>
<head><title>示例9.8</title><metahttp-equiv="Content-Type" content="text/html;charset=gb2312" /><linkrel="stylesheet"href="../../themes/base/jquery.ui.all.css"><script src="../../jquery-1.7.2.js"></script><scriptsrc="../../ui/jquery.ui.core.js"></script><scriptsrc="../../ui/jquery.ui.widget.js"></script><scriptsrc="../../ui/jquery.ui.mouse.js"></script><scriptsrc="../../ui/jquery.ui.draggable.js"></script><scriptsrc="../../ui/jquery.ui.resizable.js"></script><scriptsrc="../../ui/jquery.ui.position.js"></script><scriptsrc="../../ui/jquery.ui.dialog.js"></script><script>$(function() {$( "#dt").dialog();});</script>
</head>
<body>
<div id="dt" title="系统提示">欢迎使用本系统
</div>
</body>
</html>

上述代码加粗部分是我们实现对话框组件必须要导入的文件,其中jquery.ui.dialog.js是实现对话框组件的js文件;jquery.ui.mouse.js提供了鼠标拖动对话框的支持;jquery.ui.draggable.js实现了鼠标拖动;jquery.ui.position.js提供了对话框居中显示功能。>上述代码给Button组件设置了几种不同的图标

上述代码使用dialog函数使一个id是dt的div元素初始化成了对话框组件,见斜体部分。

上述代码给我们展示的是jQuery中对话框的默认效果,我们还可以通过该组件的相关参数来定制多种多样的对话框。

Dialog参数主要用来设置对话框的外观,常用的参数下所示:

Ø        buttons:用来设置在对话框上现实哪些按钮,同时可指导按钮对应的事件函数。

Ø        closeOnEscape:用来设置是否可以通过按下ESC键来关闭对话框,默认值为true。

Ø        draggable:用来设置是否可以拖拽对话框进行移动,默认值为true。

Ø        height/width:用来设置对话框的高/宽。

Ø        modal:用来设置该对话框是否为模式对话框,默认值为false。

Ø        position:用来设置对话框在网页中显示的位置,默认值为center,其他取值有left、right、top和bottom。

Ø        resizable:用来设置对话框是否允许调整大小,默认值为true。

下面我们通过一个示例来演示上述参数的用法,参考代码如下所示。

示例9.9

<!DOCTYPE html>
<html>
<head><title>示例9.9</title><metahttp-equiv="Content-Type" content="text/html;charset=gb2312" /><linkrel="stylesheet"href="../../themes/base/jquery.ui.all.css"><scriptsrc="../../jquery-1.7.2.js"></script><scriptsrc="../../ui/jquery.ui.core.js"></script><scriptsrc="../../ui/jquery.ui.widget.js"></script><scriptsrc="../../ui/jquery.ui.mouse.js"></script><scriptsrc="../../ui/jquery.ui.button.js"></script><scriptsrc="../../ui/jquery.ui.draggable.js"></script><scriptsrc="../../ui/jquery.ui.position.js"></script><script src="../../ui/jquery.ui.dialog.js"></script><script>$(function() { $("#dialog-confirm" ).dialog({resizable: false,height:220,width:350,modal: true,buttons: [{text: "登录",click: function(){$(this).dialog("close"); }},{text: "取消",click: function(){$(this).dialog("close"); }}]});});</script>
</head>
<body>
<div id="dialog-confirm" title="用户登录">登录名称:<inputtype="text"/><br/><br/>登录密码:<inputtype="password"/>
</div>
</body>
</html>

上述代码在示例9.8的基础上多导入了一个jquery.ui.button.js文件,该文件不是必须的,它的作用是可以把页面上原始的input按钮自动封装成jQuery UI中的Button。通过图9.1.11可以看到,该对话框不能改变大小,是一个带有两个按钮的模式对话框。

9.1.1         Tabs

Tabs即选项卡组件,跟手风琴组件很相似,只不过选项卡是横向排列分组,而手风琴组件是纵向排列分组。我们先认识一下这个组件最简单的用法,参考代码如下所示。

示例9.10

<!DOCTYPE html>
<html>
<head><title>示例9.10</title><metahttp-equiv="Content-Type" content="text/html;charset=gb2312" /><linkrel="stylesheet"href="../../themes/base/jquery.ui.all.css"><scriptsrc="../../jquery-1.7.2.js"></script><scriptsrc="../../ui/jquery.ui.core.js"></script><scriptsrc="../../ui/jquery.ui.widget.js"></script><scriptsrc="../../ui/jquery.ui.tabs.js"></script><script>$(function() {$("#t" ).tabs();});</script>
</head>
<body>
<div id="t"><ul><li><a href="#tabs-1">标题1</a></li><li><a href="#tabs-2">标题2</a></li><li><a href="#tabs-3">标题3</a></li></ul><divid="tabs-1">选项卡1</div><divid="tabs-2">选项卡2</div><divid="tabs-3">选项卡3</div>
</div>
</body>
</html>

上述代码加粗部分是我们实现选项卡组件必须要导入的文件,其中jquery.ui.tabs.js是实现选项卡组件的js文件。ine-height:150%;font-family:宋体;mso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri;mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US;mso-fareast-language:ZH-CN;mso-bidi-language:AR-SA'>提供了对话框居中显示功能。>上述代码给Button组件设置了几种不同的图标

上述代码使用tabs函数使一个id是t的div元素初始化成了选项卡组件,见斜体部分。选项卡的标题使用列表实现,选项卡的身体使用div实现,并且通过标题列表中的超链接把标题和对应的身体关联起来,即超链接href属性的值是下面某个div的id。

上述代码给我们展示的是jQuery中选项卡的默认效果,我们还可以通过该组件的相关参数来定制多种多样的选项卡。

Tabs参数主要用来设置选项卡的外观,常用的参数下所示:

Ø        selected : 用来设置选项卡默认显示的tab,默认值是0,即第一个选项卡。

Ø        event : 用来设置通过哪个事件来触发选项卡的切换,默认是click。

Ø        collapsible : 用来设置是否可以单独显示/关闭某个tab,默认值是false。

下面我们通过一个示例来演示上述参数的用法,参考代码如下所示。

示例9.11

<!DOCTYPE html>
<html>
<head><title>示例9.11</title><meta http-equiv="Content-Type"content="text/html; charset=gb2312" /><linkrel="stylesheet"href="../../themes/base/jquery.ui.all.css"><scriptsrc="../../jquery-1.7.2.js"></script><scriptsrc="../../ui/jquery.ui.core.js"></script><script src="../../ui/jquery.ui.widget.js"></script><scriptsrc="../../ui/jquery.ui.tabs.js"></script><script>$(function() {$( "#t" ).tabs({event:"mouseover",collapsible:true,selected:2});});</script>
</head>
<body>
<div id="t"><ul><li><a href="#tabs-1">标题1</a></li><li><a href="#tabs-2">标题2</a></li><li><a href="#tabs-3">标题3</a></li></ul><divid="tabs-1">选项卡1</div><divid="tabs-2">选项卡2</div><divid="tabs-3">选项卡3</div>
</div>
</body>
</html>

-font-family:Calibri;mso-hansi-font-family:Calibri;mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US;mso-fareast-language:ZH-CN;mso-bidi-language:AR-SA'>组件设置了几种不同的图标

9.1            交互行为组件

Web前端的主要作用之一就是跟用户进行交互,无论是数据上的交互,还是界面上的交互。而jQuery UI中的交互行为组件主要针对界面上的交互,例如鼠标拖拽、排序、调整大小等,详见表9-1-2所示。

表9-1-2  交互行为组件

组件名称

说明

Draggable

该组件可以使鼠标拖动页面元素

Resizable

该组件可以使鼠标调整页面元素的大小

9.1.1         Draggable

Draggab即鼠标拖动,主要可以实现通过鼠标拖动页面元素,例如拖动层、拖动图片或表格等。我们先认识一下Draggab最简单的用法,参考代码如下所示。

示例9.12

<!DOCTYPE html>
<html>
<head><title>示例9.12</title><metahttp-equiv="Content-Type" content="text/html; charset=gb2312"/><linkrel="stylesheet"href="../../themes/base/jquery.ui.all.css"><scriptsrc="../../jquery-1.7.2.js"></script><scriptsrc="../../ui/jquery.ui.core.js"></script><scriptsrc="../../ui/jquery.ui.widget.js"></script><scriptsrc="../../ui/jquery.ui.mouse.js"></script><scriptsrc="../../ui/jquery.ui.draggable.js"></script><style type="text/css">#mydiv {width: 300px;height: 200px;background:silver;}</style><script>$(document).ready(function(){$("#mydiv").draggable();$("#myimg").draggable();$("#mytable").draggable();});</script></head><body><divid="mydiv"><h3>我是可以拖动的层</h3></div><img id="myimg" src="data:images/test.gif"/><table id="mytable" border="1"><tr><td>哈</td><td>哈哈</td><td>哈哈哈</td></tr><tr><td>哈</td><td>哈哈</td><td>哈哈哈</td></tr><tr><td>哈</td><td>哈哈</td><td>哈哈哈</td></tr></table></body>
</html>

上述代码加粗部分是我们实现鼠标拖动必须要导入的文件,其中jquery.ui.draggable.js是实现鼠标拖动的js文件。

9.1.1         Resizable

页面上的HTML元素大部分是不可以动态调整大小的,但在实际开发中是有这种需求的。jQuery中的Resizable可以帮助开发人员快速、轻松的实现这个需求。下面先看一下Resizable最简单的用法,参考代码如下所示。

示例9.13

<!DOCTYPE html>
<html>
<head><title>示例9.13</title><metahttp-equiv="Content-Type" content="text/html;charset=gb2312" /><linkrel="stylesheet" href="../../themes/base/jquery.ui.all.css"><scriptsrc="../../jquery-1.7.2.js"></script><scriptsrc="../../ui/jquery.ui.core.js"></script><scriptsrc="../../ui/jquery.ui.widget.js"></script><scriptsrc="../../ui/jquery.ui.mouse.js"></script><script src="../../ui/jquery.ui.resizable.js"></script><style>#rd { width: 150px; height:150px; padding: 0.5em; border:#999999 thin solid}</style><script>$(function() {$( "#rd" ).resizable();$( "#ta" ).resizable();});</script>
</head>
<body>
<div id="rd">这是可自由改变大小的div
</div>
<br/>
<textarea cols="50" rows="20"id="ta">这是可自由改变大小的文本域
</textarea>
</body>
</html>

上述代码加粗部分是我们实现鼠标拖动必须要导入的文件,其中jquery.ui.resizable.js是实现调整大小的js文件。

9.1            动画效果库

jQuery UI提供了一个动画效果库,它扩充了前面我们讲的动画特效函数和animate函数,实现了大量现成的动画特效,详见表9-1-3所示。

表9-1-3  动画效果库

函数名称

说明

show / hide

元素显示/隐藏时的动画效果,扩充了前面的show / hide函数

effect

主要通过改变大小、位置等实现动画特效

9.1.1         show / hide函数

jQuery UI动画特效库中的show / hide函数对前面讲的show /hide函数进行了功能上的扩充,动画效果更多,可以灵活定制。具体语法如下所示:

语法

jQuery对象.  show / hide ( effectName, [options] , [speed] , [callback] )

该函数有四个参数,第一个是必须的,后面都是可选的,下面是参数介绍。

Ø        effectName :设置效果名称,详见表9-1-4所示。

Ø        options :设置能控制元素大小、位置的参数,通常可采用默认设置。

Ø        speed :设置动画的速度,取值有slow,normal和fast ,也可自定义一个数字,单位是毫秒。

Ø        callback :设置动画执行完后的回调函数。

表9-1-4 效果列表

效果名称

说明

对应JS文件

blind

从上向下/从下向上收缩元素

jquery.effects.blind.js

bounce

上下晃动元素

jquery.effects.bounce.js

clip

上下同时收缩元素

jquery.effects.clip.js

drop

向左边移动并提升/降低透明度,直到显示/隐藏

jquery.effects.drop.js

explode

将元素拆分成9宫格,向外/内扩展,直到隐藏/显示

jquery.effects.explode.js

fold

向左展开,再向下展开,直到显示

向上收起,再向左收起,直到隐藏

jquery.effects.fold.js

highlight

使元素高亮

jquery.effects.highlight.js

pulsate

使元素闪烁

jquery.effects.pulsate.js

scale

元素四周从中心同时扩展直到显示

元素四周从外围同时收缩直到隐藏

jquery.effects.scale.js

shake

左右晃动元素

jquery.effects.shake.js

slide

从左往右滑动元素直到全部显示

从右往左滑动元素直到全部隐藏

jquery.effects.slide.js

下面我们通过一个示例来演示上述动画的效果,参考代码如下所示。

示例9.14

<!DOCTYPE html>
<html>
<head><title>示例9.14</title><metahttp-equiv="Content-Type" content="text/html;charset=gb2312" /><linkrel="stylesheet"href="../../themes/base/jquery.ui.all.css"><scriptsrc="../../jquery-1.7.2.js"></script><scriptsrc="../../ui/jquery.effects.core.js"></script><script src="../../ui/jquery.effects.blind.js"></script><scriptsrc="../../ui/jquery.effects.bounce.js"></script><scriptsrc="../../ui/jquery.effects.clip.js"></script><scriptsrc="../../ui/jquery.effects.drop.js"></script><scriptsrc="../../ui/jquery.effects.explode.js"></script><scriptsrc="../../ui/jquery.effects.fold.js"></script><scriptsrc="../../ui/jquery.effects.highlight.js"></script><scriptsrc="../../ui/jquery.effects.pulsate.js"></script><scriptsrc="../../ui/jquery.effects.scale.js"></script><scriptsrc="../../ui/jquery.effects.shake.js"></script><scriptsrc="../../ui/jquery.effects.slide.js"></script><style>.toggler { width:500px; height:200px;}#effect { width:400px; height:160px;padding:0.4em;  border:#666666 thinsolid}#effect h3 { margin:0;padding:0.4em; text-align:center; background-color:#CCCCCC}</style><script>$(function() {function runEffect() {var selectedEffect =$("#effectTypes").val();$("#effect").show(selectedEffect,null, "slow", callback);};function callback() {$("#effect").removeAttr("style").fadeOut();};$("#btn").click(function() {runEffect();});});</script>
</head>
<body>
<div class="toggler"><divid="effect"><h3>show动画测试</h3><p><pre>
UI即User Interface,指的是用户界面。
jQuery UI是以jQuery为基础的开源JavaScript网页用户界面插件。
包含底层用户交互、动画特效和可更换主题的可视组件。
开发人员可以直接用它来构建具有很好交互性的Web前端界面。
所有插件经测试能兼容IE6, Firefox和Google Chrome等浏览器。</pre></p></div>
</div>
<select id="effectTypes"><optionvalue="blind">Blind</option><option value="bounce">Bounce</option><optionvalue="clip">Clip</option><optionvalue="drop">Drop</option><optionvalue="explode">Explode</option><optionvalue="fold">Fold</option><optionvalue="highlight">Highlight</option><optionvalue="pulsate">Pulsate</option><optionvalue="scale">Scale</option><optionvalue="shake">Shake</option><optionvalue="size">Size</option><optionvalue="slide">Slide</option>
</select>
<input type="button" value="执行"id="btn"/>
</div>
</body>
</html>

上述代码为了在一个示例中集中演示所有的动画效果,所以导入了大量的JS文件。在实际开发中,需要用哪个动画效果就导入哪个JS文件即可。

由于show函数的第1个参数是效果名,所以我们把所有的效果名都放在了下拉列表框中。用户选择某个选项后,

上述代码中的斜体部分调用了show函数,把下拉列表框中选中项的值作为第一个参数使用。hide函数的用法跟show函数一样,只不过它是用来实现元素隐藏时的动画。我们在上述代码的基础上实现了一个演示hide函数的示例,参考代码如下所示。

示例9.15

//部分代码省略,跟示例9.14一样

<script>$(function() {function runEffect() {var selectedEffect =$("#effectTypes").val();$("#effect").hide(selectedEffect,null, "slow", callback);};function callback() {$("#effect").removeAttr("style");};$("#btn").click(function() {runEffect();});});</script>

//部分代码省略,跟示例9.14一样

上述代码除脚本外都和上个示例一样,斜体部分调用了hide函数,把下拉列表框中选中项的值作为第一个参数使用。

9.1.1         effect函数

effect函数的用法和show/hide函数一样,只不过该函数用在已经显示到了页面上的元素,然后主要通过改变元素形状(大小、位置等)来实现动画特效的,具体语法如下所示:

语法

jQuery对象 . effect ( effectName , [options] , [speed] , [callback] )

各个参数在前面已经讲过,这里不再多述。

下面我们修改上面的代码,使用effect函数来演示各种动画特效,参考代码如下所示。

示例9.16

//部分代码省略,跟示例9.14一样

<script>$(function() {function runEffect() {var selectedEffect =$("#effectTypes").val();$("#effect").effect(selectedEffect,null, "slow", callback);};function callback() {$("#effect").removeAttr("style");};$("#btn").click(function() {runEffect();});});</script>

//部分代码省略,跟示例9.14一样

9.1.1         下载主题

主题即Themes,是指一整套、一系列样式的集合,相当于网页的皮肤。jQuery为UI组件提供了现成的多个主题,我们可以从其官方网站( http://jqueryui.com/download )上直接下载si-font-family:Calibri;mso-bidi-font-family:"Times New Roman";mso-ansi-language:EN-US;mso-fareast-language:ZH-CN;mso-bidi-language:AR-SA'>函数,把下拉列表框中选中项的值作为第一个参数使用。

选择一个主题,例如“UIlightness”,下载后会得到一个压缩包文件,该文件中包含了大量的CSS样式文件、图片和JS文件等。

9.1.1         应用主题

解压下载到的主题压缩文件,找到其中以主题名命名的文件夹,例如ui-lightness,该文件夹中存放的就是跟该主题相关的CSS样式文件和图片,哪个网页需要用这个主题只需要导入其中的jquery.ui.all.css样式文件即可。

前面我们写的示例没有应用任何主题,例如下面的代码:

//其他代码省略

<link rel="stylesheet" href="../../themes/base/jquery.ui.all.css">

<scriptsrc="../../jquery-1.7.2.js"></script>

<scriptsrc="../../ui/jquery.ui.core.js"></script>

<scriptsrc="../../ui/jquery.ui.widget.js"></script>

//其他代码省略

加粗部分使用link标签导入了base文件夹中的jquery.ui.all.css文件,该文件是jQuery UI默认无主题样式。如果需要使用某个主题,例如lightness,只需做如下修改即可:

<link rel="stylesheet"href="../../themes/ui-lightness/jquery.ui.all.css">

jQuery UI主题比较多,这里不再一一展现效果图了。另外,jQuery官方网站还提供了自定义主题的功能,地址是http://jqueryui.com/themeroller/。如需自定义主题,可以访问该地址,自定义好后jQuery会自动生成相关的主题文件,我们只需下载下来即可。

本章总结

本章我们主要学习jQuery UI,包括微件、交互行为组件、动画效果库以及主题。微件是jQuery提供的现成的一些页面控件,简单易用;交互行为组件主要指的是用户通过鼠标可以进行拖拽和调整大小;动画效果库提供了大量的动画样式,通过一些函数即可实现。

主题就是UI的皮肤,jQuery在其官方网站上提供了多个主题,我们可以根据需要下载使用。

任务实训部分

1:实现工具栏

训练技能点

Ø        jQuery  Button组件

需求说明

使用jQuery Button组件实现工具栏。

实现步骤

(1)实现图9.2.1所示的界面,参考代码如下所示。

<div class="demo">
<span id="toolbar" class="ui-widget-headerui-corner-all"><buttonid="beginning">go to beginning</button><buttonid="rewind">rewind</button><buttonid="play">play</button><buttonid="stop">stop</button><buttonid="forward">fast forward</button><buttonid="end">go to end</button><inputtype="checkbox" id="shuffle" /><labelfor="shuffle">Shuffle</label><spanid="repeat"><input type="radio" id="repeat0"name="repeat" checked="checked" /><label for="repeat0">No Repeat</label><input type="radio" id="repeat1"name="repeat" /><labelfor="repeat1">Once</label><input type="radio" id="repeatall"name="repeat" /><labelfor="repeatall">All</label></span>
</span>
</div>

(2)调用jQuery中的button函数改变按钮的样式,部分参考代码如下所示。

$( "#beginning" ).button({text: false,icons: {primary: "ui-icon-seek-start"}});$( "#rewind" ).button({text: false,icons: {primary: "ui-icon-seek-prev"}});$( "#play" ).button({text: false,icons: {primary: "ui-icon-play"}})

2:手风琴相册

训练技能点

Ø        jQuery  Accordion组件

需求说明

实现图9.2.2所示的界面,右侧是手风琴效果,主要是图片介绍,左侧显示相关的图片。切换手风琴中的分组时,左侧图片发生相应的改变。

图9.2.2  手风琴相册

3:可拖动的菜单

训练技能点

Ø        jQuery  Draggable

需求说明

在实训任务1的基础上,实现通过鼠标可以拖动工具栏,但是只能拖动到页面的上端或下端。如果拖动到了其他地方,当松开鼠标时,工具栏回归原位。

4:来信闪烁

训练技能点

Ø        jQuery  effect函数

需求说明

图9.2.3是一个QQ工具栏,现在要求使用effect函数使工具栏上的邮箱图标闪烁。

图9.2.3  来信闪烁

实现思路

邮箱图标是一个图片,只需要使用effect函数实现该图片的闪烁效果即可。

关键代码

<link href="jquery.ui.all.css"type="text/css" rel="stylesheet"/>

<script src="jquery-1.7.2.min.js"></script>

<scriptsrc="jquery.effects.pulsate.js"></script>

<script src="jquery.effects.core.js"></script> </head> <body>

$("#ad").effect("pulsate",null,500,null);

<div id="ad"><img src="9.2.4.jpg"/></div> </body> </html> <script>

</script>

5:更换主题

训练技能点

Ø        jQuery主题

需求说明

从jQuery官方网站上下载一个UI主题,然后把前面的实训任务改成这个主题。

WEB入门之十九 UI相关推荐

  1. UWP开发入门(十九)——10分钟学会在VS2015中使用Git

    原文:UWP开发入门(十九)--10分钟学会在VS2015中使用Git 写程序必然需要版本控制,哪怕是个人项目也是必须的.我们在开发UWP APP的时候,VS2015默认提供了对微软TFS和Git的支 ...

  2. Web前端入门(十九)传统网页布局式之标准流、浮动

    总目录:https://blog.csdn.net/treesorshining/article/details/124725459 文章目录 1.标准流 2.浮动 2.1 浮动概述 2.2 浮动的特 ...

  3. cas入门之十九:https形式发布cas证书制作

    cas 默认是以https 协议发布的,我一直对这个问题避而不谈,因为这个涉及到ssl协议,不是那么容易搞的.我在公司应用cas也是以http协议发布的,因为这个集成公司内网应用,没有必要弄一个证书, ...

  4. WEB入门之十八 动画特效

    视频课:https://edu.csdn.net/course/play/7621 学习内容 jQuery显示/隐藏动画 jQuery滑动特效 jQuery淡入淡出特效 jQuery自定义动画特效 能 ...

  5. Apache Flink 零基础入门(十九)Flink windows和Time操作

    Time类型 在Flink中常用的Time类型: 处理时间 摄取时间 事件时间 处理时间 是上图中,最后一步的处理时间,表示服务器中执行相关操作的处理时间.例如一些算子操作时间,在服务器上面的时间. ...

  6. 大数据WEB阶段(十九)Threadlocal

    ThreadLocal 一.ThreadLocal概述 本地线程变量 本质上是一种利用线程的执行由程序的上游向下游传递信息的机制 Thread对象内置了一个Map来存取消息 , 但是这个 Map外界无 ...

  7. Hadoop入门(十九)Mapreduce的最大值程序

    一.简介 最大值是统计中最常使用到的,现在使用Mapreduce在海量数据中统计数据的最大值. 二.例子 (1)实例描述 给出三个文件,每个文件中都存储了若干个数值,求所有数值中的最大值. 样例输入: ...

  8. 入门机器学习(十九)--推荐系统(Recommender Systems)

    推荐系统(Recommender System) 1. 问题规划(Problem Formulation) 2. 基于内容的推荐系统(Content Based Recommendations) 3. ...

  9. 【web前端(三十九)】javascript_jquery操作样式

    <!DOCTYPE html> <html><head><meta charset="UTF-8"><title>操作样 ...

最新文章

  1. php数组只保留键值,php合并数组并保留键值的实现方法
  2. jmeter根据循环获取参数_jmeter forEach循环获取response参数值进行接口请求
  3. Combo box的使用
  4. java 设置pdf 编码格式_Java如何设置PDF文档背景色详解
  5. 父类对象由子类实例化【转载】
  6. fullpage.js使用指南
  7. arp表老化时间及其修改
  8. Docker部署Nebula Graph2.0和Studio
  9. 科普 | 天才在左,疯子在右
  10. JPEG文件二进制格式分析
  11. 和的区别(与) 和 ||和|的区别(或)
  12. Netcdf4.4的安装过程(附netcdf4.1.3的安装过程)
  13. EndNote导入文献出现带有大括号{}乱码的解决办法
  14. RFC7515- JSON Web Signature (JWS)(JSON Web签名)
  15. 沈航计算机学院杨华,【沈航新青年·实践】电子信息工程学院“电信筑梦,科技振兴”暑期社会实践活动纪实...
  16. 2021C++秋招复盘(斩获许多大厂offer,含个人笔记链接,求赞!!!)
  17. 淘宝电商:淘宝卖家如何快速提升店铺自然搜索流量?
  18. sql的简单的增删改查
  19. spring 整合c3p0连接池
  20. Oracle中coalesce函数的用法

热门文章

  1. Spring5参考指南:Bean的创建
  2. 【解题报告】Leecode 35. 搜索插入位置——Leecode刷题系列
  3. 关于华为P40登录谷歌闪退的问题
  4. 17行代码AC——L1-030 一帮一 (15分)(解题报告)
  5. Mysql俩种表级锁
  6. python和台达plc通讯_台达PLC通信协议ModbusASCII(DVP)
  7. shell脚本详解(十二)——Here Document免交互及Expect自动化交互
  8. 苹果电脑适合python吗_m1的MacBook pro适合python开发吗?
  9. 中标麒麟linux系统忘记root密码,中标麒麟(龙芯CPU)--忘记root密码怎么修改?
  10. 接受map_[译] 图解 Map、Reduce 和 Filter 数组方法