flex能实现这个布局吗?

要求每个盒子可以全屏放大或隐藏。全屏时,其它盒子都隐藏。隐藏的时候,其它盒子铺满剩余空间。

这个功能 我希望只通过控制每个盒子的display:none 与否,来实现效果。 为了js 控制方便 。

阅读 1.9k
1 个回答
<html>
<head>
    <style type="text/css">
    body {margin:0;padding:0;min-height:100vh;}

    .flex-row {display:-webkit-flex;display:flex;-webkit-flex-direction:row;flex-direction:row;}
    .flex-row > .flex-main {-webkit-flex:1 1 auto;flex:1 1 auto;}
    .flex-row > .flex-side {-webkit-flex:0 0 auto;flex:0 0 auto;}

    .flex-column {display:-webkit-flex;display:flex;-webkit-flex-direction:column;flex-direction:column;}
    .flex-column > .flex-main {-webkit-flex:1 1 auto;flex:1 1 auto;}
    .flex-column > .flex-side {-webkit-flex:0 0 auto;flex:0 0 auto;}

    .grid {height:100%;padding:0.5em;box-sizing:border-box;}
    .grid .cell {position:relative;margin:0.5em;padding:0.25em 0.5em;line-height:1.5em;padding-top:1.5em;box-shadow:0 0 0 1px #CCC;}
    .grid .cell:before {content:attr(data-title);position:absolute;top:0;left:0;right:0;padding:0 0.5em;line-height:1.5em;background-color:#CCC;}
    .grid .cell-hide {display:none;}
    </style>
</head>
<body>
    <div class="flex-column grid">
        <div class="flex-main flex-row" style="flex-grow:3">
            <div class="flex-main flex-column">
                <div class="flex-main cell" style="flex-grow:1" data-title="1">abc</div>
                <div class="flex-main cell" style="flex-grow:3" data-title="2">def</div>
            </div>
            <div class="flex-main cell" data-title="3">opq</div>
        </div>
        <div class="flex-main flex-row" style="flex-grow:1">
            <div class="flex-main cell" style="flex-grow:2" data-title="4">rst</div>
            <div class="flex-main cell" style="flex-grow:1" data-title="5">xyz</div>
        </div>
    </div>
</body>
</html>
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题