铬和safari flex高度100%失败

时间:2017-08-17 14:15:58

标签: html css css3 safari flexbox

Chrome正常,Safari失败。如何兼容? height:100%;

我需要保留Chrome并使用Safari。我的Safari版本10.1.2(12603.3.8)



* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  outline: none;
}

* ::-webkit-scrollbar {
  width: 0;
}

html, body {
  height: 100%;
  width: 100%;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  flex-direction: column;
}

body {
  border: 5px solid red;
}

.d {
  height: 100%;
  border: 5px solid green;
}

<div class="d"></div>
<div class="d"></div>
&#13;
&#13;
&#13;

enter image description here

1 个答案:

答案 0 :(得分:0)

似乎是最近涉及flex-direction: column的Safari渲染错误。你将两个height: 100%元素放在同一个空间中,它们都以100%的高度渲染并堆叠而不是装入同一个空间。

以下是两个解决方案:

  1. height: 100%更改为height: 50%,以便这两个元素都是其父级的一半,或者......

  2. 删除height属性并添加flex: 1,以便两个孩子在父母的空间中尽可能大,并自动分成50/50。

  3. * {
      margin: 0;
      padding: 0;
      box-sizing: border-box;
      outline: none;
    }
    
    *::-webkit-scrollbar {
      width: 0;
    }
    
    html,
    body {
      height: 100%;
      width: 100%;
      display: flex;
      flex-direction: column;
    }
    
    body {
      border: 5px solid red;
    }
    
    .d {
      height: 50%;
      border: 5px solid green;
    }
    <div class="d"></div>
    <div class="d"></div>

    * {
      margin: 0;
      padding: 0;
      box-sizing: border-box;
      outline: none;
    }
    
    *::-webkit-scrollbar {
      width: 0;
    }
    
    html,
    body {
      height: 100%;
      width: 100%;
      display: flex;
      flex-direction: column;
    }
    
    body {
      border: 5px solid red;
    }
    
    .d {
      flex: 1;
      border: 5px solid green;
    }
    <div class="d"></div>
    <div class="d"></div>