基于JQuery实现分隔条的功能


Posted in Javascript onJune 17, 2016

在C/S系统中有专门的分隔条控件,很方便实现,但在Asp.net中却没有。本文介绍了一种使用JQuery技术实现分隔条的功能。
 Javascript代码如下,将该代码保存成JS文件后在HTML中引用。

jsplit
jQuery.noConflict();
jQuery.fn.extend({
  jsplit: function (j) {
    return this.each(function () {
      j = j || {};
      j.Btn = j.Btn || {};
      j.Btn.oBg = j.Btn.oBg || {};
      j.Btn.cBg = j.Btn.cBg || {};
      var jun = { MaxW: "600px"
            , MinW: "260px"
            , FloatD: "left"
            , IsClose: false
            , BgUrl: ""
            , Bg: "#fff"
            , Btn: { btn: true
                , oBg: { Out: "#333", Hover: "orange" }
                , cBg: { Out: "#333", Hover: "orange"}
            }
        , Fn: function () { } 
      }
      j.MaxW = parseInt(j.MaxW) || parseInt(jun.MaxW);
      j.MinW = parseInt(j.MinW) || parseInt(jun.MinW);
      j.FloatD = j.FloatD || jun.FloatD;
      j.IsClose = j.IsClose != undefined ? j.IsClose : jun.IsClose;
      j.BgUrl = j.BgUrl || jun.BgUrl;
      j.Bg = j.Bg || jun.Bg;
      j.Btn.btn = j.Btn.btn != undefined ? j.Btn.btn : jun.Btn.btn;
      j.Btn.oBg.Out = j.Btn.oBg.Out || jun.Btn.oBg.Out;
      j.Btn.oBg.Hover = j.Btn.oBg.Hover || jun.Btn.oBg.Hover;
      j.Btn.cBg.Out = j.Btn.cBg.Out || jun.Btn.cBg.Out;
      j.Btn.cBg.Hover = j.Btn.cBg.Hover || jun.Btn.cBg.Hover;
      j.Fn = j.Fn || jun.Fn;
      var antiD = j.FloatD == "left" ? "right" : "left";
      if (j.MinW > j.MaxW) {
        var amax = j.MaxW;
        j.MaxW = j.MinW;
        j.MinW = amax;
      };
      var _self = this;
      var Close = false;
      jQuery(_self).css({ position: "relative", float: j.FloatD, overflow: "hidden", padding: "0px" });
      jQuery(_self).wrapInner("<div class='jsplit-c' style='top:0px;z-index:9999;zoom:1;width:100%;overflow:hidden;position:relative;height:100%'></div>");
      jQuery(_self).children(".jsplit-c").append("<div class='jsplit-e' unselectable='on' style='background:#fff;height:100%;width:6px;top:0px;-moz-user-select:none;" + antiD + ":0px;position:absolute;cursor:e-resize;overflow:hidden;z-index:10000;'><div class='jsplit-e-handle' unselectable='on' style='height:40px;width:100%;top:50%;margin-top:-20px;left:0;position:absolute;cursor:pointer;-moz-user-select:none;'></div></div>");
      var dw = jQuery(_self).width();
      var jsplitc = jQuery(_self).children(".jsplit-c");
      var jsplite = jsplitc.children(".jsplit-e");
      var jsplith = jsplite.children(".jsplit-e-handle");
      if (j.Btn.btn == false) { jsplith.css({ display: "none" }) };
      if (jQuery.browser.msie) { document.execCommand("BackgroundImageCache", false, true); }
      if (dw > j.MaxW) { jQuery(_self).css({ width: j.MaxW }); }
      if (dw < j.MinW) { jQuery(_self).css({ width: j.MinW }); }
      jsplite.css({ background: j.Bg, "background-image": j.BgUrl, opacity: 0 })
      if (j.IsClose != false) {
        jsplith.css({ background: j.Btn.cBg.Out, "background-image": j.BgUrl })
        _selfclose();
      } else {
        jsplith.css({ background: j.Btn.oBg.Out, "background-image": j.BgUrl })
      }
      jsplith.hover(function () {
        if (Close == false) {
          jQuery(this).css({ background: j.Btn.oBg.Hover, "background-image": j.BgUrl })
        } else { jQuery(this).css({ background: j.Btn.cBg.Hover, "background-image": j.BgUrl }) }
      }, function () {
        if (Close == false) {
          jQuery(this).css({ background: j.Btn.oBg.Out, "background-image": j.BgUrl })
        } else { jQuery(this).css({ background: j.Btn.cBg.Out, "background-image": j.BgUrl }) }
      })
      jQuery(_self).hover(function () { if (Close == false) jsplite.stop().animate({ opacity: 0.85 }, 200) }, function () { if (Close == false) jsplite.stop().animate({ opacity: 0 }, 2000) })
      jsplite.mousedown(function (e) {
        j['Fn'] && j['Fn'].call(_self);
        var screenX = e.screenX, w = jQuery(_self).width();
        jQuery(document).mousemove(function (e2) {
          curW = j.FloatD == "left" ? w + (e2.screenX - screenX) : w - (e2.screenX - screenX);
          if (curW >= j.MaxW) { curW = j.MaxW; };
          if (curW <= j.MinW) { curW = j.MinW; };
          jQuery(_self).css({ width: curW });
          dw = curW;
        });
        jQuery(document).mouseup(function () {
          jQuery(document).unbind();
        });
        if (Close == true) {
          jQuery(this).css({ cursor: "e-resize", opacity: 0.8 });
          jQuery(_self).animate({ width: dw }, 200);
          Close = false;
        };
        return false;
      });
      jsplite.dblclick(function () {
        if (Close == false) {
          _selfclose();
        };
        return false;
      });
      jsplith.click(function () {
        if (Close == false) {
          _selfclose();
        };
        return false;
      });
      function _selfclose() {
        jsplite.css({ cursor: "pointer", opacity: 1 });
        jsplith.css({ background: j.Btn.cBg.Out, "background-image": j.BgUrl });
        jQuery(_self).animate({ width: "6px" }, 400);
        Close = true;
      }


    });
  }
});

按以下步骤修改HTML文件:
1. 增加对JQuery和刚刚生成的jsplit.js文件的引用。 

<script language='javascript' src='jquery-1.4.4.min.js'></script>
<script language='javascript' src='jsplit.js'></script>

2. 为要被拖动大小的DIV或TD定义ID。 

<table>
  <tr>
    <td id="tt" style="background:#999999">test</td>
    <td style="background:#009999" width="400">test Table</td>
  </tr>
</table>

3. 增加Javascript调用Split。 

<script type="text/javascript"> 
    $(document).ready(function(){
  jQuery('#tt').jsplit();          
    });
</script>

这样就实现了客户端的分隔条的功能,如下图所示:

基于JQuery实现分隔条的功能

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js 跨域和ajax 跨域问题小结
Jul 01 Javascript
在Ajax中使用Flash实现跨域数据读取的实现方法
Dec 02 Javascript
js编码之encodeURIComponent使用介绍(asp,php)
Mar 01 Javascript
js和jquery如何获取图片真实的宽度和高度
Sep 28 Javascript
JS判断iframe是否加载完成的方法
Aug 03 Javascript
jQuery.Validate表单验证插件的使用示例详解
Jan 04 Javascript
Vue2学习笔记之请求数据交互vue-resource
Feb 23 Javascript
详谈JS中数组的迭代方法和归并方法
Aug 11 Javascript
关于Vue项目跨平台运行问题的解决方法
Sep 18 Javascript
JavaScript中工厂函数与构造函数示例详解
May 06 Javascript
Vue 列表上下过渡效果的实例代码
Jun 25 Javascript
Vue发布项目实例讲解
Jul 17 Javascript
js基于setTimeout与setInterval实现多线程
Jun 17 #Javascript
浅谈jQuery animate easing的具体使用方法(推荐)
Jun 17 #Javascript
jQuery animate easing使用方法图文详解
Jun 17 #Javascript
JS常用字符串方法(推荐)
Jan 15 #Javascript
url中的特殊符号有什么含义(推荐)
Jun 17 #Javascript
JS模拟的Map类实现方法
Jun 17 #Javascript
jQuery实现iframe父窗体和子窗体的相互调用
Jun 17 #Javascript
You might like
MVC模式的PHP实现
2006/10/09 PHP
删除及到期域名的查看(抢域名必备哦)
2008/05/14 PHP
PHP页面间传递参数实例代码
2008/06/05 PHP
php文章内容分页并生成相应的htm静态页面代码
2010/06/07 PHP
PHP写日志的实现方法
2014/11/05 PHP
php单例模式实现方法分析
2015/03/14 PHP
简介WordPress中用于获取首页和站点链接的PHP函数
2015/12/17 PHP
详解如何在云服务器上部署Laravel
2017/06/30 PHP
php获得刚插入数据的id 的几种方法总结
2018/05/31 PHP
PHP回调函数简单用法示例
2019/05/08 PHP
jQuery实现Meizu魅族官方网站的导航菜单效果
2015/09/14 Javascript
BootstrapTable请求数据时设置超时(timeout)的方法
2017/01/22 Javascript
vue.js element-ui tree树形控件改iview的方法
2018/03/29 Javascript
让axios发送表单请求形式的键值对post数据的实例
2018/08/11 Javascript
Vue使用自定义指令实现拖拽行为实例分析
2020/06/06 Javascript
python安装PIL模块时Unable to find vcvarsall.bat错误的解决方法
2016/09/19 Python
Python正则表达式非贪婪、多行匹配功能示例
2017/08/08 Python
Python 将Matrix、Dict保存到文件的方法
2018/10/30 Python
深入了解python中元类的相关知识
2019/08/29 Python
python实现单链表的方法示例
2019/09/03 Python
8段用于数据清洗Python代码(小结)
2019/10/31 Python
Python同时处理多个异常的方法
2020/07/28 Python
python设置中文界面实例方法
2020/10/27 Python
CSS3中background-clip和background-origin的区别示例介绍
2014/03/10 HTML / CSS
Ray-Ban雷朋西班牙官网:全球领先的太阳眼镜品牌
2018/11/28 全球购物
异常和异常类的概念
2014/09/12 面试题
运动会广播稿100字
2014/01/11 职场文书
仓库管理制度
2014/01/21 职场文书
通用自荐信范文
2014/03/14 职场文书
应届毕业生求职信范文
2014/05/08 职场文书
向国旗敬礼学生寄语大全
2014/09/30 职场文书
幼儿园庆六一主持词
2015/06/30 职场文书
小学教师教学随笔
2015/08/14 职场文书
Spring Boot mybatis-config 和 log4j 输出sql 日志的方式
2021/07/26 Java/Android
SpringBoot+Vue+JWT的前后端分离登录认证详细步骤
2021/09/25 Java/Android
Docker官方工具docker-registry案例演示
2022/04/13 Servers