【问题标题】:Resizeable: Resize div smaller than contents and make scrollable可调整大小:调整 div 的大小小于内容并使其可滚动
【发布时间】:2015-07-26 21:37:20
【问题描述】:

我有 2 个 div 需要左右调整大小(并填满彼此的空间)。 当 div 变得太小而不适合其内容时,它们需要变得可滚动。我的问题是:当设置可调整大小内的内容宽度时,例如。 canvas width='200' ,可调整大小的 div 不会调整为小于画布的大小。 这是小提琴:fiddle

我已经看过这里了: Making a div scrollable inside a resizeable container div

并在内容周围包裹另一个 div : .inner 并将其设置为 width :inherit

.inner{width:inherit;  }

    .pane {
    display: table-cell;
    width: auto;`enter code here`
    overflow:auto;
}
.left.pane {
   background-color: olivedrab; 
}


.right.pane {
    background-color: orange;  
}
canvas{width:200px ; border:solid 1px red}

我也尝试了以下方法,但它仅在左窗格宽度未使用前“固定”时才有效:

resize: function(e, ui) {
           var dif= ui.originalSize.width - ui.size.width;
            console.log(dif +'   '+ ui.originalSize.width);
          var oldWidth= $(".right.pane").width();
            $(".right.pane").width( oldWidth + dif);
        }

对强也有反应,用起来很不爽。

我认为我应该能够以某种方式覆盖可调整大小的大小不会小于内容的规则。(我无法调整内容的宽度,它们应该只是可滚动的)

我尝试了以下方法:但没有奏效

.inner{width:auto; min-width:inherit; max-width:inherit;  or 0% 100% respectively}

使左右 div 都可调整大小也不起作用 + 会留下不必要的间隙。

如何将窗格调整为小于其内容的大小,并使窗格可滚动。

非常感谢您的帮助。 珍妮塔

【问题讨论】:

  • 我不明白这是如何回答我的问题...
  • 这不是答案,而是评论。请在 jsFiddle.net 上查看您的演示,它是 404,这意味着该链接会将您带到一个不存在的网页。
  • jsfiddle.net/jenietos/o8djk8ft/5 抱歉,您修改链接名称时我没有意识到链接名称发生了变化。这个应该可以的。

标签: jquery css resizable scrollable


【解决方案1】:

我让滚动条出现在两个 div 上:DEMO 我将画布设为 100% 宽度,并将 div.left.pane 设为 .inner 的父级

HTML

<div class="wrapper">
<div class="header">
 header    
</div>
   <div class="inner-wrapper">
      <div class='left pane'> <div class="inner"><pre>  Left
 bla bla bla bla bla bla bla bla bla bla bla bla bal

  bla bla bla bla bla bla bla bla bla bla bla bla bal

  bla bla bla bla bla bla bla bla bla bla bla bla bal
  bla bla bla bla bla bla bla bla bla bla bla bla bal
           </pre>    
       </div> </div>

       <div class="right pane">Right
       <div class='inner'> 
           <canvas > </canvas>
       </div>
       </div> 
       </div>

      <div class="footer">
  Footer  
</div>   
</div>

CSS

.wrapper {
display: table;
 height:75%;
 width:90%;
    background-color: red;
}

.header {
    height: 5%;
    background-color: moccasin;  
}
.inner-wrapper{
display: table;
    overflow:auto;
width: 100%;
    height: 90%;
}

.pane {
    display: table-cell;
    width: auto;
    overflow:auto;
}
.left.pane {
   background-color: olivedrab; 
}
.inner{width:auto; min-width:inherit; max-width:inherit;}

.right.pane {
    background-color: orange;  
}
canvas{width:100% ; border:solid 1px red}
.footer {
    height: 5%;
    background-color: moccasin;  
}

【讨论】:

  • 感谢您的调查。左侧(带有pre标签)仍然没有调整大小,而且我实际上不希望画布改变形状,因为它会包含游戏,如果用户可以在观看时看到游戏(原始状态)会更好在 pre 标签中的代码处。是否可以覆盖 resizable() 的行为以限制调整大小以设置宽度,或者我应该使用另一个插件
  • 就我个人而言,我会将插件与布局保持在最低限度。如果您对替代解决方案感兴趣,我会尝试使用 flexbox。如果您需要帮助,请告诉我。至于调整器,它似乎在小提琴之外不起作用。我尝试在具有相同版本的单独页面上使用它:jquery 1.9.1 和 jquery ui 1.9.2。我也尝试了当前版本,但没有运气。
猜你喜欢
  • 2016-01-14
  • 1970-01-01
  • 2011-06-24
  • 1970-01-01
  • 2017-05-09
  • 1970-01-01
  • 2015-02-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多