代码之家  ›  专栏  ›  技术社区  ›  JWWalker

CSS的resize属性可以用来调整flex列宽吗?

  •  0
  • JWWalker  · 技术社区  · 7 月前

    我想要一个有两列的布局来填充页面,并允许一列使一列变宽,另一列相应地变窄。我看了看问题 CSS resize property both doesn't work properly with flex ,这就是为什么我添加了 box-sizing: border-box 比特。

    这是我的代码。我在左列的右下角看到一个调整大小的小部件,将鼠标光标放在上面会改变光标,但拖动小部件不会做任何事情。

    * {
        box-sizing: border-box;
    }
    
    .flexContainer {
        display: flex;
        flex-wrap: nowrap;
        width: 100%;
        height: 100vh;
        border-style: none;
    }
    
    div.divBlock {
        display: inline-block;
        height: 100%;
        vertical-align: top;
        border-style: none;
    }
    
    #left {
        flex-basis: 30%;
        resize: horizontal;
        overflow: auto;
        border-right-style: solid;
        border-right-width: 10px;
        flex-grow: 0;
        flex-shrink: 0;
    }
    
    #right {
        flex-grow: 1;
        flex-shrink: 1;
    }
    
    body {
        margin: 0
    }
    <div class="flexContainer">
    
    <div id="left" class="divBlock">
    </div>
    
    <div id="right" class="divBlock">
    </div>
    
    </div>
    1 回复  |  直到 7 月前
        1
  •  1
  •   zer00ne    7 月前

    更新

    我重读了OP,相信 .flexcontainer 必须保持相同的大小。如果是这样,请将以下内容应用于 .left :

    padding: 10vw; // Any width you want as a minimum.
    overflow: hidden;
    resize: horizontal;
    

    您可能还想添加 overflow: hidden <body> 或者父元素,这样滚动条就不会弹出并妨碍。

    * {
      box-sizing: border-box;
    }
    
    body {
      overflow: hidden
    }
    
    .flexContainer {
      display: flex;
      flex-wrap: nowrap;
      height: 100vh;
      border-style: none;
    }
    
    div.divBlock {
      display: inline-block;
      vertical-align: top;
      border-style: none;
    }
    
    #left {
      border-right-style: solid;
      border-right-width: 10px;
      overflow: hidden;
      resize: horizontal;
      padding: 10vw
    }
    
    #right {
    }
    
    body {
      margin: 0
    }
    <div class="flexContainer">
    
      <div id="left" class="divBlock">
      </div>
    
      <div id="right" class="divBlock">
      </div>
    
    </div>