【问题标题】:flex-basis: 0 with overflow hidden adding space awkwardlyflex-basis: 0 with overflow hidden 笨拙地增加空间
【发布时间】:2017-07-17 17:41:35
【问题描述】:

我正在尝试通过转换 flex 和 flex-basis 属性来暂时隐藏一些内容。

以下链接是对我遇到的问题的过度简化演示。看看第一项如何继承额外的空间...... http://codepen.io/mr_webster/pen/BWNWKo

<div class="box">
<div class="item first">item</div>
<div class="item second">
<p>item</p>
</div>
<div class="item third">
<p>item</p>
</div>
<div class="item forth">item</div>
</div>

.box {
display: flex;
flex-wrap: wrap;
}

.item {
flex: 1 0 50%;
background: tomato;
overflow: hidden;
}

.first { flex: 0 0 100%; }
.second { flex: 0 0 0; }
.forth { flex: 0 0 100%; }

这里的第二个链接更符合我想要实现的目标,但仍然演示了添加额外空间的问题。 http://codepen.io/mr_webster/pen/oZXBMd

任何关于为什么会发生这种情况或如何解决它的建议将不胜感激。 :)

【问题讨论】:

    标签: css sass flexbox frontend


    【解决方案1】:

    这是我想出的一个可能的解决方案,虽然它感觉很老套,我希望有更优雅的东西。 http://codepen.io/mr_webster/pen/mWJzRR

    我正在转换容器元素的最大高度和变换。

    <div class="item second">
      <div class="second-container">
        <p>item</p>
        <p>item</p>
      </div>
    </div>
    
    .second-container {
      transition-property: max-height, transform;
      transition-timing-function: ease-in-out;
      transition-duration: 2s;
      transform: translateX(0);
      max-height: 1000px;
      width: 200px;
      overflow: hidden;
    }
    
    second-container {
      max-height: 0;
      transform: translateX(-100%);
    }
    

    【讨论】:

      【解决方案2】:

      在您的第二个链接中,单击按钮后添加的空间是由第二个 div &lt;div class="item second"&gt; 引起的,因为从技术上讲,它仍然是正常流程的一部分。解决此问题的方法是在单击按钮后“删除”第二个 div。对您的代码进行以下编辑:

      .box {
        display: flex;
        flex-wrap: wrap;
        background: tomato; /*add background color to your .box. This is needed for animation reasons*/
      }
      
      .box.toggle {
        .second {
          flex: 0 1 0%;
          height: 0; /* This hides the second div and removes the space you're referring to.*/
        }
      }
      

      希望这对你有用。

      【讨论】:

      • 至于最终状态,这绝对有效,但这种方法在过渡期间造成的突然差距是我正在努力解决的问题。我在转换最大高度方面取得了一些成功,虽然它似乎可以工作,但它在某些渲染步骤中给了我一些奇怪的闪烁。
      猜你喜欢
      • 1970-01-01
      • 2020-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      • 2018-05-14
      • 2014-09-16
      • 2011-10-17
      相关资源
      最近更新 更多