使用可拖动事件增加 div 的宽度,并排显示

Posted

技术标签:

【中文标题】使用可拖动事件增加 div 的宽度,并排显示【英文标题】:Increase width of divs, displayed side by side, using draggable events 【发布时间】:2013-11-11 05:57:38 【问题描述】:

到目前为止,我有两个固定长度的 div,它们通过在其中动态嵌入 iframe 来加载外部 URL。 div 彼此相邻出现 - 一个在左侧,另一个在右侧。

到目前为止,我已将它们的宽度固定为50%。但是,我想让用户灵活地增加任何 div 的宽度,以便轻松查看内部的 URL without scrolling horizontally。就像根据他的需要将分隔两个 div 的边框向左或向右拖动。

有没有办法实现这一点?请推荐任何图书馆或其他东西。

我浏览了一个用于图像的库twentytwenty。我不知道这对动态 iframe 有什么作用。

这是显示 div 的 JSFiddle。

<div>
    <div id="originalPage" style="width:54%;height: 730px;float:left">  
        <p>one div </p>
    </div>
    <div id="diffReport" style="width:45%; height: 730px;float:right">
        <p>another div</p>
    </div>
</div>

【问题讨论】:

我不得不承认现在对我来说工作量太大了,但是我建议您创建 CSS 以在悬停中心区域时更改光标。然后,为 mousedown/mouseclick 附加处理程序。然后,当用户移动鼠标时,您比较鼠标位置并设置 div 的新宽度。听起来像一个计划..? 是的。我也在同一个方向思考。 @Linus 给出的答案可以达到我想的效果。 【参考方案1】:

有一个很棒的 jQuery 插件,在这里使用 jQuery Splitter:

http://jquery.jcubic.pl/splitter.php

【讨论】:

【参考方案2】:
<div>
    <div class="resizable" id="originalPage" style="width:54%;height: 730px;float:left">  
        <p>one div </p>
    </div>
    <div class="resizable" id="diffReport" style="width:45%; height: 730px;float:right">
                <p>another div</p>
    </div>
</div>

$(function() $( ".resizable" ).resizable(animate: true,animateEasing:'swing',imateDuration: 500
););

#diffReport, #originalPage
        border: 1px solid;

.ui-resizable-helper  border: 1px dotted gray; 
.resizable  display: block; width: 400px; height: 400px; padding: 30px; border: 2px solid     gray; overflow: hidden; position: relative; 
#diffReport  width: 100%; height: 100%; 
#originalPage  width: 100%; height: 100%; 

【讨论】:

稍微调整一下#diffReport 和#original 的CSS 宽度和高度,以达到您想要的效果。让我知道是否可以。 这有点用,但是在增加左 div 的宽度的同时,右一个会下降。并且没有通过拖动用户理想需要的左边框来增加右宽度的选项。可拖动事件是可以的,但我们需要,如果我们拖动一个 div,其他的大小应该自动减小,这样它就不会低于。 嗯,是的,因为两者都有相同的类(我的错),所以它们都被调整大小。改变那个。目前无法为您提供更多帮助:/【参考方案3】:

使用 jQuery UI 库来调整大小/拖动。

HTML

<div id="demo"></div>

脚本

    <script>
    $(function()$('#demo').draggable().resizable(););

    $('#demo')
        .resizable(
            start: function(e, ui) 
                alert('resizing started');
            ,
            resize: function(e, ui) 

            ,
            stop: function(e, ui) 
                alert('resizing stopped');
            
        );
</script>

小提琴是

http://jsfiddle.net/VuqbN/

更新了你的小提琴

http://jsfiddle.net/vw9qt/1/

【讨论】:

【参考方案4】:
    var isDragging = false var lastPageX = null 在现有 div 中间创建一个新 div。 将事件侦听器附加到该 div 上的 mousedown。 将isDragging 设置为truelastPageX 设置为event.pageX 将事件侦听器附加到封闭 div 上的 mousemove。 仅在isDragging 时运行 var diff event.pageX - lastPageXdiff添加到左侧可调整大小的div 从右侧可调整大小的 div 中删除 difflastPageX 设置为event.pageXdocument 上将事件侦听器附加到mouseupisDragging 设置为false

【讨论】:

add/remove that value to the two resizable divs ,无法理解这一点。

以上是关于使用可拖动事件增加 div 的宽度,并排显示的主要内容,如果未能解决你的问题,请参考以下文章

html中怎么样让div并排显示

位置2并排流体/响应(未知宽度)

css如何让两个容器并排显示

div随鼠标移动

如何实现拖动修改网页中div模块大小

当div可滚动时,div中的可拖动元素显示在放置区域的后面,需要它们显示在前面