在Safari中使用flexbox绝对定位

And*_*ill 2 css safari css3 flexbox

Safari根据caniuse完全支持FlexBox.

我只是尝试使用flexbox将一些不同大小的div叠加在一起.我真的很好奇为什么它适用于Chrome/Firefox但不适用于Safari:

<div class="container">
  <div class="inner-one"></div>
  <div class="inner-two"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
.container {
  width: 15rem;
  height: 15rem;
  border-radius: 50%;
  background-color: blue;

  display: flex;
  align-items: center;
  justify-content: center;
}

.container div {
  position: absolute;
}

.inner-one {
  width: 13rem;
  height: 13rem;
  border-radius: 50%;
  background-color: green;
}

.inner-two {
  width: 11rem;
  height: 11rem;
  border-radius: 50%;
  background-color: purple;
}
Run Code Online (Sandbox Code Playgroud)

请参阅JSFiddle:https://jsfiddle.net/19n95exf/3/

LGS*_*Son 6

因为position: absolute;休息display: flex,请transform: translate改用

    .container {
      position: relative;
      width: 15rem;
      height: 15rem;
      border-radius: 50%;
      background-color: blue;
    }

    .container div {
      border-radius: 50%;
      position: absolute;
      top: 50%;
      left: 50%;
      transform: translate(-50%,-50%);
    }

    .inner-one {
      width: 13rem;
      height: 13rem;
      background-color: green;
    }

    .inner-two {
      width: 11rem;
      height: 11rem;
      background-color: purple;
    }
Run Code Online (Sandbox Code Playgroud)
    <div class="container">
      <div class="inner-one"></div>
      <div class="inner-two"></div>
    </div>
Run Code Online (Sandbox Code Playgroud)


或者给内部元素一个左/上值

    .container {
      width: 15rem;
      height: 15rem;
      border-radius: 50%;
      background-color: blue;

      display: flex;
      align-items: center;
      justify-content: center;
    }

    .container div {
      border-radius: 50%;
      position: absolute;
    }

    .inner-one {
      left: 1.5rem;
      top: 1.5rem;
      width: 13rem;
      height: 13rem;
      background-color: green;
    }

    .inner-two {
      left: 2.5rem;
      top: 2.5rem;
      width: 11rem;
      height: 11rem;
      background-color: purple;
    }
Run Code Online (Sandbox Code Playgroud)
<div class="container">
      <div class="inner-one"></div>
      <div class="inner-two"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

  • @AndrewHill阅读本文:https://developers.google.com/web/updates/2016/06/absolute-positioned-children (3认同)