首页 > web前端 > js教程 > 正文

基于jQuery的JavaScript UI设计

高洛峰
发布: 2016-11-28 13:37:39
原创
1718人浏览过

jquery ui 是以 jquery 为基础的开源 javascript 网页用户界面代码库,是jquery官方推出的配合jquery使用的用户界面组件集合!包含了许多的界面操作功能。

无论是jQuery UI 还是jQuery的EasyUI框架都能够帮助你,使你建立你的网页很容易。

 

jQuery UI 或者easyui是一个用户界面插件集合jQuery的基础。

使用jQuery UI 或者easyui你不需要写很多JavaScript代码,你通常定义写一些HTML标记的用户界面。

立即学习Java免费学习笔记(深入)”;

jQuery UI 或者easyui是很容易的,但功能强大。

 

使用jQuery UI或者easyui你都需要在你的页面中加入一些js和css文件,当然,你也可以自己去定义自己需要的css。

jQuery UI和easyui都是一些我们可以拿来使用的工具,他们都封装好了,他们经过了不同版本的编写,让我们在使用的时候不用去考虑浏览器兼容性,免去了在写页面时候最容易出现的不同浏览器间不能够兼容的问题,可以直接使用,是真正的“拿来主义”。

 

 

jQuery UI和easyui他们所提供的插件的功能有所不同。

jQuery UI所提供的功能共有三大类,其中包括Interactions,Widgets,和Effects。

Interactions中包含Draggable,Droppable,Resizable,Selectable,Sortable这些功能供我们选择,

Widgets类中包含Accordion,Datepicker,Dialog,Progressbar,Slider,Tabs这些不同的功能。

Effects类中包含Add Class,Remove Class,Animate,Effect,show,Switch Class,Toggle,Toggle Class这些功能。

每一个功能都会有不同的属性呈现不同的效果,稍后我会具体的讲解每一个功能的用法。

 

而easyui共包含7大类。

第一类是Base,包含EasyLoader,Draggable,Droppable,Resizable四个方面。

第二类是Layout,包含Panel,Tabs,Accordion,Layout四个方面。

第三类是Menu and Button,包含Menu,Link Button,Menu Button,Split Button四个创建按钮的效果。

第四类是Form,包含Form,ComboBox,ComboTree,NumberBox,ValidateBox,DateBox,Calendar这几个不同的表单需求。

第五类是Window,包含window,Dialog,Message。

第六类是DataGrid and Tree, 包含Pagination,DataGrid,Tree。

 

 

 

 

我们先来看一下jQuery UI各个功能的具体用法。

我们从Interactions中的Draggable开始。

"EN-US">Draggable有较多的效果,从它所给出方法的参数不同,可以达到不同的效果,它所要用到jquery-1.3.2.js,ui.core.js,ui.draggable.js这三个js文件。它所给出的方法是draggable(),给它不同的参数,它可以实现种不同的效果。

我们先看一下它是第一个效果(默认属性)(Default functionality),可以在页面中用鼠标随意拖动一个DOM element在你可以看见的范围内,它所用的代码为:

<script type="text/javascript">

       $(function() {

              $("#draggable").draggable();

       });

</script>

很简单,只要这几行代码你就可以实现一个javascript特效。

我们再看第二个效果(Events)下面这段代码:

<script type="text/javascript">

              $(function() {

                     var $start_counter = $('#event-start'), $drag_counter = $('#event-drag'), $stop_counter = $('#event-stop');

                     var counts = [0,0,0];

 

                     $("#draggable").draggable({

                            start: function() {

                                   counts[0]++;

                                   updateCounterStatus($start_counter,counts[0]);

                            },

                            drag: function() {

                                   counts[1]++;

                                   updateCounterStatus($drag_counter,counts[1]);

                            },

                            stop: function() {

                                   counts[2]++;

                                   updateCounterStatus($stop_counter,counts[2]);

                            }

                     });

              });

 

              function updateCounterStatus($event_counter,new_count) {

                     // first update the status visually...

                     if (!$event_counter.hasClass('ui-state-hover')) {

                            $event_counter.addClass('ui-state-hover')

                                   .siblings().removeClass('ui-state-hover');

                     }

                     // ...then update the numbers

                     $('span.count',$event_counter).text(new_count);

              }

       </script>

这段代码比之前的代码要复杂,所实现的效果也更多,它可以计算你共拖动了多少次DOM和你共拖动了多少距离。

它通过在draggable方法内增加的一个数组counts来存储开始和结束时的次数,和你一共拖动的距离。

我们再看第三个效果(Constrain movement),代码:

<script type="text/javascript">

       $(function() {

              $("#draggable").draggable({ axis: 'y' });

              $("#draggable2").draggable({ axis: 'x' });

             

              $("#draggable3").draggable({ containment: '#containment-wrapper', scroll: false });

              $("#draggable4").draggable({ containment: '#demo-frame' });

              $("#draggable5").draggable({ containment: 'parent' });

       });

</script>

分别调用了五次draggable方法,每次都给draggable方法不同的参数,实现不同的效果。第一个方法调用是让DOM只能够上下移动,第二个方法调用实现让DOM只能够左右移动,第三个方法调用实现让DOM只能在给它规定的box内移动,第四个方法调用就实现可以在box外移动,而第五个方法调用则是让DOM只能在它的父节点内移动。

第四个效果(Delay start),代码:

       <script type="text/javascript">

       $(function() {

              $("#draggable").draggable({ distance: 20 });

              $("#draggable2").draggable({ delay: 1000 });

              $(".ui-draggable").disableSelection();

       });

       </script>

它给的参数有一定的限制作用,例如distance:20,就说明你必须要拖动20px以上它才会有效果,否则它是不会让你拖动的,而delay则是延时,是说你要等到1000ms以后你才能够拖动它。

第五个效果(Snap to element or grid)

       </style>

       <script type="text/javascript">

       $(function() {

              $("#draggable").draggable({ snap: true });

              $("#draggable2").draggable({ snap: '.ui-widget-header' });

              $("#draggable3").draggable({ snap: '.ui-widget-header', snapMode: 'outer' });

              $("#draggable4").draggable({ grid: [20,20] });

              $("#draggable5").draggable({ grid: [80, 80] });

       });

       </script>

第一个参数是DOM可以自动吸附在其它的box边缘上,第二个参数是让DOM可以吸附在大的box边缘,里外侧都可,第三个参数让DOM只能吸附在box的外侧,而里侧没有效果,第四个参数是让DOM只能移动到20,20的倍数这样的地方,第五个参数和第四个参数是一样的,只是给的数据不同。

第六个效果(Auto-scroll)

<script type="text/javascript">

       $(function() {

              $("#draggable").draggable({ scroll: true });

              $("#draggable2").draggable({ scroll: true, scrollSensitivity: 100 });

              $("#draggable3").draggable({ scroll: true, scrollSpeed: 100 });

       });

</script>

 

 

第七个效果(Revert position)

<script type="text/javascript">

       $(function() {

              $("#draggable").draggable({ revert: true });

              $("#draggable2").draggable({ revert: true, helper: 'clone' });

       });

</script>

参数revert设定,使DOM被拖动后返回原来的位置。加上helper:’clone’属性,则在拖动的时候在原先DOM的地方依旧显示DOM。

 

第八个效果(Visual feedback)

<script type="text/javascript">

       $(function() {

              $("#draggable").draggable({ helper: 'original' });

              $("#draggable2").draggable({ opacity: 0.7, helper: 'clone' });

              $("#draggable3").draggable({

                     cursor: 'move',

                     cursorAt: { top: -12, left: -20 },

                     helper: function(event) {

                            return $('<div class="ui-widget-header">I'm a custom helper</div>');

                     }

              });

              $("#set div").draggable({ stack: { group: '#set div', min: 1 } });

       });

</script>

第一个DOM可以正常的拖动,第二个DOM拖动后会返回原来的位置,helper属性上面讲过了,opacity属性则是设定DOM的透明度。第三个DOM在你实施拖动的时候,会显示一个I'm a custom helper的DIV给你。

而后面三个DOM,每拖动一个DOM会让被拖动的DOM在其它的两个DOM外层,也就是最上面。

第九个效果(Drag handle)

<script type="text/javascript">

       $(function() {

              $("#draggable").draggable({ handle: 'p' });

              $("#draggable2").draggable({ cancel: "p.ui-widget-header" });

              $("div, p").disableSelection();

       });

</script>

在这两个DOM中每个DIV中都嵌套一个p标签,每个handle属性表明鼠标在点击在P标签上才能够拖动DOM,而第二个cancel表明要点击在不是P标签的DIV中才能够拖动DOM。

第十个效果(Cursor style)

<script type="text/javascript">

       $(function() {

              $("#draggable").draggable({ cursorAt: { cursor: 'move', top: 56, left: 56 } });

              $("#draggable2").draggable({ cursorAt: { cursor: 'crosshair', top: -5, left: -5 } });

              $("#draggable3").draggable({ cursorAt: { bottom: 0 } });

       });

</script>

第一个DOM中的参数是说在拖动DOM的时候,在水平方向上移动,会先向相反的方向移动56px,垂直方向上也是一样。第二个DOM说明在小范围移动或者双击时会让DOM往上移动-5,左移动-5,实际上就是向下和向右各移动5,第三个DOM是在小范围拖动或双击时会向上移动。

第十一个效果(Draggable + sortable)

<script type="text/javascript">

       $(function() {

              $("#sortable").sortable({

                     revert: true

              });

              $("#draggable").draggable({

创客贴设计
创客贴设计

创客贴设计,一款智能在线设计工具,设计不求人,AI助你零基础完成专业设计!

创客贴设计 51
查看详情 创客贴设计

                     connectToSortable: '#sortable',

                     helper: 'clone',

                     revert: 'invalid'

              })

              $("ul, li").disableSelection();

       });

</script>

以上代码是让页面中的ul和li元素在拖动的同时呈现出sortable的效果。

 

第二个介绍的是 "EN-US">droppable,它包含有六个效果,它分别要用到 "EN-US">jquery-1.3.2.js, "EN-US">ui.core.js, "EN-US">ui.droppable.js, "EN-US">ui.draggable.js这四个js文件。

 

先看第一个(Default functionality)

<script type="text/javascript">

       $(function() {

              $("#draggable").draggable();

              $("#droppable").droppable({

                     drop: function(event, ui) {

                            $(this).addClass('ui-state-highlight').find('p').html('Dropped!');

                     }

              });

 

       });

</script>

上面代码表示当DOM拖动到指定的DOM中,该DOM背景色变,增加一个class效果。

第二个(Accepted elements),代码:

<script type="text/javascript">

       $(function() {

 

              $("#draggable, #draggable-nonvalid").draggable();

 

              $("#droppable").droppable({

                     accept: '#draggable',

                     activeClass: 'ui-state-hover',

                     hoverClass: 'ui-state-active',

                     drop: function(event, ui) {

                            $(this).addClass('ui-state-highlight').find('p').html('Dropped!');

                     }

              });

 

       });

</script>

上面代码分别给两个DOM都用了Draggable方法让其可以拖动,然后对其第二个DOM用了droppable()方法,并且给了hoverCalss,让拖动到指定的DOM上浮动时候也产生效果,并且当放开鼠标后再次产生一个效果。

第三个(Prevent propagation),代码:

<script type="text/javascript">

       $(function() {

 

              $("#draggable").draggable();

 

              $("#droppable, #droppable-inner").droppable({

                     activeClass: 'ui-state-hover',

                     hoverClass: 'ui-state-active',

                     drop: function(event, ui) {

                            $(this).addClass('ui-state-highlight').find('> p').html('Dropped!');

                            return false;

                     }

              });

 

              $("#droppable2, #droppable2-inner").droppable({

                     greedy: true,

                     activeClass: 'ui-state-hover',

                     hoverClass: 'ui-state-active',

                     drop: function(event, ui) {

                            $(this).addClass('ui-state-highlight').find('> p').html('Dropped!');

                     }

              });

 

       });

</script>

首先给第一个DOM可以拖动的效果,然后给第二个大DOM和第三个DOM都调用droppable()方法,所不同的是第二个方法中在调用drop时候返回一个false,而第三个不返回,第三个DOM在一开始就调用greedy:true,它们分别表示了,当将第一个DIV拖动到同级的第二个DIV的时候,如果拖动到它同级的DIV上时,只有外层DIV会产生效果,如果拖动到内层的DIV时,则整个DIV都产生效果,也就是包含外层同级的DIV,而第三个函数调用后只是你拖动到哪个层的DIV,哪个层的DIV产生效果。

第四个(Visual feedback)代码:

<script type="text/javascript">

       $(function() {

              $("#draggable").draggable();

              $("#droppable").droppable({

                     hoverClass: 'ui-state-active',

                     drop: function(event, ui) {

                            $(this).addClass('ui-state-highlight').find('p').html('Dropped!');

                     }

              });

             

              $("#draggable2").draggable();

              $("#droppable2").droppable({

                     accept: "#draggable2",

                     activeClass: 'ui-state-hover',

                     drop: function(event, ui) {

                            $(this).addClass('ui-state-highlight').find('p').html('Dropped!');

                     }

              });

 

       });

</script>

这个也同样让其中两个DOM可以拖动让另外两个相对应的DOM上,这次相对应的两个DOM分别调用了hoverCalss和activeClass以产生不同的效果。他们都是在鼠标拖动DOM浮动在其上所表现出的不同。

第五个(Revert draggable position)代码:

<script type="text/javascript">

       $(function() {

 

              $("#draggable").draggable({ revert: 'valid' });

              $("#draggable2").draggable({ revert: 'invalid' });

 

              $("#droppable").droppable({

                     activeClass: 'ui-state-hover',

                     hoverClass: 'ui-state-active',

                     drop: function(event, ui) {

                            $(this).addClass('ui-state-highlight').find('p').html('Dropped!');

                     }

              });

 

       });

</script>

同样,给其中两个DOM可拖动效果,然后分别拖动两个DOM到指定的DOM上。他们在调用draggable()方法时就给了不同的revert参数,让其分别拖动到指定DOM上产生不同效果,第一个效果是当拖动到指定的DOM上后,它返回到原来的位置,而指定的DOM也产生相应的效果,第二个效果是当拖动到指定的DOM上后,指定DOM产生相应效果,当把其再拖出时,它返回到原来所在DOM的位置。

第六个(Simple photo manager),代码:

<script type="text/javascript">

                     $(function() {

                            // there's the gallery and the trash

                            var $gallery = $('#gallery'), $trash = $('#trash');

 

                            // let the gallery items be draggable

                            $('li',$gallery).draggable({

                                   cancel: 'a.ui-icon',// clicking an icon won't initiate dragging

                                   revert: 'invalid', // when not dropped, the item will revert back to its initial position

                                   containment: $('#demo-frame').length ? '#demo-frame' : 'document', // stick to demo-frame if present

                                   helper: 'clone',

                                   cursor: 'move'

                            });

 

                            // let the trash be droppable, accepting the gallery items

                            $trash.droppable({

                                   accept: '#gallery > li',

                                   activeClass: 'ui-state-highlight',

                                   drop: function(ev, ui) {

                                          deleteImage(ui.draggable);

                                   }

                            });

 

                            // let the gallery be droppable as well, accepting items from the trash

                            $gallery.droppable({

                                   accept: '#trash li',

                                   activeClass: 'custom-state-active',

                                   drop: function(ev, ui) {

                                          recycleImage(ui.draggable);

                                   }

                            });

 

                            // image deletion function

                            var recycle_icon = '<a href="http://www.php1.cn/">

                            function deleteImage($item) {

                                   $item.fadeOut(function() {

                                          var $list = $('ul',$trash).length ? $('ul',$trash) : $('<ul class="gallery ui-helper-reset"/>').appendTo($trash);

 

                                          $item.find('a.ui-icon-trash').remove();

                                          $item.append(recycle_icon).appendTo($list).fadeIn(function() {

                                                 $item.animate({ width: '48px' }).find('img').animate({ height: '36px' });

                                          });

                                   });

                            }

 

                            // image recycle function

                            var trash_icon = '<a href="http://www.php1.cn/">

                            function recycleImage($item) {

                                   $item.fadeOut(function() {

                                          $item.find('a.ui-icon-refresh').remove();

                                         $item.css('width','96px').append(trash_icon).find('img').css('height','72px').end().appendTo($gallery).fadeIn();

                                   });

                            }

 

                            // image preview function, demonstrating the ui.dialog used as a modal window

相关标签:
java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号