`
starbhhc
  • 浏览: 649576 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

实现可以左右拖动的分栏

 
阅读更多

http://www.sharejs.com/cat-133.aspx  示例。。。。

 

代码使用方法:

在网页<head>区添加以下代码
<script type="text/javascript" src="js/mootools-1.2.3-core-yc.js"></script>
<script type="text/javascript" src="js/mootools-1.2.3.1-more.js"></script>
  <style type="text/css">
  .clear { clear:both;}
  p  { padding:10px;}
  
  
  #message{ 
   border:1px solid #DDD;
   background:#FFFFEE;
   text-align:center;
   padding:4px;
   min-height:20px;
   margin-bottom:10px;
   -moz-border-radius: 6px;
   -webkit-border-radius: 6px;
   }
  #col_wrapper{
   border:1px solid #0066cc;
   position:relative;
   min-height:300px;
   margin-top:30px;
   }
  .column  {
   position:relative;
   min-height:300px;
   }
  #col_1  {
   position:absolute;
   top:0px;
   left:0px;
   width:200px;
   background:#ECECEC;
   }
  #col_2  {
   position:absolute;
   top:0px;
   left:200px;
   width:558px;
   border-right:1px dotted #0066cc;
   border-left:1px dotted #0066cc;
   background:#EEEEEE;
   }
  #col_3  {
   position:absolute;
   top:0px;
   left:760px;
   width: 200px;
   background:#EDEDED;
   }
  .column .col_title{
   padding:4px;
   background:#0066cc;
   border-bottom:1px solid #FFF;
   color:#FFF;
   }
  .column .col_msg{
   float:right;
   font-size:90%;
   color:#FFF;
   
   }
  .resize {
   position: absolute;
   top: 26px;
   right: -3px;
   height: 30px;
   width: 3px;
   background: #666 url("images/handle.gif");
   cursor: col-resize;
   z-index:200;
   -moz-border-radius: 2px;
   -webkit-border-radius: 2px;
   border: 1px solid #666;

   }

  </style>
  
  <script type="text/javascript">
/******************************************************
* mootools实现可以左右拖动的分栏 Share JavaScript (http://www.ShareJS.com)
* 使用此脚本程序,请保留此声明
* 获取此脚本以及更多的JavaScript程序,请访问 http://www.ShareJS.com
******************************************************/

  window.addEvent('domready', function() {
   // define column elemnts
   var col_wrap = $('col_wrapper'); // define the column wrapper so as to be able to get the total width via mootools
   var col_left = $('col_1');
   var col_center = $('col_2');
   var col_right = $('col_3');
      
   // define padding (seperator line widths) for column borders as defined in css
   var pad   =  1;
   
   // define snap if required - set to 0 for no snap
   var w_snap  = 5;
   
   var w_total  = col_wrap.getWidth()-(pad*2); // total width of wrapper
   var w_min  = 120;       // minimum width for columns
   var w_min_c  = w_min-(2*pad);
   
   // define message output elements (not essential to script)
   var col_1_msg = $("col_1_msg");
   var col_2_msg = $("col_2_msg");
   var col_3_msg = $("col_3_msg");
   
   //show column start widths in col headers (just for show)
   col_1_msg.innerHTML = col_left.getWidth()+"px";
   col_2_msg.innerHTML = col_center.getWidth()+"px";
   col_3_msg.innerHTML = col_right.getWidth()+"px";
   

   
   // left column - affects center column position and width
   col_left.makeResizable({
    handle: col_left.getChildren('.resize'),
    grid: w_snap,
    modifiers: {x: 'width', y: false},
    limit: {x: [w_min,null]},
    
    
    onStart:function(el){
     // get available width - total width minus right column - minimum col with
     w_avail=(w_total-col_right.getWidth())-w_min;
    },
    onDrag: function(el) {
     if(el.getWidth()>=w_avail){
      // max width reached - stop drag (force max widths)
      el.setStyle("width",w_avail);
     }
     
     // set center col left position
     col_center.setStyle("left",col_left.getWidth());
     
     // define and set center col width (total minus left minus right)
     w_center=w_total-col_left.getWidth()-col_right.getWidth();
     col_center.setStyle("width",w_center.toInt()-(pad*2));
     
     // messages
     col_1_msg.innerHTML=" "+col_left.getWidth()+"px";
     col_2_msg.innerHTML=" "+col_center.getWidth()+"px";
     col_3_msg.innerHTML=" "+col_right.getWidth()+"px";
    },
    onComplete: function() {
     //could add final width to form field here
    }
   });
   
   // mootools can't resize to the left so we have to resize the center column rather than the right-hand column
   col_center.makeResizable({
    handle: col_center.getChildren('.resize'),
    grid: w_snap,
    modifiers: {x: 'width', y: false},
    limit: {x: [w_min_c,null]},
    
    
    
    onStart:function(el){
     // get start width so as to be able to adjust center column width
     w_start=el.getWidth();      
     
     // get available width - total width minus left column - minimum col with
     w_avail=w_total-col_left.getWidth()-w_min-(pad*2);
    },
    onDrag: function(el) {
     if(el.getWidth()>=w_avail){
      // max width reached - stop drag (force max widths)
      el.setStyle("width",w_avail);
     }else if(el.getWidth()==w_min_c){
      // ensure that right col has complete available width
      el.setStyle("width",w_min_c);
     }
     
     
     // define new left position
     l_new = col_left.getWidth()+col_center.getWidth(); // force left space for right col
     col_right.setStyle("left",l_new.toInt());
     
     
     // define and set right column width -  will always be result of left and center columns
     w_new = w_total-col_left.getWidth()-col_center.getWidth();
     col_right.setStyle("width",w_new.toInt());
     
     // show messages
     col_1_msg.innerHTML=" "+col_left.getWidth()+"px";
     col_2_msg.innerHTML=" "+col_center.getWidth()+"px";
     col_3_msg.innerHTML=" "+col_right.getWidth()+"px";
    },
    onComplete: function() {
     //could add final width to form field here
    }
    
   });
  });
  </script>


在网页<body>区添加以下代码

 

<div id="col_wrapper">
   <div id="col_1" class="column drag_width">
    <div id="col_1_title" class="col_title">&nbsp;<span id="col_1_msg" class="col_msg"></span></div>
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
    <div class="resize"></div>
   </div>
   <div id="col_2" class="column drag_width">
    <div id="col_1_title" class="col_title">&nbsp;<span id="col_2_msg" class="col_msg"></span></div>
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
    <div class="resize"></div>
    </div>
   <div id="col_3" class="column">
    <div id="col_1_title" class="col_title">&nbsp;<span id="col_3_msg" class="col_msg"></span></div>
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
   </div>
   <div class="clear"></div>
  </div>
  <p>
  <ul>
   <li>Drag the column handles to adjust the column widths.</li>
   <li>Uses <a href="http://www.mootools.net" title="Mootools" target="_blank">Mootools</a> v1.2.3</li>
   <li>See source code for implementation</li>
   <li>How to use at <a href="http://blog.cbolson.com/mootools-expandable-columns/" title="Back to blog">the blog</a></li>
   <li>Help and Suggestions on the <a href="http://forum.cbolson.com/viewforum.php?f=15" title="Need Help">forum</a></li>
  </ul>
  </p>
 </div>

 

 

 

分享到:
评论

相关推荐

    VB窗口实现左右分栏可拖动改变左右大小比例

    当鼠标在分栏边界附近移动时,我们将启用Timer,这样可以确保只有在用户试图拖动分栏时才会触发更新大小的代码。当鼠标按下并移动时,我们需要捕获鼠标的位置变化,并根据这个变化实时调整左侧Panel的Width,同时...

    DIV分栏宽度可以左右拖动变化的JS代码

    本主题聚焦于一个特定的交互式功能:使 `DIV` 分栏的宽度可以通过用户左右拖动来动态调整。这种功能可以提升用户体验,特别是在需要用户自定义视图或比较不同数据时。 首先,要实现这个功能,我们需要引入...

    vue中实现拖动调整左右两侧div的宽度的示例代码

    在本文中,我们将深入探讨如何使用Vue.js来实现一个拖动调整左右两侧div宽度的功能。这个功能允许用户通过拖动一个中间的分割条来动态调整相邻div的宽度。这对于创建可响应的布局和提供用户友好的界面非常有帮助。 ...

    分栏式程序菜单vb例子

    通过查看和运行这些示例,可以更直观地理解分栏式程序菜单的实现过程。如果遇到问题,应仔细检查代码逻辑,确保菜单项的创建和事件处理都已正确配置。 总之,创建分栏式程序菜单是VB编程中的一项基本技能。通过熟练...

    左右两栏布局右侧自适应+左右拖动改变两栏宽度

    在网页设计中,创建左右两栏布局并且支持用户通过拖动改变两栏宽度是一种常见的交互方式,这可以提供更灵活的界面体验。本示例主要涉及的技术点包括HTML基础、CSS布局以及JavaScript事件处理。 首先,HTML结构是...

    C# WPF实现SplitContainer上下左右隐藏与显示

    SplitContainer控件通常用于创建可自定义布局的应用程序,用户可以通过拖动分隔条来改变各个部分的大小。本教程将深入探讨如何在WPF中实现SplitContainer的上下左右隐藏与显示功能,以提供更加灵活的用户界面体验。 ...

    splitter.js 分割div 自由拖动

    这个库使得开发者能够轻松地将页面分为上下、左右等多栏布局,并允许用户根据自己的需求动态改变这些分栏的大小。在网页设计中,这种功能常见于代码编辑器、数据预览界面或者需要对比不同内容的场景。 1. **基本...

    JS 实现 DIV 拖拽

    JS 实现 DIV 拖拽,

    [Word基础教程合集一]文档分栏.docx

    这可以通过鼠标左键拖动或键盘上的上下左右键来实现。 2. 同样地,点击“格式”菜单,然后选择“分栏”选项。 3. 在弹出的“分栏”对话框中,选择你需要的栏数,然后点击“确定”。 4. 此时,只有你选中的段落会被...

    jQuery小插件:网页上下分栏移动,支持拖拽

    内容索引:脚本资源,Ajax/JavaScript,分栏,拖拽,jQuery jQuery写的小插件,支持拖拽分栏的小插件,项目需求 只是做一个上下分栏拖拽的移动,想到以后可以继续使用,做成插件,支持上下左右两种移动方式,希望能给...

    SplitterDemo.zip

    【标题】"SplitterDemo.zip" 是一个包含MFC(Microsoft Foundation Classes)应用程序示例的压缩包,旨在演示如何创建并实现左右分栏效果。在Windows应用开发中,MFC库是一个强大的工具,它为开发者提供了C++封装的...

    word小技巧word小技巧

    - 在调整文档边距时,按住Alt键拖动左右或上下边距,可以在标尺上看到精确数值,实现精确调整。 - 按住Alt进行图形或艺术字的操作,能实现精确的形状、大小和位置调整。 - 按住Alt单击单元格,可快速选定整列;按...

    办公应用技巧

    - **精确调整边距**:按住 Alt 键拖动左右或上下边距,可以在标尺上看到精确数值,实现精确调整。 - **调整图形和艺术字**:按住 Alt 操作,可以精确调整这些对象的形状、大小和位置。 - **选定单元格和表格**:按住...

    word编辑简介里面有大部分word编辑功能

    - 按住Alt键拖动边距可以精确调整文档的左右或上下边距,边距值会在标尺上显示。 - 按住Alt进行图形或艺术字操作,能精确调整它们的形状、大小和位置。 - 按住Alt单击单元格选定整列,Alt双击表格任何位置选定...

    jqueryeasyui1.22

    1. **LAYOUT**:布局组件是EasyUI的核心,它允许开发者创建响应式网格系统,可以灵活地划分页面区域,实现上下左右的分栏布局,还可以动态调整大小,适应不同屏幕尺寸。 2. **MESSAGEBOX**:消息框组件是用于弹出...

    计算机统考试题.pdf

    15. 移动窗口可以通过拖动标题栏来实现。 16. Windows中的文件夹可以用来组织和管理文件,可以存放各种类型的数据,包括设备文件。 17. 将文件或文件夹移动到不同驱动器,需按住Shift键拖动。 18. "写字板"和...

    计算机职称考试word模拟理论题及答案.pdf

    6. 绘图工具中的自选图形:使用“绘图”工具栏的“自选图形”时,按住Ctrl键拖动,可以实现从图形中心向外绘制。 7. 自定义工具栏:在“自定义”对话框中,通过拖动鼠标左键,可以从命令列表中将命令按钮添加到工具...

    北师网络教育计算机基础3作业.pdf

    它可以用于创建、编辑和格式化文本,同时支持插入图片、图表、形状等元素,实现图文混排。此外,Word还提供了查找和替换功能,方便用户快速修改文档内容。 【文本框插入】:在Word中,如果需要插入文本框,可以通过...

    WORD应用技巧大汇集

    - **精确调整边距**:按住Alt键并拖动文档边缘的标尺,可以精确调整左右或上下边距,并在标尺上看到具体数值。 - **图形与对象微调**:通过Alt键结合鼠标,可以精确调整插入的图片、艺术字或其他对象的形状、大小...

Global site tag (gtag.js) - Google Analytics