【问题标题】:CSS grid issues in IE 11IE 11 中的 CSS 网格问题
【发布时间】:2019-06-24 19:23:19
【问题描述】:

我在 HTML/CSS 中创建了一个砌体样式网格。为此,我使用了

display:grid 属性与 'grid-row' 和 'grid-column'。

See attached pen.

这在 Chrome、Firefox 和 Edge 中运行良好,尚未在 Safari 上尝试过,但不幸的是,它在 IE 11 浏览器中呈现时存在问题。 它并没有得到一个漂亮的网格布局,如所附的笔所示,它只是显示了 4 个 1x1 列,彼此重叠。

我是否可以将任何特定于 IE 的属性分配给我的 CSS 类以使其在所有浏览器中正确显示?

#container {
  display:inline-block;
  overflow: hidden;            /* clip the excess when child gets bigger than parent */
}
#container img {
  display: block;
  transition: transform .4s;   /* smoother zoom */
}
#container:hover img {
  transform: scale(1.3);
  transform-origin: 50% 50%;
}
.wrapper {
display: grid;
grid-gap: 0px;
grid-template-columns: 33% 33% 33%;
grid-template-rows: 400px 400px;
color: #000;
}

.a {
grid-column: 1;
grid-row: 1/3;
text-align:center;
color:#fff;
display:block;
position:relative;
overflow:hidden;
}

.b {
grid-column: 2 / span 2;
grid-row: 1;
color:#fff;
position:relative;
overflow:hidden;
}

.c { 
grid-column: 2;
grid-row: 2;
color:#fff;
position:relative;
overflow:hidden;
}

.d { 
grid-column: 3;
grid-row: 2;
color:#fff;
position:relative;
overflow:hidden;
}



.box {
border-radius: 0px;
padding: 10px;
font-size: 150%; 
display:block;
position:relative;
}

.ctr {
    margin: 0;
    position: absolute;
    top: 50%;
    left: 50%;
    margin-right: -50%;
    transform: translate(-50%, -50%) 
}
  
 .imex-btn {
  background-color: #4080fa;
  border: none;
  color: white;
  padding: 10px 30px;
  text-align: center;
  text-decoration: none;
  display: inline-block;
  font-size: 16px;
  margin-top: 70px;
  cursor: pointer;
  font-family: "Century Gothic";
 }

.imex-btn:hover {
background-color: #000;
color: #4080fa;
}
    
    
<div class="wrapper">
  <div class="box a">
    <div id="container">
    <img id="image" src="https://via.placeholder.com/500x900
C/O https://placeholder.com/">
    <div class="ctr"><h2 class="white">BOX A<h2>
</div>
<a href="#" class="ctr imex-btn">VIEW NOW</a>
    </div>
  </div>
  <div class="box b">
    <div id="container">
    <img id="image" src="https://via.placeholder.com/1200x900/C/O https://placeholder.com/">
   <div class="ctr"><h2 class="white">BOX B</h2>
</div>
<a href="#" class="ctr imex-btn">VIEW NOW</a>
   </div>
  </div>
   <div class="box c">
    <div id="container">
    <img id="image" src="https://via.placeholder.com/500x500
C/O https://placeholder.com/">
    <div class="ctr"><h2 class="white" style="text-align:center">BOX C</h2>
</div>
<a href="#" class="ctr imex-btn">READ MORE</a>
    </div>
  </div>
   <div class="box d">
    <div id="container">
    <img id="image" src="https://via.placeholder.com/500x500
C/O https://placeholder.com/">
    <div class="ctr"><h2 class="white" style="text-align:center">BOX D</h2>
</div>
<a href="#" class="ctr imex-btn">READ MORE</a>
    </div>
  </div>

  
</div>

【问题讨论】:

标签: html css internet-explorer-11 css-grid


【解决方案1】:

尝试改变 CSS

网格模板列:33% 33% 33%;

网格模板列:1fr 1fr 1fr;

【讨论】:

    【解决方案2】:

    由于执行标准,某些元素无法在 IE11 上正确呈现。 尝试为 display: grid、grid-column 和 grid-row 等元素添加 -ms- 前缀。

    在旧版本的 Safari 上进行测试时,您可能会遇到同样的问题(在这种情况下,请尝试使用 -webkit 前缀)。

    【讨论】:

      【解决方案3】:

      我添加了一些 css 使它在 IE 中工作。注意css中添加的-ms-前缀。你也可以参考this article,里面解释了如何在IE中支持css网格。

      #container {
                  display: inline-block;
                  overflow: hidden; /* clip the excess when child gets bigger than parent */
              }
      
                  #container img {
                      display: block;
                      transition: transform .4s; /* smoother zoom */
                  }
      
                  #container:hover img {
                      transform: scale(1.3);
                      transform-origin: 50% 50%;
                  }
      
              .wrapper {
                  display: -ms-grid;
                  display: grid;
                  grid-gap: 0px;
                  grid-template-columns: 33% 33% 33%;
                  -ms-grid-columns: 33% 33% 33%;
                  grid-template-rows: 400px 400px;
                  -ms-grid-rows: 400px 400px;
                  color: #000;
              }
      
              .a {
                  grid-column: 1;
                  grid-row: 1/3;
                  -ms-grid-column: 1;
                  -ms-grid-row-span: 2;
                  text-align: center;
                  color: #fff;
                  display: block;
                  position: relative;
                  overflow: hidden;
              }
      
              .b {
                  grid-column: 2 / span 2;
                  grid-row: 1;
                  -ms-grid-row:1;
                  -ms-grid-column-span: 2;
                  -ms-grid-column:2;
                  color: #fff;
                  position: relative;
                  overflow: hidden;
              }
      
              .c {
                  grid-column: 2;
                  grid-row: 2;
                  -ms-grid-column:2;
                  -ms-grid-row:2;
                  color: #fff;
                  position: relative;
                  overflow: hidden;
              }
      
              .d {
                  grid-column: 3;
                  grid-row: 2;
                  -ms-grid-column:3;
                  -ms-grid-row:2;
                  color: #fff;
                  position: relative;
                  overflow: hidden;
              }
      
      
      
              .box {
                  border-radius: 0px;
                  padding: 10px;
                  font-size: 150%;
                  display: block;
                  position: relative;
              }
      
              .ctr {
                  margin: 0;
                  position: absolute;
                  top: 50%;
                  left: 50%;
                  margin-right: -50%;
                  transform: translate(-50%, -50%)
              }
      
              .imex-btn {
                  background-color: #4080fa;
                  border: none;
                  color: white;
                  padding: 10px 30px;
                  text-align: center;
                  text-decoration: none;
                  display: inline-block;
                  font-size: 16px;
                  margin-top: 70px;
                  cursor: pointer;
                  font-family: "Century Gothic";
              }
      
                  .imex-btn:hover {
                      background-color: #000;
                      color: #4080fa;
                  }
      <div class="wrapper">
              <div class="box a">
                  <div id="container">
                      <img id="image" src="https://via.placeholder.com/500x900
      C/O https://placeholder.com/">
                      <div class="ctr">
                          <h2 class="white">BOX A</h2>
                      </div>
                      <a href="#" class="ctr imex-btn">VIEW NOW</a>
                  </div>
              </div>
              <div class="box b">
                  <div id="container">
                      <img id="image" src="https://via.placeholder.com/1200x900/C/O https://placeholder.com/">
                      <div class="ctr">
                          <h2 class="white">BOX B</h2>
                      </div>
                      <a href="#" class="ctr imex-btn">VIEW NOW</a>
                  </div>
              </div>
              <div class="box c">
                  <div id="container">
                      <img id="image" src="https://via.placeholder.com/500x500
      C/O https://placeholder.com/">
                      <div class="ctr">
                          <h2 class="white" style="text-align:center">BOX C</h2>
                      </div>
                      <a href="#" class="ctr imex-btn">READ MORE</a>
                  </div>
              </div>
              <div class="box d">
                  <div id="container">
                      <img id="image" src="https://via.placeholder.com/500x500
      C/O https://placeholder.com/">
                      <div class="ctr">
                          <h2 class="white" style="text-align:center">BOX D</h2>
                      </div>
                      <a href="#" class="ctr imex-btn">READ MORE</a>
                  </div>
              </div>
          </div>

      【讨论】:

      • 如果有人有疑问,sn-p 在正版 IE11 中运行良好;)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-25
      • 1970-01-01
      • 2014-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多