鼠标拖拉div宽度
先看效果
先进入页面
当鼠标停留在中间div时,鼠标变成双箭头
点击拖拉
往右边拉
往最左边拉
代码
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 5 <!--<script class="jquery library" src="/js/sandbox/jquery/jquery-1.8.2.min.js" type="text/javascript"></script>--> 6 <script src="http://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script> 7 <title> 8 RunJS 演示代码 9 </title> 10 <style> 11 /*设置所有的厚度和元素间为0*/ 12 * { 13 margin: 0; 14 padding: 0; 15 } 16 17 /*设置页面背景颜色*/ 18 body { 19 background-color: #af4040; 20 } 21 22 /*设置所有div绝对定位且左浮动,高度为500px*/ 23 div { 24 position: absolute; 25 float: left; 26 height: 500px; 27 } 28 29 /*设置左边div背景颜色、宽度为200px、左边距离窗口为0*/ 30 div.left { 31 background-color: #B2B2B2; 32 width: 200px; 33 left: 0px; 34 } 35 36 /*设置右边div背景颜色、宽度200px、右边距离窗口为205px、右浮动*/ 37 div.right { 38 background-color: #00B83F; 39 width: 200px; 40 right: 205px; 41 float: right; 42 } 43 44 /*设置中间div宽度5px、鼠标为左右两个箭头、背景颜色、元素的堆叠顺序为[后来者居上的准则]、左边距离窗口200px*/ 45 div.center { 46 width: 5px; 47 cursor: col-resize; 48 background-color: #FFB951; 49 z-index: 1; 50 left: 200px; 51 } 52 </style> 53 <script> 54 $(function () { 55 // 分别是:当前窗口、左边div、中间div、右边div 56 var doc = $(document), dl = $("div.left"), dc = $("div.center"), dr = $("div.right"); 57 // 三个div宽度的总和 58 var sum = dl.width() + dr.width() + dc.width(); 59 // 中间div拖动鼠标事件 60 dc.mousedown(function (e) { 61 // 把当前中间div的dom对象转为jquery对象 62 // var me = $(this); 63 // e.clientX当前鼠标的x轴长度,me.css("left")中间div距离左边长度,me.prop("clientLeft")中间div距离左边div长度 64 var deltaX = e.clientX - (parseFloat(dc.css("left")) || parseFloat(dc.prop("border-left"))); 65 // deltaX表示记录鼠标点击时,距离中间div左边的距离,取值范围不会超过中间div的宽度 66 // 鼠标移动事件 67 doc.mousemove(function (e) { 68 // lt表示鼠标移动时,中间div左边距离左边窗口的长度 69 var lt = e.clientX - deltaX; 70 // 这里表示,当中间div左边距离左边窗口的长度小于等于0时就等于0,就是保证不小于0 71 lt = lt < 0 ? 0 : lt; 72 // 这里表示,当中间div左边距离左边窗口的长度大于左边div加中间div长度时就等于左边div加中间div长度,就是保证不大于左边div加中间div的长度 73 lt = lt > sum - dc.width() ? sum - dc.width() : lt; 74 // 设置中间div左边的宽度,也就是等于当前鼠标的x轴 75 dc.css("left", lt + "px"); 76 // 设置左边div的宽度 77 dl.width(lt); 78 // 设置右边div的宽度 79 dr.width(sum - lt - dc.width()); 80 }); 81 }); 82 83 // 鼠标松开后删除鼠标移动事件 84 doc.mouseup(function () { 85 doc.unbind("mousemove"); 86 }); 87 88 // 当鼠标点击移动开始不选中div里的内容 89 doc[0].onselectstart = function () { 90 return false; 91 }; 92 }); 93 </script> 94 </head> 95 <body> 96 <div class="left"> 97 这是左边的div 98 </div> 99 <div class="center"> 100 这是中间的div 101 </div> 102 <div class="right"> 103 这是右边的div 104 </div> 105 </body> 106 </html>