由jQuery实现上下、左右动态改变左右、上下两个div的大小,需要自己引入jquery1.8.0.min.js包

可用于页面布局。

//============================index.html======================================

<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="utf-8">
<title>分隔栏动态改变div大小—基于jQuery</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
<meta name="renderer" content="webkit"/>
<meta name="viewport" content="initial-scale=1, maximum-scale=3, minimum-scale=1, user-scalable=no"/>
<meta name="author" content="wind"/>
<meta name="robots" content="index,follow"/>
<meta name="keywords" content=""/>
<meta name="description" content=""/>

<style>
.hj-wrap{
width:100%;
height: 200px;
margin:10px auto;
clear:both;
border:1px solid red;
overflow: hidden;
}
.hj-transverse-split-div{
float: left;
height: 100%;
padding:0px;
background: #0099EE;
overflow: hidden;
border:0px solid #0099ff;
}
.hj-wrap .hj-transverse-split-label{
float:left;
width: 10px;
height: 100%;
display:block;
cursor: e-resize;
background-color:#fff;
}
table tr td{
border:1px solid #fff;
}
.hj-vertical-split-div{
height:150px;
border:0px solid red;
width:99.9%;
margin:0 auto;
background-color:#0099ff;
}
.hj-vertical-split-label{
width: 100%;
height: 10px;
display:block;
cursor: n-resize;
background-color:#fff;
}
</style>
</head>
<body>
<div class='hj-wrap'>
<div class="hj-transverse-split-div">
<label>ggg</label>
</div>
<label class="hj-transverse-split-label">&nbsp;</label>
<div class="hj-transverse-split-div">中</div>
<label class="hj-transverse-split-label">&nbsp;</label>
<div class="hj-transverse-split-div">右</div>
<label class="hj-transverse-split-label">&nbsp;</label>
<div class="hj-transverse-split-div">右1</div>
<label class="hj-transverse-split-label">&nbsp;</label>
<div class="hj-transverse-split-div">右2</div>
</div>

<div class='hj-wrap'>
<div class="hj-transverse-split-div">
<h1>Hello word</h1>
</div>
<label class="hj-transverse-split-label">&nbsp;</label>
<div class="hj-transverse-split-div">中</div>
<label class="hj-transverse-split-label">&nbsp;</label>
<div class="hj-transverse-split-div">右</div>
<label class="hj-transverse-split-label">&nbsp;</label>
<div class="hj-transverse-split-div">右1</div>
</div>

<div class='hj-wrap'>
<div class="hj-transverse-split-div">
<h2>javascript</h2>
</div>
<label class="hj-transverse-split-label">&nbsp;</label>
<div class="hj-transverse-split-div">中</div>
<label class="hj-transverse-split-label">&nbsp;</label>
<div class="hj-transverse-split-div">
<table>
<tr>
<td>1</td>
<td>2</td>
<td rowspan="2">3</td>
</tr>
<tr>
<td colspan="2">1</td>
</tr>
</table>
</div>
</div>

<div class='hj-wrap' style="height:500px;">
<div class="hj-transverse-split-div">
<h1>Hello word</h1>
</div>
<label class="hj-transverse-split-label">&nbsp;</label>
<div class="hj-transverse-split-div" style="background-color:#fff;">
<div class="hj-vertical-split-div">上</div>
<label class="hj-vertical-split-label">&nbsp;</label>
<div class="hj-vertical-split-div">中</div>
<label class="hj-vertical-split-label">&nbsp;</label>
<div class="hj-vertical-split-div">下</div>
</div>

</div>

<div class='hj-wrap' style="height:500px;">
<div class="hj-transverse-split-div">
<h1>Hello word</h1>
</div>
<label class="hj-transverse-split-label">&nbsp;</label>
<div class="hj-transverse-split-div">中</div>
<label class="hj-transverse-split-label">&nbsp;</label>
<div class="hj-transverse-split-div" style="background-color:#fff;">
<div class="hj-vertical-split-div">上</div>
<label class="hj-vertical-split-label">&nbsp;</label>
<div class="hj-vertical-split-div">中</div>
<label class="hj-vertical-split-label">&nbsp;</label>
<div class="hj-vertical-split-div">下</div>
</div>
</div>

<div class='hj-wrap' style="height:500px;">
<div class="hj-vertical-split-div">上</div>
<label class="hj-vertical-split-label">&nbsp;</label>
<div class="hj-vertical-split-div">中</div>
<label class="hj-vertical-split-label">&nbsp;</label>
<div class="hj-vertical-split-div">下</div>
</div>

<script src="jquery-1.8.0.min.js"></script>

<script src="monitorSplitWindows.js"></script>
</div>
</body>
</html>

//==================================monitorSplitWindows.js代码=======================================

/**
* name: monitorSplitWindows.js
* route: /static/js/control/ui
* author: luozhubang
* date: 2016-10-26
* function: 监听窗口拖动事件,依赖于/static/js/control/ui/DynamicWindow.js,
* 演示地址:http://www.vfkjsd.cn/div/2/div.html
*/
$(function(){
//alert("ok");
//鼠标横向、竖向操作对象
var thisHorizontalObject,thisVerticalObject;
//文档对象
var doc = document;
//查找横向分割栏
var horizontalLabels = $(".hj-wrap").find('.hj-transverse-split-label');
//查找竖向分割栏
var verticalLabels = $(".hj-wrap").find('.hj-vertical-split-label');

//定义一个对象
function PointerObject(){
this.el = null;//当前鼠标选择的对象
this.clickX =0;//鼠标横向初始位置
this.clickY =0;//鼠标竖向初始位置
this.horizontalDragging=false;//判断鼠标可否横向拖动
this.verticalDragging=false;//判断鼠标可否竖向拖动
}

doc.onmousedown = function(e){
console.log("--mousedown--");
horizontalLabels = $(".hj-wrap").find('.hj-transverse-split-label');
verticalLabels = $(".hj-wrap").find('.hj-vertical-split-label');
//判断窗体个数,并初始化窗体宽度
if($(".hj-wrap").length>0){
for(var i=0;i<$(".hj-wrap").length;i++){
var hjDivNums = $($(".hj-wrap")[i]).children(".hj-transverse-split-div");
var defaultWidth =Math.floor(100/hjDivNums.length);
$($(".hj-wrap")[i]).children(".hj-transverse-split-div").width(defaultWidth-1+"%");
}
}
//横向分隔栏绑定事件
horizontalLabels.bind('mousedown',function(e){
thisHorizontalObject = new PointerObject();
thisHorizontalObject.horizontalDragging = true;//鼠标可横向拖动
thisHorizontalObject.el = this;
thisHorizontalObject.clickX = e.pageX;//记录鼠标横向初始位置
});

//竖向分隔栏绑定事件
verticalLabels.bind('mousedown',function(e){
console.log("----");
thisVerticalObject = new PointerObject();
thisVerticalObject.verticalDragging = true;//鼠标可竖向拖动
thisVerticalObject.el = this;
thisVerticalObject.clickY = e.pageY;//记录鼠标竖向初始位置
});
}

//横向分隔栏绑定事件
horizontalLabels.bind('mousedown',function(e){
thisHorizontalObject = new PointerObject();
thisHorizontalObject.horizontalDragging = true;//鼠标可横向拖动
thisHorizontalObject.el = this;
thisHorizontalObject.clickX = e.pageX;//记录鼠标横向初始位置
});

//竖向分隔栏绑定事件
verticalLabels.bind('mousedown',function(e){
console.log("----");
thisVerticalObject = new PointerObject();
thisVerticalObject.verticalDragging = true;//鼠标可竖向拖动
thisVerticalObject.el = this;
thisVerticalObject.clickY = e.pageY;//记录鼠标竖向初始位置
});

doc.onmousemove = function(e){
//鼠标横向拖动
if(thisHorizontalObject != null){
if (thisHorizontalObject.horizontalDragging) {
var changeDistance = 0;
var nextWidth = $(thisHorizontalObject.el).next().width();
var prevWidth = $(thisHorizontalObject.el).prev().width();
if(thisHorizontalObject.clickX>=e.pageX){
//鼠标向左移动
changeDistance = Number(thisHorizontalObject.clickX)-Number(e.pageX);
if($(thisHorizontalObject.el).prev().width()-changeDistance<20){

}else{
$(thisHorizontalObject.el).prev().width($(thisHorizontalObject.el).prev().width()-changeDistance);
$(thisHorizontalObject.el).next().width($(thisHorizontalObject.el).next().width()+changeDistance);
thisHorizontalObject.clickX=e.pageX;
$(thisHorizontalObject.el).offset({left:e.pageX-4});
}
}else{
//鼠标向右移动
changeDistance = Number(e.pageX)-Number(thisHorizontalObject.clickX);
if($(thisHorizontalObject.el).next().width()-changeDistance<20){

}else{
$(thisHorizontalObject.el).prev().width($(thisHorizontalObject.el).prev().width()+changeDistance);
$(thisHorizontalObject.el).next().width($(thisHorizontalObject.el).next().width()-changeDistance);
thisHorizontalObject.clickX=e.pageX;
$(thisHorizontalObject.el).offset({left:e.pageX-4});
}
}
$(thisHorizontalObject.el).width(10);
}
}
//鼠标竖向拖动
if(thisVerticalObject != null){
if (thisVerticalObject.verticalDragging) {
var changeDistance = 0;
var nextheight = $(thisVerticalObject.el).next().height();
var prevheight = $(thisVerticalObject.el).prev().height();
if(thisVerticalObject.clickY>=e.pageY){
//鼠标向上移动
changeDistance = Number(thisVerticalObject.clickY)-Number(e.pageY);
if($(thisVerticalObject.el).prev().height()-changeDistance<20){

}else{
$(thisVerticalObject.el).prev().height($(thisVerticalObject.el).prev().height()-changeDistance);
$(thisVerticalObject.el).next().height($(thisVerticalObject.el).next().height()+changeDistance);
thisVerticalObject.clickY=e.pageY;
$(thisVerticalObject.el).offset({top:e.pageY-4});
}
}else{
//鼠标向下移动
changeDistance = Number(e.pageY)-Number(thisVerticalObject.clickY);
if($(thisVerticalObject.el).next().height()-changeDistance<20){

}else{
$(thisVerticalObject.el).prev().height($(thisVerticalObject.el).prev().height()+changeDistance);
$(thisVerticalObject.el).next().height($(thisVerticalObject.el).next().height()-changeDistance);
thisVerticalObject.clickY=e.pageY;
$(thisVerticalObject.el).offset({top:e.pageY-4});
}
}
$(thisVerticalObject.el).height(10);
}
}
};

$(doc).mouseup(function(e) {
console.log("-+");
//鼠标释放时判断是否有横向操作对象
if (thisHorizontalObject != null) {
thisHorizontalObject.horizontalDragging = false;//修改横向可拖动状态
thisHorizontalObject = null;//当鼠标释放的时候,销毁横向对象
}
//鼠标释放时判断是否有竖向操作对象
if (thisVerticalObject != null) {
thisVerticalObject.verticalDragging = false;//修改竖向可拖动状态
thisVerticalObject = null;//当鼠标释放的时候,销毁竖向对象
}

e.cancelBubble = true;
});

});

jQuery实现动态分割的更多相关文章

  1. 转载 * jQuery实现动态分割div—通过拖动分隔栏实现上下、左右动态改变左右、上下两个相邻div的大小

    由jQuery实现上下.左右动态改变左右.上下两个div的大小,需要自己引入jquery1.8.0.min.js包 可用于页面布局. //============================ind ...

  2. jQuery实现动态分割div—通过拖动分隔栏实现上下、左右动态改变左右、上下两个相邻div的大小

    由jQuery实现上下.左右动态改变左右.上下两个div的大小,需要自己引入jquery1.8.0.min.js包 可用于页面布局. //============================ind ...

  3. jQuery实现动态分割div

    转自:https://www.cnblogs.com/herd/p/6014848.html 演示地址:http://www.vfkjsd.cn/div/2/div.html

  4. [转]jquery append 动态添加的元素事件on 不起作用的解决方案

    用jquery添加新元素很容易,面对jquery append 动态添加的元素事件on 不起作用我们该如何解决呢?on方法中要先找到原选择器(如例.info),再找到动态添加的选择器(如列.delet ...

  5. Jquery Mobile 动态添加元素然后刷新 转

    Jquery Mobile 动态添加元素然后刷新 (2013-05-09 12:39:05) 转载▼ 标签: it 分类: Mobile jquery 表单元素每一个元素都有自己刷新的方法,每当改变它 ...

  6. 【jQuery Demo】jQuery打造动态下滑菜单

    作者:漫凯维奇      来源:[教程]jQuery打造动态下滑菜单 Tip:这只是一个转载,源代码可以在上面的来源博文中下载 此教程将分步讲解如何使用JQuery和CSS打造一个炫酷动感菜单.效果如 ...

  7. 一款jQuery立体感动态下拉导航菜单特效

    一款jQuery立体感动态下拉导航菜单特效,鼠标经过,在菜单栏上方下拉出一个背景图片,效果十分不错的一款jquery特效. 对IE6都是兼容的,希望大家好好研究研究. 适用浏览器:IE6.IE7.IE ...

  8. jQuery EasyUI动态添加控件或者ajax加载页面后不能自动渲染问题的解决方法

    博客分类: jquery-easyui jQueryAjax框架HTML  现象: AJAX返回的html无法做到自动渲染为EasyUI的样式.比如:class="easyui-layout ...

  9. jquery append 动态添加的元素事件on 不起作用的解决方案

    用jquery添加新元素很容易,面对jquery append 动态添加的元素事件on 不起作用我们该如何解决呢?on方法中要先找到原选择器(如例.info),再找到动态添加的选择器(如列.delet ...

随机推荐

  1. Dapper-据说stackoverflow使用的orm

    using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; usin ...

  2. SQL SERVER 竖表变成横表

    现有数据如下: Sql: select a.MODELID, max( case a.PNAME when'计划开始' then a.PVALUE end) as RStart, max( case ...

  3. C#开发微信门户及应用(6)--微信门户菜单的管理操作

    前面几篇继续了我自己对于C#开发微信门户及应用的技术探索和相关的经验总结,继续探索微信API并分享相关的技术,一方面是为了和大家对这方面进行互动沟通,另一方面也是专心做好微信应用的底层技术开发,把基础 ...

  4. 随机记录工作中常见的sql用法错误(一)

    没事开始写博客,留下以前工作中常用的笔记,内容不全或者需要补充的可以留言,我只写我常用的. 网上很多类似动软生成器的小工具,这类工具虽然在表关系复杂的时候没什么软用,但是在一些简单的表结构关系还是很方 ...

  5. 高性能 TCP/UDP/HTTP 通信框架 HP-Socket v4.0.1

    HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/ ...

  6. emoji哈哈哈哈

    Unicode 官网上的FAQ令人发笑,啊哈哈哈 Q: What are the most popular emoji characters? Q: Do emoji characters have ...

  7. Android中使用ImageViewSwitcher实现图片切换轮播导航效果

    前面写过了使用ViewFlipper和ViewPager实现屏幕中视图切换的效果(ViewPager未实现轮播)附链接: Android中使用ViewFlipper实现屏幕切换 Android中使用V ...

  8. Android教程收集贴

    Loader & REST Rest Loader Tutorial [github源码] [源码演示] [github作者主页] Twitter Timeline Sample for An ...

  9. java 堆栈 理解

    Java 中的堆和栈 堆和栈:分为数据结构的堆和栈以及内存中的堆和栈,两种理解应区分开. 数据结构中的堆: 堆实际上指的就是(满足堆性质的)优先队列的一种数据结构,第1个元素有最高的优先权. 堆性质: ...

  10. (视频)Erich Gamma 与 Visual Studio Online 的一点野史

    大家对Erich Gamma的熟悉应该都集中在<设计模式>, Eclipse以及最近微软所发布的Visual Studio Code跨平台代码编辑器.其实在Erich加入微软的头几年里,他 ...