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

使用CSS网格在IE11中居中

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

    我目前正试图通过CSS网格将元素(垂直和水平)居中。经过一些研究,IE11似乎通过不同于最新浏览器(边缘浏览器、Safari浏览器、Chrome浏览器等)的语法支持CSS网格。我正在使用 display:-ms-grid 语法,这是将我的元素放在屏幕的左上角,而不是按我的意愿将它们居中。请注意,发布的示例在其他浏览器中确实可以正常工作。

    <div style="height:100%;display:grid;display:-ms-grid;">
         <div style="margin:auto" align="center">
              <img id="logo" alt="Logo" style="width:250px;margin-top:-5%" src="data:image/svg+xml;base64,xxxxxxxxxxxxx">
              <div style="margin-top:2%;" class="loader"></div>
         </div>
    </div>
    

    如何克服IE11的中心问题?

    更新: 我已经能够将它垂直居中,但还不能水平居中。我现在在这里:

    <div style="height:100%;display:grid;display:-ms-grid;-ms-grid-columns:2fr 2fr 2fr;">
         <div style="margin:auto;-ms-grid-column:2;" align="center">
              <img id="logo" alt="Logo" style="width:250px;margin-top:-5%" src="data:image/svg+xml;base64,xxxxxxxxxxxxx">
              <div style="margin-top:2%;" class="loader"></div>
         </div>
    </div>
    
    2 回复  |  直到 7 年前
        1
  •  0
  •   GregH    7 年前

    看来我在IE10/11中找到了一个有效的解决方案来支持这一点。基本上定义3列和3行 -ms-grid 通过使用 -ms-grid-columns -ms-grid-rows 然后指定我要居中的内容应位于第2列和第2行(中间),方法是使用 -ms-grid-column -ms-grid-row . 解决方案如下:

    <div style="height:100%;display:grid;display:-ms-grid;-ms-grid-columns:2fr 2fr 2fr;-ms-grid-rows: 2fr 2fr 2fr;">
         <div style="margin:auto;-ms-grid-column:2;-ms-grid-row:2;" align="center">
              <img id="logo" alt="Logo" style="width:250px;margin-top:-5%" src="data:image/svg+xml;base64,xxxxxxxxxxxxx">
              <div style="margin-top:2%;" class="loader"></div>
         </div>
    </div>
    
        2
  •  0
  •   Mordecai    7 年前

    CSS

    .grid-container {
      height: 100%;
      display: -ms-grid;
      display: grid;
      -webkit-box-pack: center;
      -ms-flex-pack: center;
      justify-content: center;
      -ms-flex-line-pack: center;
      align-content: center
    }
    

    HTML

    <div class="grid-container">
      <img id="logo" alt="Logo" width="250px" src="data:image/svg+xml;base64,xxxxxxxxxxxxx" />
    </div>