覆盖div不会在Safari(webkit)上显示

时间:2016-12-14 05:25:41

标签: html5 css3 safari sass webkit

我有一个div,我想在一个覆盖屏幕的不透明图像上居中。我已经让它在Chrome中工作正常(眨眼),但我不能让它出现在Safari(webkit)中。我已经创建了simplified JSFiddle version of my issue并在此处包含了代码段。

HTML

<div id="home">
  <div class="wallpaper"></div>
  <div class="info-wrapper">
    <span class="name">John Doe</span>
  </div>
</div>

SCSS

#home {
  position: relative;
  width: 100%;
  height: 100vh;
  min-height: inherit;
  display: flex;
  align-items: center;
  background-color: black;
}

.wallpaper {
  width: 100%;
  height: 100%;
  min-height: inherit;
  opacity: .5;
  background: url(https://images.unsplash.com/photo-1440700265116-fe3f91810d72);
  background-size: cover;
  background-repeat: no-repeat;
}

.info-wrapper {
  position: absolute;
  display: flex;
  justify-content: center;
  width: 100%;
  color: white;
  > .name {
    font-weight: 700;
    font-size: 7em;
  }
}

如果能够更轻松地解决这个问题,我愿意改变HTML的结构。

1 个答案:

答案 0 :(得分:1)

[更新]

  

如果元素具有'position:absolute',则包含块由最近的祖先建立,其“位置”为“绝对”,“相对”或“固定”

您可以在此link

中获取更多详细信息

.container {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  position: relative;
}

.red {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  width: 200px;
  height: 200px;
  background-color: red;
}

.green {
  width: 20px;
  height: 20px;
  background-color: green;
  position: absolute;
}
<div class="container">
  <div class="red"></div>
  <div class="green"></div>
</div>

在此示例中,绿色框未设置left属性,值应为auto,结果应引用最近的元素。并且,这在Safari和Firefox中显示正确。 Chrome无法达到标准。

[旧]

我认为你需要的是让壁纸流出文件。在safari中运行示例。 sample

.wallpaper {
    width: 100%;
    height: 100%;
    position: absolute;
    min-height: inherit;
    opacity: .5;
    background: url(https://images.unsplash.com/photo-1440700265116-    fe3f91810d72);
    background-size: cover;
    background-repeat: no-repeat;
}