jQuery实现分隔条左右拖动功能


Posted in Javascript onNovember 21, 2015

本文实例讲述了jQuery实现分隔条左右拖动功能的实现代码。分享给大家供大家参考。具体如下:
运行效果截图如下:

jQuery实现分隔条左右拖动功能

jQuery实现分隔条左右拖动功能

具体内容如下

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <title> New Document </title>
  <script type="text/javascript" src="jquery.min.js"></script>
  <style type="text/css">
    html, body, div {
      margin: 0;
      padding: 0;
      border: 0;
      -moz-user-select: none;
      -webkit-user-select: none;
    }

    .gf_s {
      float: left;
      width: 4px;
      cursor: e-resize;
      background-color: #fff;
      border: #99BBE8 1px solid;
    }

    .gf_s_g {
      float: left;
      width: 4px;
      display: none;
      cursor: e-resize;
      position: absolute;
      background-color: #F0F0F0;
      border: #99BBE8 1px solid;
      filter: alpha(opacity=60);
      -moz-opacity: 0.6;
      -khtml-opacity: 0.6;
      opacity: 0.6;
      z-index: 1000;
    }
  </style>
 </head>
 <body>
   <div id="divP" style="width:100%; height:100%;">
     <div id="divLeft" style="background-color: green; float: left; "></div>
     <div id="divS" class="gf_s" style="float: left;"></div>
     <div id="divSG" class="gf_s_g" style="float: left;"></div>
     <div id="divRight" style="background-color: blue; float: left;"></div>
   </div>

   <script type="text/javascript">
     var $sliderMoving = false;     

     //兼容各种浏览器的,获取鼠标真实位置
     function mousePosition(ev) {
       if (!ev) ev = window.event;
       if (ev.pageX || ev.pageY) {
         return { x: ev.pageX, y: ev.pageY };
       }
       return {
         x: ev.clientX + document.documentElement.scrollLeft - document.body.clientLeft,
         y: ev.clientY + document.documentElement.scrollTop - document.body.clientTop
       };
     };
     //获取一个DIV的绝对坐标的功能函数,即使是非绝对定位,一样能获取到
     function getElCoordinate(dom) {
       var t = dom.offsetTop;
       var l = dom.offsetLeft;
       dom = dom.offsetParent;
       while (dom) {
         t += dom.offsetTop;
         l += dom.offsetLeft;
         dom = dom.offsetParent;
       };
       return { top: t, left: l };
     };

     //分隔条幽灵左右拖动(mousemove)
     function sliderGhostMoving(e) {
       $("#divSG").css({ left: mousePosition(e).x - 2, display: "block" });
     };
     //完成分隔条左右拖动(mouseup)
     function sliderHorizontalMove(e) {
       var lWidth = getElCoordinate($("#divSG")[0]).left - 2;
       var rWidth = $(window).width() - lWidth - 6;
       $("#divLeft").css("width", lWidth + "px");
       $("#divRight").css("width", rWidth + "px");
       $("#divSG").css("display", "none");
     };

     function reinitSize() {
       var width = $(window).width() - 6;
       var height = $(window).height();
       $("#divLeft").css({ height: height + "px", width: width * 0.75 + "px" });
       $("#divS").css({ height: height - 2 + "px", width: "4px" });
       $("#divSG").css({ height: height - 2 + "px", width: "4px" });
       $("#divRight").css({ height: height + "px", width: width * 0.25 + "px" });
     }

     $(document).ready(function () {
       reinitSize();

       $("#divS").on("mousedown", function (e) {
         $sliderMoving = true;
         $("divP").css("cursor", "e-resize");
       });

       $("#divP").on("mousemove", function (e) {
         if ($sliderMoving) {
           sliderGhostMoving(e);
         }
       });

       $("#divP").on("mouseup", function (e) {
         if ($sliderMoving) {
           $sliderMoving = false;
           sliderHorizontalMove(e);
           $("#divP").css("cursor", "default");
         }
       });
     });

     $(window).resize(function () {
       reinitSize();
     });

   </script>
 </body>
</html>

希望本文所述对大家学习jquery分隔条有所帮助。

Javascript 相关文章推荐
用javascript实现页面打印的三种方法
Mar 05 Javascript
js 学习笔记(三)
Dec 29 Javascript
浅析js设置控件的readonly与enabled属性问题
Dec 25 Javascript
jquery获取url参数及url加参数的方法
Oct 26 Javascript
jQuery Easyui 验证两次密码输入是否相等
May 13 Javascript
Bootstrap模态框水平垂直居中与增加拖拽功能
Nov 09 Javascript
JavaScript实现替换字符串中最后一个字符的方法
Mar 07 Javascript
详解Vue中状态管理Vuex
May 11 Javascript
关于jQuery.ajax()的jsonp碰上post详解
Jul 02 jQuery
React中上传图片到七牛的示例代码
Oct 10 Javascript
使用socket.io实现简单聊天室案例
Jan 02 Javascript
微信小程序第三方框架对比 之 wepy / mpvue / taro
Apr 10 Javascript
超详细的javascript数组方法汇总
Nov 21 #Javascript
javascript实现动态统计图开发实例
Nov 21 #Javascript
js实现索引图片切换效果
Nov 21 #Javascript
JavaScript实现自动生成网页元素功能(按钮、文本等)
Nov 21 #Javascript
javascript实现Email邮件显示与删除功能
Nov 21 #Javascript
jQuery-1.9.1源码分析系列(十)事件系统之事件包装
Nov 20 #Javascript
Jquery ajax基础教程
Nov 20 #Javascript
You might like
Body是什么,该怎么喝出咖啡里的口感
2021/03/03 咖啡文化
层叠菜单的动态生成
2006/10/09 PHP
php中使用Akismet防止垃圾评论的代码
2011/06/10 PHP
主流PHP框架的优缺点对比分析
2014/12/25 PHP
php不使用copy()函数复制文件的方法
2015/03/13 PHP
[原创]PHP实现生成vcf vcard文件功能类定义与使用方法详解【附demo源码下载】
2017/09/02 PHP
jQuery 扩展对input的一些操作方法
2009/10/30 Javascript
Jquery图片延迟加载插件jquery.lazyload.js的使用方法
2014/05/21 Javascript
浅谈Javascript变量作用域问题
2014/12/16 Javascript
jquery中$each()方法的使用指南
2015/04/30 Javascript
浅谈javascript事件取消和阻止冒泡
2015/05/26 Javascript
详解jQuery lazyload 懒加载
2016/12/19 Javascript
AngularJS折叠菜单实现方法示例
2017/05/18 Javascript
js实现图片上传预览原理分析
2017/07/13 Javascript
node.js-v6新版安装具体步骤(分享)
2017/09/06 Javascript
使用Angular CLI进行Build(构建)和Serve详解
2018/03/24 Javascript
jQuery实现监听下拉框选中内容发生改变操作示例
2018/07/13 jQuery
详解在React中跨组件分发状态的三种方法
2018/08/09 Javascript
JavaScript 中 JSON.parse 函数 和 JSON.stringify 函数
2018/12/05 Javascript
vue自定义标签和单页面多路由的实现代码
2020/05/03 Javascript
[58:58]2018DOTA2亚洲邀请赛 4.4 淘汰赛 TNC vs VG 第二场
2018/04/05 DOTA
Python日志模块logging基本用法分析
2018/08/23 Python
python实现Zabbix-API监控
2018/09/17 Python
已安装tensorflow-gpu,但keras无法使用GPU加速的解决
2020/02/07 Python
python 三种方法实现对Excel表格的读写
2020/11/19 Python
CSS3中的transform属性进行2D和3D变换的基本用法
2016/05/12 HTML / CSS
简单介绍HTML5中的文件导入
2015/05/08 HTML / CSS
波兰数码相机及配件网上商店: Cyfrowe.pl
2017/06/19 全球购物
Dockers鞋官网:Dockers Shoes
2018/11/13 全球购物
在SQL Server中创建数据库主要有那种方式
2013/09/10 面试题
移动通信专业自荐信范文
2013/11/12 职场文书
水利局群众路线专题民主生活会发言材料
2014/09/21 职场文书
2015年餐厅服务员工作总结
2015/04/23 职场文书
公司员工辞职信范文
2015/05/12 职场文书
Selenium浏览器自动化如何上传文件
2022/04/06 Python
微前端qiankun改造日渐庞大的项目教程
2022/06/21 Javascript