在父母中分发3个chlidren

时间:2016-10-31 21:46:55

标签: css html5 flexbox

我有一个div有三个div,就像这样:

#parent
   #child-1
   #child-2
   #child-3

我希望它看起来像这样:

The desired layout

子级2应该垂直使用可用空间,因为child-3是display:none默认情况下,并且仅在某些事件上显示,因此它应该将child-2向上推。孩子-3应该尽可能高。

我喜欢使用flexbox,但我想我不能在这里使用它。 把它们放在另一个div中真的很容易,只需在那个盒子和flex-direction:列上做一个flex,但是我没有这个机会,所以它们和child-1在同一个div中。

那么使用纯CSS实现这一目标的最简单方法是什么,而不涉及HTML结构?

1 个答案:

答案 0 :(得分:1)

这是一个有效的例子:

         #parent {
            height: 50em;
         }
         div[id^=child] {
            border: 2px solid black;
            box-sizing: border-box;
         }
         #child1 {
            height: 100%;
            min-height: 32em;
            background: red;
            width: 30%;
            float: left;
            margin: 0;
         }
         #child2 {
            height: 60%;
            background: green;
            width: calc(70% - .4em);
            margin-left: calc(30% + .4em);
            margin-bottom: .4em;
         }
         #child3 {
            height: calc(40% - .4em);
            min-height: 10em;
            background: yellow;
            width: calc(70% - .4em);
            margin-left: calc(30% + .4em);
         }
<!doctype html>
<html lang="en">
   <head>
      <meta charset="utf-8">
      <title>The HTML5</title>
   </head>
   <body>
      <div id="parent">
         <div id="child1">
         </div>
         <div id="child2">
         </div>
         <div id="child3">
         </div>
      </div>
   </body>
</html>