• jQueryUI


     

    前言

    作为一个的后端开发人员,把前端技术做到很好这显然是矛盾的,如果所处团队没有前端人员,使用UI框架到也不失为一个不错的选择,UI框架有很多例如bootstrap、easyUI....本文主要介绍jQueryUI;

    概述

    Query UI 是建立在JavaScript、 jQuery之上的UI库,主要包含:交互组件、部件、高级效果....

     下载:https://jqueryui.com/download/

     官网: https://jqueryui.com/

     文档: http://www.css88.com/jquery-ui-api/、 其他

    一、交互组件

    交互组件主要是一些以鼠标为核心的用户操作,比如:拖动、放置、拆分、排序、跳转元素大小....;

    1. Draggable组件

    顾名思义Draggable组件可以帮助我们随意鼠标拖动网页中的标签;

    1.0 初探

    $('#zhanggen').draggable() //随意拖动;

    1.1 常见配置

    $('#zhanggen').draggable({{axis:'x'})                                          //沿着X轴拖动

    $('#zhanggen').draggable({{axis:'y'})                                          //沿着Y轴拖动

    $('#zhanggen').draggable({containment:"window" })                  //限制拖动区域: window/document(当前窗口/文档树)/ parent(父级标签)  默认:fase

    $('#zhanggen').draggable({ containment:[0,0,200,200 ]  })        //通过坐标位置限制拖动区域  

    $('#zhanggen').draggable({ containment:'#dragg_zone' })         //通过选择器 限制在某标签内拖动

    $('#zhanggen').draggable({distance:10})           //鼠标移动N px之后再移动

    $('#zhanggen').draggable({delay:2000})            //延时拖动 (单位毫秒)

    $('#zhanggen').draggable({grid:[100,100] })      //按照 每次移动100px 的步伐 拖动   

    snap:'#dragg_zone'  //吸附到目标 元素(滑动验证效果)

    snapMode:"inner"     //指定吸附到目标盒子的 哪里? inner/outer/both

    snapTolerance:100   //多大间距 开始吸附

    helper:'clone'            //设置拖动分身 而非本身

    1.2 常见方法

     var option=$('.zhanggen').draggable('option','helper');                             // 检查是否配置某选项?有返回配置项,没有返回false!

    var option=$('.zhanggen').draggable('option','helper');                              // 查看是否配置某选项?有返回配置项,没有返回false!

    var option=$('.zhanggen').draggable('option','helper');                              // 查看所有配置

    var option=$('.zhanggen').draggable('option','helper','clone') ;                  //设置

    var option=$('.zhanggen').draggable('option',{'helper':'clone', 'axis':'x'});   //设置多选配置

    
    

    1.3 触发事件

    create :拖动组件被创建时执行

    start:开始拖动执行

    drag:拖动中执行

    stop:停止拖动执行

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="/static/jquery-3.2.1.min.js"></script>
        <script src="/static/plugin/jquery-ui-1.11.4/jquery-ui.min.js"></script>
        <link rel="stylesheet" href="/static/plugin/jquery-ui-1.11.4/jquery-ui.min.css">
        <style>
            *{
                margin: 0;
            }
            div{
                display: inline-block;
                height: 40px;
            }
            #box{
                display: inline-block;
                 border: 1px solid red;
                width: 100%;
    
            }
    
            .zhanggen {
                width: 40px;
    
                background: #c0a16b;
    
    
            }
            #dragg_zone {
                width: 40px;
                background: slateblue;
                margin-left: 300px;
            }
        </style>
        <script>
            $(function () {
                $('.zhanggen').draggable({
                    axis:'x', //只能沿X轴拖动
                  //axis:'y', //只能沿X轴拖动
                    containment:"#box", //限制拖动区域 window/document(当前窗口/文档)、parent(父级标签) 默认:fase
                    //  containment:[0,0,200,200 ] //按坐标定位
                    {#               distance:10, //鼠标移动N px之后再移动#}
                    {#               delay:2000,//延时拖动 (单位毫秒)#}
                    {#                grid:[100,100], //按每次100px的步伐 拖动#}
                    snap: '#dragg_zone',//吸附到目标 元素(滑动验证效果)
                    snapMode: "inner",//吸附到目标元素的 哪里? inner/outer/both
                    snapTolerance: 100,//多大间距 快开吸附
                    helper: 'clone',//设置拖动分身 而非本身
                    containment: 'windown',//限制 在某标签内拖动
    
                    create: function (e, ui) {
                    console.log('开启拖动效果')
                    },
                    start:function (e,ui) {
                        console.log('开始拖动')
                    },
                    drag:function (e,ui) {
                        console.log('正在拖动')
                    },
                    stop:function () {
                        alert('验证成功');
                        window.location.href='https://m.anysex.com/categorys/'
                    }
    
    
                });
                //$('.zhanggen').draggable( 'destroy') //注销拖动效果
                {#            $('.zhanggen').draggable( 'disable'); //禁用拖动效果#}
                {#            $('.zhanggen').draggable( 'enable');  //开启拖动效果#}
                {#            var option=$('.zhanggen').draggable('option','helper');// 查看是否配置某选项?有返回配置项,没有返回false!#}
                {#            var option=$('.zhanggen').draggable('option','helper');// 查看所有配置#}
                {##}
                {#            var option=$('.zhanggen').draggable('option','helper','clone');//设置#}
                {#            var option=$('.zhanggen').draggable('option',{'helper':'clone', 'axis':'x'});//设置多选配置#}
    
    
            })
        </script>
    </head>
    <body>
    <div id="box">
    <div class="zhanggen"></div>
    <div id="dragg_zone"></div>
     </div>
    </body>
    </html>
    滑动验证

    2.droppable组件

    droppable和Draggable组件相呼应,拖动一个可元素( Draggable)到达droppable元素之后产生的一系列效果;

    2.0 初探

     <script>
            $(function () {
                $('.zhanggen').draggable({
                    axis:'x',
                    containment:"#box"
                    });
                $('#dragg_zone').droppable({
                    drop:function (event,ui) {
                        alert('你想压死我了啊?')//被拖动元素 和接收元素 重叠并释放鼠标,触发!
                    }
                })
    
            })
        </script>

    2.1 常见配置

    accept:'.zhanggen'              //设置接受的 拖动元素

    accept:function (drag) { console.log(drag)}  // 设置拖动所有可拖动元素,释放鼠标时被执行,return true才可以被接收元素接收

    activeClass:'class1'             //拖拽时 为接收元素 增加一个class类

    hoverClass:'class1'             //可拖动元素经过 接收元素时 新增1个类

    tolerance:'touch'         //触发over事件时机;可拖动元素和放置元素完全重叠 / ntersect:至少重叠50% / pointer:中心点重叠 touch:只有触碰到

    scope:"值"                                    //使 Draggable和droppable设置的值一致,则产生配对(默认为default)

    2.2. 触发事件

    over:function                                    //Draggable 经过 droppable触发

    drop:function          //Draggable 和 droppable重叠并释放鼠标之后触发

    out:function           //Draggable 离开 droppable

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="/static/jquery-3.2.1.min.js"></script>
        <script src="/static/plugin/jquery-ui-1.11.4/jquery-ui.min.js"></script>
        <link rel="stylesheet" href="/static/plugin/jquery-ui-1.11.4/jquery-ui.min.css">
        <style>
            *{
                margin: 0;
            }
            div{
                display: inline-block;
                height: 40px;
            }
            #box{
                display: inline-block;
                 border: 1px solid red;
                width: 100%;
    
            }
    
            .zhanggen {
                width: 40px;
                background: #c0a16b;
    
    
            }
            .dragg_zone {
                width: 40px;
                background: slateblue;
                margin-left: 300px;
            }
            .class1{
                background: springgreen;
    
            }
        </style>
        <script>
            $(function () {
                $('.zhanggen').draggable({
                    axis:'x',
                    scope:"aaa",
                    containment:"#box"
                    });
                $('.dragg_zone').droppable({
    {#                accept:'.zhanggen',                  //设置接受的 拖动元素#}
    {#                accept:function (drag) {             // 拖动所有可拖动元素,释放鼠标时被执行,return true才可以被接收元素接收#}
    {#                    console.log(drag);#}
    {#                    return true#}
    {#                },#}
    {#                activeClass:'class1',                //拖拽时 为接收元素 add一个类#}
    
                    hoverClass:'class1',                //可拖动元素经过 接收元素时 新增1个类
                    tolerance:'touch',                  //fit:可拖动元素和放置元素完全重叠  ntersect:至少重叠50% pointer:中心点重叠 touch:只有触碰到 触发over事件
                    scope:"aaa",                         //使 Draggable和droppable设置的值一致,则产生配对(默认为default)
    
    
                    over:function (ecen,ui) {            //Draggable 经过 droppable触发
                        console.log('经过 我上面了!')
                    },
                    drop:function (event,ui) {           //Draggable 和 droppable重叠并释放鼠标之后触发
                        ui.droppable.appendTO(this);
                            console.log('Draggable 和 droppable重叠并释放鼠标之后触发')
                    },
                    out:function (event,ui) {            //Draggable 离开 droppable
                        console.log('离开了!')
                    }
    
                })
    
            })
        </script>
    </head>
    <body>
    <div id="box">
    <div class="zhanggen" droppable=true></div>
    <div class="dragg_zone"></div>
     </div>
    </body>
    </html>
    回收站

    3.sortable组件

    使html元素,可拆分、排序;

    3.0 初探

    <script>
            $(function () {
                $('ul.u10').sortable()  //调用jQuery-ui 的sortable方法
    }) </script>

     3.1 常见配置

    connectWith: 'ul.ul1',     //设置可以拖动、连接到哪个容器

    dropOnEmpty: true,      //是否允许拖动、连接到一个空白容器中(注意设置 空白容器的高度)

    placeholder: 'placehodolder'   //拖动新元素时 新增1个class

    items:'> *'           //限制可移动的元素(默认是$('ul.ul0').sortable方法,所有子代)

    cancel:'> *'         //设置不可以拖动的元素

    var toArray_id=$('ul.ul0').sortable('toArray');  //返回1个 以排序元素id值 为内容的列表

    3.2 触发事件

    beforeStop:function (ele,ui) {}         //当排序元素排序完成后,触发的事件;

    change:function (ele,ui) {}               //当排序元素位置发生变化时,执行;

    receive:function () {}                     //连接的sortable中的元素,移动到当前sortable时触发该事件

    remove:function () {}                    //当前sortable中的元素,移动到连接的sortable中触发

    update:function () {}        //sortable中的元素在移动过程中,顺序发生变化触发,顺序没有变化不触发;

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="/static/jquery-3.2.1.min.js"></script>
        <script src="/static/plugin/jquery-ui-1.11.4/jquery-ui.min.js"></script>
        <link rel="stylesheet" href="/static/plugin/jquery-ui-1.11.4/jquery-ui.min.css">
        <style>
            body, ul {
                margin: 0;
                padding: 0;
            }
    
            ul {
                list-style: none;
                width: 50%;
                float: left;
            }
    
            ul li {
                width: 90%;
                height: 30px;
                border: 1px solid #ccc;
                margin: 5px auto;
            }
    
            .ul0_li {
                background: #eee;
            }
    
            .ul1_li {
                background: pink;
    
            }
    
            .placehodolder {
                background: silver;
                border: 1px dashed springgreen;
    
            }
        </style>
        <script>
            $(function () {
                $('ul.ul0').sortable({
                    connectWith: 'ul.ul1',            //设置可以拖动、连接到哪个容器
                    dropOnEmpty: true,                //是否允许拖动、连接到一个空白容器中(注意设置 空白容器的高度)
                    placeholder: 'placehodolder',   //拖动新元素时 新增1个class
                    items: '> *',                        //限制可移动的元素(默认是$('ul.ul0').sortable方法,所有子代)
                    cancel: '> *',                       //设置不可以拖动的元素
                    beforeStop: function (ele, ui) {       //当排序元素排序完成后,触发的事件;
                        console.log('一次拖动结束')
                    },
                    change: function () {                  //当排序元素位置发生变化时,执行;
                        console.log('动起来了!')
                    },
                    receive: function () {                //连接的sortable中的元素,移动到当前sortable时触发该事件
                        console.log('来喽!')
                    },
                    remove: function () {
                        console.log('走喽')              //当前sortable中的元素,移动到连接的sortable中触发
                    },
                    update: function () {
                        console.log('位置发生改变')      //sortable中的元素在移动过程中,顺序发生变化触发,顺序没有变化不触发;
                    }
    
                });
                $('ul.ul1').sortable({
                    connectWith: 'ul.ul0'            //设置可以拖动、连接到哪个容器
                });
                $('button').click(function () {
                    var toArray_id = $('ul.ul0').sortable('toArray');  //返回1个一排序元素id 为值为内容的列表
                    console.log(toArray_id)
                });
    
            })
        </script>
    </head>
    <body>
    <ul class="ul0">
        <li id="ul0_li0" class="ul0_li">0</li>
        <li id="ul0_li1" class="ul0_li">1</li>
        <li id="ul0_li2" class="ul0_li">2</li>
        <li id="ul0_li3" class="ul0_li">3</li>
        <li id="ul0_li4" class="ul0_li">4</li>
        <li id="ul0_li5" class="ul0_li">5</li>
        <li id="ul0_li6" class="ul0_li">6</li>
    </ul>
    <ul class="ul1">
        <li class="ul1_li">0</li>
        <li class="ul1_li">1</li>
        <li class="ul1_li">2</li>
        <li class="ul1_li">3</li>
        <li class="ul1_li">4</li>
        <li class="ul1_li">5</li>
        <li class="ul1_li">6</li>
    </ul>
    <button>确认</button>
    </body>
    </html>
    排行榜

    4.resizable组件

    通过鼠标动态调整html元素的大小;

    4.0 初探

    $('#div1').resizable() //可动态调整元素的大小

    4.1 常见配置

    containment:'#box'   //限制调整的大小

    alsoResize:'#img1'   //调整元素大小的同时 关联上其他元素(默认 false) 例如:动态调整图片的大小

    aspectRatio:true      //是否保持 宽/高比例不变形

    autoHide:true     //设置鼠标悬停之后,右下角拖拽把手显示

    maxWidth:1000    //限制最大调整 宽度

    handles:'e,s,se'     // 限制调整大小 方位

    4.2 触发事件

    create:function (event,ui) {}    //创建resizable 时触发

    start:function (event,ui){}             //开始调整时触发

    resize:function (event,ui) {}         //调整中实时触发

    stop:function (event,ui) {}            //调整结束之后触发

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="/static/jquery-3.2.1.min.js"></script>
        <script src="/static/plugin/jquery-ui-1.11.4/jquery-ui.min.js"></script>
        <link rel="stylesheet" href="/static/plugin/jquery-ui-1.11.4/jquery-ui.min.css">
        <style>
    
             #box{
                width: 1000px;
                height: 680px;
                border: solid 1px red;
                 padding: 10px;
            }
    
    
        </style>
        <script>
            $(function () {
                $('#box').resizable({             //可动态调整元素的大小
                //containment:'#box',              //限制调整的大小
                alsoResize:'#img1',             //调整元素大小的同时 关联上其他元素(默认 false)
                aspectRatio:true,               //是否保持 宽/高比例不变形
                autoHide:true,                   //设置鼠标悬停之后,右下角拖拽把手显示
                maxWidth:1000,                    //限制最大调整 宽度
                handles:'e,s,se',                 // 限制调整大小 方位
    
    
                create:function (event,ui) {       //创建resizable 时触发
                    alert('可调整大小了')
                },
                start:function (event,ui){          //开始调整时触发
                  console.log('开始调整啦!')
                },
                resize:function (event,ui) {        //调整中实时触发
                    console.log('调整中')
                },
                stop:function (event,ui) {          //调整结束之后触发
                    console.log('调整结束了!')
                }
                
    
                })
            })
        </script>
    </head>
    <body>
    <div id="box">
        <img id="img1" src="/static/666.jpg" >
    </div>
    </body>
    </html>
    大丈夫相框

    5、Selectable

    点击选中某个元素后发生css样式变化;

    5.0 初探

    $('ul.ul0').selectable();   

    5.1 常见配置

    cancel:'#0',         //设置不可以被选中的元素

    filter:'*'           //设置那些元素可以被选中

    5.2 事件

    start:function () {}      //选择开始执行的函数

    stop:function () {}      //选择结束执行的函数

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="/static/jquery-3.2.1.min.js"></script>
        <script src="/static/plugin/jquery-ui-1.11.4/jquery-ui.min.js"></script>
        <link rel="stylesheet" href="/static/plugin/jquery-ui-1.11.4/jquery-ui.min.css">
        <style type="text/css">
            ul.ul0 {
                list-style:none;
                margin:0 auto;
                width:80%;
            }
            ul.ul0 li {
                height:30px;
                background:#eee;
                border:1px solid #ccc;
                margin:10px 0;
            }
            .ui-selectable .ui-selected {
                background:pink;
                color:#fff;
            }
    </style>
        <script>
            $(function () {
                $('ul.ul0').selectable({
                    cancel:'#0',   //设置不可以被选中的元素
                    filter:'*',     //设置那些元素可以被选中
                    start:function () { //选择开始执行的函数
                        $('#div1').html('');
                        console.log('选择开始')
                    },
                    stop:function () { //选择结束执行的函数
                        $('.ui-selected',this).each(function (index,element) {
                            $('#div1').append($(element).html())
                        });
                        console.log('选择结束')
                    }
    
                });
            });
        </script>
    </head>
    <body>
    <ul class="ul0">
        <li id="0">0</li>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
    </ul>
    <div id="div1"></div>
    </body>
    </html>
    View Code

    二、部件

    部件是指对页面的功能扩展,比如按钮、菜单、日期采集、对话框....

    1.滑动条部件

    滑动条部件是在页面呈现一个滑动条,让用户滑动选择自己想要的值 ,而不必使用单调的input输入框; 

    1.0 初探

    $('#slider_wgedit').slider(); 

    1.1 常见配置

    animate:true            //滑动手柄将以默认的时间执行动画效果

    max:100            //设置滑动轨道的最大值

    min:0            //设置滑动轨道的最小值

    orientation:'horizontal'      //设置滑动的方向 horizontal(默认横向)、vertical(纵向)

    range:"min"           //设置从哪里 开始;最小或者最大(进度条)max|min|true

    step:10            //设置滑动步长,默认为1

    values:[10,50]         //设置默认节点

    1.2 常见事件

    create:function () {}               //滑动条创建完毕之后执行

    slide:function (evet,ui) {}            //滑动过程中触发

    change:function (evet,ui) {}       //滑动完成时触发

    1.3 界面

    .ui-slider-handle   滑动手柄的class
    .ui-slider-range    已滑动的区域的 class
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="/static/jquery-3.2.1.min.js"></script>
        <script src="/static/plugin/jquery-ui-1.11.4/jquery-ui.min.js"></script>
        <link rel="stylesheet" href="/static/plugin/jquery-ui-1.11.4/jquery-ui.min.css">
        <script>
            $(function () {
                $('#slider_wgedit').slider({
                    animate: true,//滑动手柄将以默认的时间执行动画效果
                    max: 100,      //设置滑动轨道的最大值
                    min: 0,      //设置滑动轨道的最小值
                    orientation: 'horizontal', //设置滑动的方向 horizontal(默认横向)、vertical(纵向)
                    range: "min",                //设置从哪里 开始;最小或者最大(进度条)max|min|true
                    step: 10,                      //设置滑动步长,默认为1
                    {#                values:[10,50],               //设置默认节点#}
    
                    create: function () {          //滑动条创建完毕之后执行
                        $(this).children('.ui-slider-handle').append('<i></i><i></i>')
                    },
                    slide: function (evet, ui) {      //滑动过程中触发
                        console.log()
                    },
                    change: function (evet, ui) {    //滑动完成时触发
                        console.log(ui)
                    }
                    /*
                    界面
                    .ui-slider-handle   滑动手柄的class
                    .ui-slider-range    已滑动的区域的 class
       
                     */
    
    
                });
            })
        </script>
        <style type="text/css">
            #sifangku {
                width: 420px;
                height: 28px;
                margin: 100px;
                background: #e8e8e8;
            }
    
            #sifangku .ui-slider-handle {
                width: 18px;
                height: 35px;
                background: #2dacd1;
            }
    
            #sifangku .ui-slider-handle i {
                display: inline-block;
                width: 2px;
                height: 12px;
                background: #68c3de;
                margin: 12px -3px 0px 6px;
            }
    
            #sifangku .ui-slider-range {
                background: #43bfe3;
                overflow: hidden;
            }
    
            #sifangku .ui-slider-range div.box {
                width: 420px;
            }
    
            #sifangku .ui-slider-range div.box div.sep div.data {
                color: #fff;
            }
    
            #sifangku .ui-slider-range div.box div.sep div.line {
                border-color: #2dacd1;
            }
    
            #sifangku div.sep {
                width: 105px;
                height: 28px;
                float: left;
            }
    
            #sifangku div.sep div.data {
                font-size: 13px;
                line-height: 28px;
                float: right;
                margin-right: 10px;
                color: #999;
            }
    
            #sifangku div.sep div.line {
                width: 1px;
                height: 28px;
                border-right: 1px solid #ddd;
                float: right;
            }
    
        </style>
        <script type="text/javascript">
            $(function () {
    
                $('#sifangku').slider({
                    range: 'min',
                    max: 200,
                    animate: true,
                    create: function () {
                        var html = '<div class="sep"><div class="line"></div><div class="data">50M</div></div>' +
                            '<div class="sep"><div class="line"></div><div class="data">100M</div></div>' +
                            '<div class="sep"><div class="line"></div><div class="data">150M</div></div>' +
                            '<div class="sep"><div class="data">200M</div></div>';
                        $(this).append(html);
                        $(this).children('.ui-slider-range').append('<div class="box">' + html + '</div>');
                        $(this).children('.ui-slider-handle').append('<i></i><i></i>');
                    },
                    slide: function (e, ui) {
                        $('#sValue').html(ui.value);
                    }
                });
            });
        </script>
    </head>
    <body>
    <div id="sifangku"></div>
    <div id="sValue"></div>
    </body>
    </html>
    滑动条部件

    2.按钮部件

    按钮部件不可快捷得实现更加饱满、美观的button;

    2.0 初探

    $('button').button()
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="/static/jquery-3.2.1.min.js"></script>
        <script src="/static/plugin/jquery-ui-1.11.4/jquery-ui.min.js"></script>
        <link rel="stylesheet" href="/static/plugin/jquery-ui-1.11.4/jquery-ui.min.css">
        <script>
            $(function () {
                $('button').button({
                    'label':'提交' //设置button的内容
                });
                $('#sex').buttonset();//设置radio 分组按钮
                $('#hobby').buttonset()
            })
        </script>
    </head>
    <body>
    <button id="zhanggen">点我</button>
    <div id="sex">
    <input type="radio" name="sex" id="boy"><label for="boy"></label>
    <input type="radio" name="sex" id="girl"><label for="girl"></label>
    </div>
    
    <div id="hobby">
    <input type="checkbox" name="hobby" id="eat"><label for="eat"></label>
    <input type="checkbox" name="hobby" id="sport"><label for="sport">运动</label>
    <input type="checkbox" name="hobby" id="girls"><label for="girls">美女</label>
    <input type="checkbox" name="hobby" id="boys"><label for="boys">帅哥</label>
    
    </div>
    </body>
    </html>
    代码

    3 进度条

     

    3.0 初探

    $('#zhanggen').progressbar() //生成进度条

    3.1 常见配置

    max:120,                               //设置进度条的最大值(默认为100)
    value:90                               //设置完成进度值 Number | false(模糊值,例如正在进行中!)

    3.2 常见方法

    $('#zhanggen').progressbar('value');       //设置进度值
    $('#zhanggen').progressbar('option','max')   //设置最大值

    3.3 事件

     create:function () {
                         console.log('创建完毕!')
                    },
    change:
    function () { console.log('进行中...') },
    complete:
    function(e,ui){   //进度条完成之后,触发的函数; alert('完成啦!'); }

    3.4 界面

    .ui-progressbar-value   //进度条已填充部分的class类

    4.微调部件(Spinner Widget)

    通过向上和向下箭头按键操作,调整文本输入框的值;

    4.0 初探

    $('#zhanggen').spinner(); 

    4.1 常见配置

        //disabled:true    //禁用输入框
        min:6,             //设置初始值
        step:2,            //设置步进
       max:10              //设置最大输入值

    4.2 常见方法

       $('#zhanggen').spinner('value',10);      //设置input中的值
       $('#zhanggen').spinner('stepUp');      //相当于 点击了一下向上按钮
       $('#zhanggen').spinner('stepUp');      //相当于 点击了一下向上按钮
       $('#zhanggen').spinner('stepDown');     //相当于 点击了一下向上按钮
       var v=$('#zhanggen').spinner('value');   //获取输入的值

     4.3 常见事件

               create:function (event,ui) {                 //创建完成之后执行
                        console.log('已创建!')
                    },
                    change:function (event,ui) {            //修改值,焦点离开之后执行
                        console.log('注意你做了内容修改!')
                    },  
                    start:function (event,ui) {            //1次微调开始执行
                         console.log('微调开始!')
                    },
                    spin:function (event,ui) {             //做微调的时候触发执行
                        console.log(ui.value)
                    },
                    stop:function (event,ui) {             //1次微调结束执行
                        console.log('微调结束!')
                    }
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="/static/jquery-3.2.1.min.js"></script>
        <script src="/static/jquery-ui-1.11.4.custom/jquery-ui-1.11.4.custom/jquery-ui.js"></script>
        <link rel="stylesheet" href="/static/jquery-ui-1.11.4.custom/jquery-ui-1.11.4.custom/jquery-ui.min.css">
        <style>
            span .unit{
                width: 40px;
                height: 20px;
                display: block;
                overflow: hidden;
                position: absolute;
                right: 25px;
                top: 3px;
            }
            input{
                outline: none;
                outline-color: red;
            }
        </style>
        <script>
            $(function () {
                $('#zhanggen').spinner({
                    //disabled:true    //禁用输入框
                    min:6,             //设置初始值
                    step:2,            //设置步进
                    max:10,              //设置最大输入值
    
                    create:function (event,ui) {  //创建完成之后执行
                        $(this).after('<span class="unit">Mbps</span>');
                        console.log('已创建!')
                    },
                    change:function (event,ui) {  //修改值,焦点离开之后执行
                        console.log('注意你做了内容修改!')
                    },
                    start:function (event,ui) {  //1次微调开始执行
                         console.log('微调开始!')
                    },
                    spin:function (event,ui) {  //做微调的时候触发执行
                        console.log(ui.value)
                    },
                    stop:function (event,ui) {  //1次微调结束执行
                        console.log('微调结束!')
                    }
                });
    
    
    
    
    
    
            })
        </script>
    </head>
    <body>
    
    <label for="zhanggen">带宽:</label><input id="zhanggen" type="text" value="0">
    </body>
    </html>
    微调部件

    5.下拉菜单部件(selectmenu)

    下拉菜单部件可以轻松得对原生select标签,做CSS样式优化;

    5.0 初探

    $('select').selectmenu()

    5.1 常见配置

     position:{my:'left top',at:'right bottom'}, //设置下拉option显示得位置
      100                                       //设置宽度

    5.2 常见方法

    $('select option:eq(2)').attr('selected','selected');
    $('select').selectmenu('refresh');  //刷新 selectmenu

    6.工具提示部件 tooltip Widget

    提示部件可以轻松得对设置title属性的标签,做CSS样式优化;

    6.0 初探

     $('#zhanggen').tooltip()

     6.1 常见配置

                    content:function () {         //设置提示内容 function | 字符串
                        //ajax 向后端请求!
                        return 1
                    },
                    tooltipClass:'class0',       //给提示div 增加class
                    track:true,                   //提示信息跟随鼠标移动
                    show:false,                   //提示信息显示效果
                    hide:'explode',               //提示信息消失效果
                    disabled:false                //设置禁用            
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="/static/jquery-3.2.1.min.js"></script>
        <script src="/static/jquery-ui-1.12.1.custom/jquery-ui.min.js"></script>
        <link rel="stylesheet" href="/static/jquery-ui-1.12.1.custom/jquery-ui.min.css">
        <script>
    
            $(function () {
                $('#zhanggen').tooltip({
                    content:function () {         //设置提示内容 function | 字符串
                        //ajax 向后端请求!
                        return '点我让你看簧片!'
                    },
                    tooltipClass:'class0',      //给提示div 增加class
                    track:true,                   //提示信息跟随鼠标移动
                    show:false,                   //提示信息显示效果
                    hide:'explode',               //提示信息消失效果
                    disabled:false               //设置禁用
    
                })
            })
        </script>
    </head>
    <div id="zhanggen">
        <a href="https://m.anysex.com" title="点我让你看簧片!">点我</a>
    </div>
    
    <body>
    
    </body>
    </html>
    代码

    7.选项卡切换部件 Tabs_widget 

    选项卡切换部件也就是网站中导航栏;

    7.0 初探

    $('#china').tabs()

    7.1 常见配置

     collapsible:true,             //设置所有tab 选项都可以关闭!
     disabled:[3],                 //设置成禁用true为所有,[可选]
     event:'mouseover',           //设置切换选项卡的事件(默认为 click事件)
     heightStyle:'auto',          //设置每个选项卡的高度 auto取最高| 默认根据内容
     active:false                  //设置默认打开的选项卡,默认为0,设置为false 全部关闭

    7.2 常见方法

     $('#china').tabs('load',3);     //加载远程选项卡的内容
     $('#china').tabs('refresh')     //刷新选项卡

    7.3 常见事件

     7.4 界面

    8.折叠菜单部件 Accordion Widget

    折叠菜单也就是我们常见的网站菜单栏;

    8.0 初探

     $('#zhanggen,#ul').accordion()

     HTML结构

    <!--布局方式1开始  -->
    <div id="zhanggen">
        <h3>首页</h3>
        <div>
        </div>
        <h3>主机管理</h3>
        <div>
            <p><a>主机列表</a></p>
            <p><a>新增主机</a></p>
            <ul id="ul">
                <li>
                    <h3>工单管理</h3>
                    <div>
                        <p><a>工单列表</a></p>
                        <p><a>创建工单</a></p>
                    </div>
                </li>
                <h3>监控管理</h3>
                <div>
                    <p><a href="">监控列表</a></p>
                    <p><a href="">添加监控</a></p>
                </div>
    
                </li>
            </ul>
        </div>
        <h3>监控管理</h3>
        <div>
            <p><a href="">监控列表</a></p>
            <p><a href="">添加监控</a></p>
        </div>
        <h3>工单管理</h3>
        <div>
            <p><a>工单列表</a></p>
            <p><a>创建工单</a></p>
        </div>
    </div>
    <!--布局方式1结束  -->
    方式1
    <!--布局方式2开始  -->
    <ul id="ul" style="margin-top: 10px">
        <li>
            <h3>工单管理</h3>
            <div>
                <p><a>工单列表</a></p>
                <p><a>创建工单</a></p>
            </div>
        </li>
        <h3>监控管理</h3>
        <div>
            <p><a href="">监控列表</a></p>
            <p><a href="">添加监控</a></p>
        </div>
        </li>
    </ul>
    <!--布局方式2结束 -->
    方式2

    8.1 常见配置

     collapsible: true,              //所有部分都可以关闭
     heightStyle: 'content'        //默认 auto取最高 |content根据内容
     //active:false,                //设置默认打开的item
     //event: 'mouseover'        //设置打开的 事件 默认click    

    8.2 常见方法

    8.3 触发事件

     8.4 界面调整

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="/static/jquery-3.2.1.min.js"></script>
        <script src="/static/jquery-ui-1.12.1.custom/jquery-ui.min.js"></script>
        <link rel="stylesheet" href="/static/jquery-ui-1.12.1.custom/jquery-ui.min.css">
        <style>
            #zhanggen {
                width: 200px;
            }
    
            {#        #ul {#}
            {#            width: 200px;#}
            {#        }#}
        </style>
        <script>
            $(function () {
    
                $('#zhanggen,#ul').accordion({
                    collapsible: true, //所有部分都可以关闭
                    heightStyle: 'content' //默认 auto取最高 |content根据内容
                    //active:false,     //设置默认打开的item
                    //event: 'mouseover'//设置打开的 事件 默认click
    
                });
            })
        </script>
    </head>
    <body>
    <!--布局方式1开始  -->
    <div id="zhanggen">
        <h3>首页</h3>
        <div>
        </div>
        <h3>主机管理</h3>
        <div>
            <p><a>主机列表</a></p>
            <p><a>新增主机</a></p>
            <ul id="ul">
                <li>
                    <h3>工单管理</h3>
                    <div>
                        <p><a>工单列表</a></p>
                        <p><a>创建工单</a></p>
                    </div>
                </li>
                <h3>监控管理</h3>
                <div>
                    <p><a href="">监控列表</a></p>
                    <p><a href="">添加监控</a></p>
                </div>
    
                </li>
            </ul>
        </div>
        <h3>监控管理</h3>
        <div>
            <p><a href="">监控列表</a></p>
            <p><a href="">添加监控</a></p>
        </div>
        <h3>工单管理</h3>
        <div>
            <p><a>工单列表</a></p>
            <p><a>创建工单</a></p>
        </div>
    </div>
    <!--布局方式1结束  -->
    
    
    
    
    <!--布局方式2开始  -->
    <ul id="ul" style="margin-top: 10px">
        <li>
            <h3>工单管理</h3>
            <div>
                <p><a>工单列表</a></p>
                <p><a>创建工单</a></p>
            </div>
        </li>
        <h3>监控管理</h3>
        <div>
            <p><a href="">监控列表</a></p>
            <p><a href="">添加监控</a></p>
        </div>
        </li>
    </ul>
    <!--布局方式2结束 -->
    </body>
    </html>
    代码

     

    9.对话框部件 dialog Widget

    9.0 初探

    $('<div id="dialog0" title="对话框标题">内容</div>').dialog()  //title属性=对话框标题 div内容=对话框显示的内容

     9.1 配置

    <script>
            $(function () {
                $('#dialog0').dialog({
                    resizable:true,          //允许调整对话框的大小
                    hide:"fadeOut",          //隐藏对话框的动画效果
                    show:'fadeIn',            //展示对话框的动画效果
                    autoOpen:false,            //自动打开对话框
                    //500,                //指定对话框的宽度;默认为300
                    //height:100,                 //指定对话框高度,默认auto 根据内容而定
                    modal:true,                  //莫泰遮罩层效果
                    buttons:{                   //定制对话框中的 button按钮 确定|取消
                        '确定':function () {
                            //向后台提交数据
                        },
                        '取消':function () {
                            $(this).dialog('close')
                        }
                    }
                });
                $('#button0').click(function () {
                    $('#dialog0').dialog('open')  //open()打开 对话框
                })
    
            })
        </script>

    9.2 方法

    ar isOpen=$('#dialog0').dialog('isOpen');    //对话框是否已经打开?
    $('#dialog0').dialog('open');           //open()打开 对话框
    $(this).dialog('close')                  //close() 关闭对话框              

    9.3 事件

     9.4 界面

     10.日历部件 Datepicker widget

    下载:https://www.helloweba.net/down/169.html

     日历部件可以统一用户提交时间数据的格式,方便用户输入;

    10.0 初探

    $('[name="current_date"]').datepicker();             //年月日
    $('[name="current_date"]').datetimepicker();         //年月日时分秒

    10.1 配置

     <script>
            $(function () {
                $('[name="current_date"]').datepicker({
                    //defaultDate:new Date('1993/6/28') //设置默认时间 | 默认 当前时间
                    //defaultDate:'+1d+1m'              //做日期延期
                    //changeMonth:true,                 //允许编辑月
                    changeYear:true,                    //允许编辑年
                    dateFormat:"yy年mm月dd日",           //设置日期格式 |@时间戳
                    //maxDate:new Date('2019/5/18'),    //设置最大日期
                    //minDate:new Date('2015/5/18'),    //设置最小日期
                    showOtherMonths:true,               //显示当前月之后的日期
                    selectOtherMonths:true,             //选择当前月之后的日期
                    yearRange:'c-1:c+1',                //选择范围限制 前1年 后1年
                    hideIfNoPrevNext:true,              //超出日期范围 按钮隐藏
                    
                });
            })
        </script>

     jQueryUI的datapicker不能选择时、分、秒,若需求可选择jquery-ui-timepicker-addon.js,详情:https://www.helloweba.net/javascript/169.html

    11.自动完成插件

    11.0:输入多个值

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <link rel="stylesheet" href="//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
        <script src="//code.jquery.com/jquery-1.9.1.js"></script>
        <script src="//code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
        <link rel="stylesheet" href="http://jqueryui.com/resources/demos/style.css">
        <link rel="stylesheet" href="/static/bootstrap/css/bootstrap.min.css">
        <script src="/static/bootstrap/js/bootstrap.min.js"></script>
    
        <style>
            .bs-glyphicons-list1 {
                padding-left: 0;
                list-style: none;
            }
    
            .bs-glyphicons-list1 li {
                display: inline-block;
                width: 215px;
                height: 215px;
                padding: 10px;
                font-size: 15px;
                text-align: center;
                line-height: 115px;
                background-color: #f9f9f9;
                border: 1px solid #fff;
    
            }
    
            .bs-glyphicons-list1 li:hover {
                display: inline-block;
                width: 215px;
                height: 215px;
                padding: 10px;
                font-size: 15px;
                text-align: center;
                line-height: 115px;
                background-color: #563d7c;
                border: 1px solid #fff;
    
            }
    
    
        </style>
        <script>
            $(function () {
                var availableTags = [
                    "ActionScript",
                    "AppleScript",
                    "Asp",
                    "BASIC",
                    "C",
                    "C++",
                    "Clojure",
                    "COBOL",
                    "ColdFusion",
                    "Erlang",
                    "Fortran",
                    "Groovy",
                    "Haskell",
                    "Java",
                    "JavaScript",
                    "Lisp",
                    "Perl",
                    "PHP",
                    "Python",
                    "Ruby",
                    "Scala",
                    "Scheme"
                ];
    
                function split(val) {
                    return val.split(/,s*/);
                }
    
                function extractLast(term) {
                    return split(term).pop();
                }
    
                $('#tags').autocomplete({
                    appendTo: "#wocao",
                    source: availableTags
                });
    
                $("#tags")
                // 当选择一个条目时不离开文本域
                    .bind("keydown", function (event) {
                        if (event.keyCode === $.ui.keyCode.TAB &&
                            $(this).data("ui-autocomplete").menu.active) {
                            event.preventDefault();
                        }
                    })
                    .autocomplete({
                        minLength: 0,
                        source: function (request, response) {
                            // 回到 autocomplete,但是提取最后的条目
                            response($.ui.autocomplete.filter(
                                availableTags, extractLast(request.term)));
                        },
                        focus: function () {
                            // 防止在获得焦点时插入值
                            return false;
                        },
                        select: function (event, ui) {
                            var terms = split(this.value);
                            // 移除当前输入
                            terms.pop();
                            // 添加被选项
                            terms.push(ui.item.value);
                            // 添加占位符,在结尾添加逗号+空格
                            terms.push("");
                            this.value = terms.join(", ");
                            return false;
                        }
                    });
            });
    
        </script>
    </head>
    <body>
    
    
    <!-- Modal -->
    <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
        <div class="modal-dialog" role="document">
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span>
                    </button>
                    <h4 class="modal-title" id="myModalLabel">添加用户查询</h4>
                </div>
                <div class="modal-body">
                    <form>
                        <div class="ui-widget">
                            <label for="tags">编程语言:</label>
                            <input id="tags" size="50">
                        </div>
                        <div id="wocao"></div>
                        <div class="form-group">
                            <label for="sql">sql</label>
                            <textarea class="form-control" id="sql" name="sqls" rows="16" style="min- 90%"></textarea>
                        </div>
                        {#                  <button type="submit" class="btn btn-default">提交</button>#}
                    </form>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
                    <button type="button" class="btn btn-primary">确定</button>
                </div>
            </div>
        </div>
    </div>
    
    <div style="border:solid 10px">
        <a href="{% url 'instance_pool' %}?type_id={{ type_id }}" class="btn btn-info btn-sm">返回</a>
        <h1 style="text-align: center">{{ database_type }}功能列表</h1>
        <ul class="bs-glyphicons-list1">
            <li data-toggle="modal" data-target="#myModal">
                <span class="glyphicon glyphicon-plus" aria-hidden="true" style="font-size: 55px"></span>
                <span class="glyphicon-class">增加查询功能</span>
            </li>
            <li id="reboot_redis">
                <span class="glyphicon glyphicon-refresh" aria-hidden="true" style="font-size: 55px"></span>
                <span>重启</span>
            </li>
            {% block function %}
    
    
            {% endblock %}
    
        </ul>
    </div>
    </body>
    
    <script>
    
    
    </script>
    
    </html>
    前端

    11.1:远程+多个值

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <link rel="stylesheet" href="//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
        <script src="//code.jquery.com/jquery-1.9.1.js"></script>
        <script src="//code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
        <link rel="stylesheet" href="http://jqueryui.com/resources/demos/style.css">
        <link rel="stylesheet" href="/static/bootstrap/css/bootstrap.min.css">
        <script src="/static/bootstrap/js/bootstrap.min.js"></script>
    
        <style>
            .bs-glyphicons-list1 {
                padding-left: 0;
                list-style: none;
            }
    
            .bs-glyphicons-list1 li {
                display: inline-block;
                width: 215px;
                height: 215px;
                padding: 10px;
                font-size: 15px;
                text-align: center;
                line-height: 115px;
                background-color: #f9f9f9;
                border: 1px solid #fff;
    
            }
    
            .bs-glyphicons-list1 li:hover {
                display: inline-block;
                width: 215px;
                height: 215px;
                padding: 10px;
                font-size: 15px;
                text-align: center;
                line-height: 115px;
                background-color: #563d7c;
                border: 1px solid #fff;
    
            }
    
    
        </style>
        <script>
            $(function () {
                var availableTags = [
                    "ActionScript",
                    "AppleScript",
                    "Asp",
                    "BASIC",
                    "C",
                    "C++",
                    "Clojure",
                    "COBOL",
                    "ColdFusion",
                    "Erlang",
                    "Fortran",
                    "Groovy",
                    "Haskell",
                    "Java",
                    "JavaScript",
                    "Lisp",
                    "Perl",
                    "PHP",
                    "Python",
                    "Ruby",
                    "Scala",
                    "Scheme"
                ];
    
                function split(val) {
                    return val.split(/,s*/);
                }
    
                function extractLast(term) {
                    return split(term).pop();
                }
    
                $('#tags').autocomplete({
                    appendTo: "#wocao",
                    source: availableTags
                });
    
                $("#tags") // 当选择一个条目时不离开文本域
                    .bind("keydown", function (event) {
                        if (event.keyCode === $.ui.keyCode.TAB &&
                            $(this).data("ui-autocomplete").menu.active) {
                            event.preventDefault();
                        }
                    })
                    .autocomplete({
                        source: function (request, response) {
                            $.getJSON("{% url 'get_user'%}", {
                                term: extractLast(request.term)
                            }, response);
                        },
                        search: function () {
                            // 自定义最小长度
                            var term = extractLast(this.value);
                            if (term.length < 2) {
                                return false;
                            }
                        },
                        focus: function () {
                            // 防止在获得焦点时插入值
                            return false;
                        },
                        select: function (event, ui) {
                            var terms = split(this.value);
                            // 移除当前输入
                            terms.pop();
                            // 添加被选项
                            terms.push(ui.item.value);
                            // 添加占位符,在结尾添加逗号+空格
                            terms.push("");
                            this.value = terms.join(", ");
                            return false;
                        }
                    });
    
            });
    
        </script>
    </head>
    <body>
    
    
    <!-- Modal -->
    <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
        <div class="modal-dialog" role="document">
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span>
                    </button>
                    <h4 class="modal-title" id="myModalLabel">添加用户查询</h4>
                </div>
                <div class="modal-body">
                    <form>
                        <div class="ui-widget">
                            <label for="tags">编程语言:</label>
                            <input id="tags" size="50">
                        </div>
                        <div id="wocao"></div>
                        <div class="form-group">
                            <label for="sql">sql</label>
                            <textarea class="form-control" id="sql" name="sqls" rows="16" style="min- 90%"></textarea>
                        </div>
                        {#                  <button type="submit" class="btn btn-default">提交</button>#}
                    </form>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
                    <button type="button" class="btn btn-primary">确定</button>
                </div>
            </div>
        </div>
    </div>
    
    <div style="border:solid 10px">
        <a href="{% url 'instance_pool' %}?type_id={{ type_id }}" class="btn btn-info btn-sm">返回</a>
        <h1 style="text-align: center">{{ database_type }}功能列表</h1>
        <ul class="bs-glyphicons-list1">
            <li data-toggle="modal" data-target="#myModal">
                <span class="glyphicon glyphicon-plus" aria-hidden="true" style="font-size: 55px"></span>
                <span class="glyphicon-class">增加查询功能</span>
            </li>
            <li id="reboot_redis">
                <span class="glyphicon glyphicon-refresh" aria-hidden="true" style="font-size: 55px"></span>
                <span>重启</span>
            </li>
            {% block function %}
    
    
            {% endblock %}
    
        </ul>
    </div>
    </body>
    
    <script>
    
    
    </script>
    
    </html>
    前端
    def get_users(request):
        username=request.session.get('username')
        seach=request.GET.get('term')
        user_obj=cmdb_models.UserInfo.objects.filter(username__icontains=seach).first()
        if user_obj:
            username=user_obj.username
        return HttpResponse(json.dumps({"term":username}))
    views

    扩展

    jQuery-UI的CSS框架

    http://www.css88.com/jquery-ui-api/theming/css-framework/

    jQuery-UI的图标

    http://www.css88.com/jquery-ui-api/theming/icons/

      

  • 相关阅读:
    CxImage图像库的使用
    CxImage动态加载图片(判断图片文件类型)
    实现一个类似360的button
    cximage功能简介
    开源图像处理软件代码
    MFC + CxImage 实现自绘半透明按钮
    VC 下加载 JPG / JPEG / GIF / PNG 图片最简单的方法
    时序数据库InfluxDB:简介及安装
    学习springboot整合mybatis并编写测试类
    Mybatis-Plus使用全解
  • 原文地址:https://www.cnblogs.com/sss4/p/9023111.html
Copyright © 2020-2023  润新知