js 实现分割条
js 实现 切分条效果, 为了熟悉js 写法,纯javascript 脚本编写
简单介绍几个函数:
setCapture()函数的作用就是将后续的mouse事件都发送给这个对象,
releaseCapture() 就是将鼠标事件还回去
由document、window、object之类的自行来处理,这样就保证了在拖动的过程中,不会由于经过了其它的元素而受到干扰。另外,还有一个很重 要的事情是,在Win32上,mouse move的事件不是一个连续的,也就是说,并不是我们每次移动1px的鼠标指针,就会发生一个mousemove,windows会周期性检查mouse的位置变化来产生mousemove的事件。所以,如果是一个很小的页面对象,比如一个直径5px的圆点,如果没有setCapture和releaseCapture,那么在鼠标按住之后,快速的移动鼠标,就有可能鼠标移动走了,但是小圆点还在原地,就是因为下一次的mousemove事 件已经不再发给这个圆点对象了。
var siblingElem = function (elem)
{
var _nodes = []; while ((elem = elem.previousSibling))
{
if (elem.nodeType === )
{ _nodes.push(elem); break; }
}
return _nodes[];
}
var nextElem = function (elem)
{
var _nodes = [];
while ((elem = elem.nextSibling))
{
if (elem.nodeType === )
{ _nodes.push(elem); break; }
}
return _nodes[];
}
获取相邻两个左右两个元素
为了方便运用编写一个js 对象
主要方法:根据鼠标移动的坐标计算左右两边容器的宽度
move = function (event, f)
{
if (f.flag)
{
if (f.iPner2With - event.clientX - f.ele.offsetWidth > )
{
f.objLeft.style.left = (event.clientX + f.ele.offsetWidth) + "px";
f.objRight.style.width = (f.iPner2With - event.clientX - f.ele.offsetWidth) + "px";
f.objLeft.style.width = event.clientX + "px"; }
if (!f.ele.releaseCapture)
{
event.preventDefault();
}
}
}
/**************************************** @Name:LR_spliter 实现table 和div 分割条效果
@Author:胡泽云
@Date:2014-08-27
@邮箱:hzeyun@sina.com
@qq:984559465
@说明: 实例化 new LR_spliter("控件id") */
var siblingElem = function (elem)
{
var _nodes = []; while ((elem = elem.previousSibling))
{
if (elem.nodeType === )
{ _nodes.push(elem); break; }
}
return _nodes[];
}
var nextElem = function (elem)
{
var _nodes = [];
while ((elem = elem.nextSibling))
{
if (elem.nodeType === )
{ _nodes.push(elem); break; }
}
return _nodes[];
}
zy_spliter = function (id)
{
this.flag = false;
this.objSplitter = false;
this.iPner2With = ; //获取对象的左右连个容器
this.ele = document.getElementById(id);
this.objLeft = siblingElem(this.ele);
this.objRight = nextElem(this.ele);
this.ele.style.cursor = "w-resize"; //设置鼠标样式
up = function (event, t)
{
if (t.flag)
{
if (t.ele.releaseCapture)
{
t.ele.releaseCapture();
}
else
{
document.removeEventListener('mouseup', t.up, true);
document.removeEventListener('mousemove', t.move, true);
event.preventDefault();
} t.flag = false;
}
};
down = function (event, f)
{ if (!f.flag)
{
if (f.ele.setCapture)
f.ele.setCapture();
else
{
document.addEventListener('mouseup', up, true);
document.addEventListener('mousemove', move, true);
event.preventDefault();
} f.flag = true; if (f.ele.parentNode.tagName == "TD")
{
f.iPner2With = f.ele.parentNode.parentNode.offsetWidth;
}
else
{
f.iPner2With = f.ele.parentNode.offsetWidth;
} }
};
move = function (event, f)
{ if (f.flag)
{ if (f.iPner2With - event.clientX - f.ele.offsetWidth > )
{
f.objLeft.style.left = (event.clientX + f.ele.offsetWidth) + "px";
f.objRight.style.width = (f.iPner2With - event.clientX - f.ele.offsetWidth) + "px";
f.objLeft.style.width = event.clientX + "px";
}
if (!f.ele.releaseCapture)
{
event.preventDefault();
}
}
}
var t = this;
this.ele.onmousedown = function ()
{
down(event, t);
} this.ele.onmouseup = function ()
{
up(event, t);
} this.ele.onmousemove = function ()
{
move(event, t);
}
return this; }
所有代码
实现效果: 第一种左右两边容器是div , 第二种 是分割table 单元格的效果

前台html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript" src="../Js/zeyun_spliter.js"></script>
<script type="text/javascript">
window.onload = function ()
{
var lsp = new zy_spliter("soliterSS");
var lsp2 = new zy_spliter("sp2");
}
</script>
</head>
<body>
<div style="height: 100px; width: 900px;">
<div style="width: 450px; float: left; background: red; height: 100%; word-break: break-all;
word-wrap: break-word;">
asdsdf
</div>
<div id="soliterSS" style="width: 4px; height: 100%; float: left; ">
</div>
<div style="width: 442px; float: left; background: blue; height: 100%; position: relative;
word-break: break-all; word-wrap: break-word;">
adsfadsfjkl</div>
</div>
<p> table</p>
<table style="height: 100px; width: 900px;" cellspacing="0" cellpadding="0">
<tr>
<td style="">
</td>
<td id="sp2" style="width: 4px; height: 100%; ">
<div style="height: 100%;">
</div>
</td>
<td style="">
</td>
</tr>
</table>
</body>
</html>
js 实现分割条的更多相关文章
- 随笔 JS 字符串 分割成字符串数组 并动态添加到指定ID的DOM 里
JS /* * 字符串 分割成字符串数组 并动态添加到指定ID的DOM 里 * @id 要插入到DOM元素的ID * * 输入值为图片URL 字符串 * */ function addImages(i ...
- js 字符串分割成字符串数组 遍历数组插入指定DOM里 原生JS效果
使用的TP3.2 JS字符串分割成字符串数组 var images='{$content.pictureurl} ' ;结构是这样 attachment/picture/uploadify/20141 ...
- iOS8 UITableView 分割条设置separator intent = 0 不起作用
转自:http://blog.csdn.net/ljb_wh/article/details/40788333 ios7的时候在storyboard 设置 TableView的separator in ...
- delphi如何加上spliter分割条,任意调整大小
如题1:如何把一个panel分割成四个小的panle 2:也就是如何加上spliter,分割条,任意调整大小 3.如何有独立的handle使用多个总共5个为什么呢,你放4个panel 然后放split ...
- nprogress.js 头部进度条使用方法
nprogress.js 头部进度条 引入CSS\JS <link rel="stylesheet" type="text/css" href=" ...
- js 实现进度条功能。
/** * 纯js进度条 * Created by kiner on 15/3/22. */ function progress(options){ this.w = (options &&a ...
- three.js 显示一条线
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Js 百分比进度条
[构想] CSS3 + JS CSS3控制进度 利用CSS3中的 @keyframes JS实现百分比 根据CSS来调整,时间 [页面代码] 第一种: 默认直接进入就是下载 CSS代码 body { ...
- js加载条
<html xmlns="http://www.w3.org/1999/xhtml"><head> <meta http-equiv=" ...
随机推荐
- 【转】java 容器类使用 Collection,Map,HashMap,hashTable,TreeMap,List,Vector,ArrayList的区别
原文网址:http://www.360doc.com/content/15/0427/22/1709014_466468021.shtml java 容器类使用 Collection,Map,Hash ...
- QDomDocument Access violation writing location
今天犯了一个非常2的错误! 为了将面板参数保存起来,选择用QDomDocument构造Dom树,然后用doc.toString()方法返回符合xml格式的QString.如: QString CutF ...
- android关于图片缩放
网上有许多关于图片缩放的demo,本人都感觉不怎么好用,最近在github看到了 一个简单的支持多指缩放图片的Android View类 gesture-imageview (地址:https://g ...
- 二次战CPP链表
Felling By Ruiy: Pre-learnning link list knowloages 熟悉 指针相关操作应用+结构体数据类型应用,且能简单融合使用,堆内存(内存泄露)->类似于 ...
- G - Supermarket poj1456
题目的描述很长,其实描述的问题很简单,说有n的商品,它们每个的价值是pi,但是呢,再过di天这些商品就不能卖了(有可能过期了...),现在给出来每个商品的价值和可以卖的最后期限,问可以得到最多多少资金 ...
- 给想上MIT的牛学生说几句
[来信] 老师您好! 非常冒昧的来打搅您,仅仅是在学习上实在有些困惑才来向您求教一番. 我是计算机科学与技术的大一学生,我非常喜欢我自己的专业,可是学校里讲的东西太慢,太浅,所以我一般都是自学,我在自 ...
- [Unity-24] Unity的四种载入场景的方法
Unity官方提供了4种载入场景(scene)的方法.各自是: 1. Application.LoadLevel():同步载入 2. Application.LoadLevelAsync():异步载入 ...
- Valgrind 安装与使用
调不尽的内存泄漏,用不完的Valgrind Valgrind 安装 1. 到www.valgrind.org下载最新版valgrind-3.2.3.tar.bz2 2. 解压安装包:tar –jxvf ...
- 数据存储简单了解(NSUserDefaults)
数据存储-使用NSUserDefaults 两个类介绍: NSUserDefaults适合存储轻量级的本地数据,比如要保存一个登陆界面的数据,用户名.密码之类的,个人觉得使用NSUserDefault ...
- [转] Linux下查看文件和文件夹大小
当磁盘大小超过标准时会有报警提示,这时如果掌握df和du命令是非常明智的选择. df可以查看一级文件夹大小.使用比例.档案系统及其挂入点,但对文件却无能为力. du可以查看文件及文件夹的大小. ...