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

简单css网格不适用于IE11

  •  1
  • Tomer  · 技术社区  · 7 年前

    我正在试验css网格,并试图制作一个简单的示例,但它似乎在IE11上不起作用,尽管我使用了适当的语法:

    .grid {
      background: gold;
      height: 90vh;
      display: -ms-grid;
      display: grid;
      grid-gap: 20px;
      -ms-grid-columns: 405px 1fr;
      grid-template-columns: 405px 1fr;
      grid-template-rows: 1fr;
      -ms-grid-rows: 1fr;
    }
    
    section {
      background: red;
    }
    <div class="grid">
      <section>
        section1
      </section>
      <section>
        section2
      </section>
    </div>
    1 回复  |  直到 7 年前
        1
  •  2
  •   Tomer    7 年前

    显然,您需要显式设置网格中每个元素的位置,因此对于问题中的示例,您需要执行以下操作:

    <div class="grid">
      <section class="s1">
        section1    
      </section>
      <section class="s2">
        section2
      </section>
    </div>
    
    .s1 {
      padding: 20px;
      background: red;
      -ms-grid-row: 1;
      -ms-grid-column: 1;
    
    }
    
    .s2 {
      padding: 20px;
      background: green;
      -ms-grid-row: 1;
      -ms-grid-column: 2;
    
    }
    

    手动执行可能非常乏味,但如果使用网格模板区域, autoprefixer 将自动为您渲染。

    最后一个示例如下所示:

    .grid {
      grid-template-areas: "s1 s2";
      background: gold;
      height: 500px;
      display: -ms-grid;
      display: grid;
      grid-gap: 20px;
      -ms-grid-columns: 405px 1fr;
      grid-template-columns: 405px 1fr;
      grid-template-rows: 1fr;
      -ms-grid-rows: 1fr;
    }
    
    .grid .grid{
        height: 300px;
    }
    
    .s1 {
      padding: 20px;
      background: red;
      -ms-grid-row: 1;
      -ms-grid-column: 1;
      grid-area: s1;
    }
    
    .s1 .s1 {
      background: teal;
    }
    
    .s2 {
      padding: 20px;
      background: green;
      -ms-grid-row: 1;
      -ms-grid-column: 2;
      grid-area: s2;
    }
    
    .s2 .s2 {
      background: yellow;
    }
    
    section section {
      background: green;
    }
    <div class="grid">
      <section class="s1">
        section1    
      </section>
      <section class="s2">
        <div class="grid">
          <section class="s1">
        nested-section1    
      </section>
      <section class="s2">
        nested-section2
      </section>
        </div>
      </section>
    </div>