iOS 和 Safari macOS 中的 z-index 反转

Posted

技术标签:

【中文标题】iOS 和 Safari macOS 中的 z-index 反转【英文标题】:z-index reversed in iOS and Safari macOS 【发布时间】:2019-05-27 22:35:50 【问题描述】:

这些图像的 z-index 已设置,因此它们应该是蓝色、红色、绿色,但在 ios 浏览器和 macOS 上的 Safari 中,顺序是相反的,因此它们显示绿色、红色、蓝色。

这是一个 CodePen,该问题影响所有 iOS 浏览器和 macOS 上的 Safari。

https://codepen.io/W3-design/pen/pBOJyy

html

<div class="stacked-images">
  <img src="https://via.placeholder.com/320x180/0000FF">
  <img src="https://via.placeholder.com/320x180/FF0000">
  <img src="https://via.placeholder.com/320x180/00FF00">
</div>

SCSS:

.stacked-images 
    min-height: 500px;
    position: relative;
    margin: 20px;

    img 
      position: absolute;
      opacity: 0.9;
      transition: transform .5s ease-in-out;
      transform: translateZ(-1000px) rotate3d(1,0,0,-55deg) rotate3d(0,0,1,-30deg);
      -webkit-transform: translateZ(-1000px) rotate3d(1,0,0,-55deg) rotate3d(0,0,1,-30deg);

      &:nth-of-type(1) 
        z-index: 100;
        top: 0;
      

      &:nth-of-type(2) 
        z-index: 90;
        top: 80px;
      

      &:nth-of-type(3) 
        z-index: 80;
        top: 160px;
      

      &:hover 
          transform: rotate3d(0, 0, 0, 0) scale(1.1,1.1);
          -webkit-transform: rotate3d(0, 0, 0, 0) scale(1.1,1.1);
          opacity: 1;
          z-index: 101;
      
   

我希望 z-index 在所有浏览器中都相同。

【问题讨论】:

@Paulw11,你从哪里得到这个?我读过的所有参考文献都使用“-webkit-transform:”,即使我使用“-webkit-transform:”这一行也没什么区别。 嗯。我在弄乱你的 CodePen 并让它正常工作。我认为这就是我所做的改变,但它现在不起作用...... 谢谢@Paulw11,如果你能重复你的改变就太好了,这只是一个美学的东西,但它让我烦恼:) 我在 SO 上发现了一些半副本。并不是说顺序颠倒了,我认为只是Safari忽略了z-index 我已经阅读了一些 safari z-index 问题,但似乎没有一个解决方案适用于我的示例。 【参考方案1】:

你在这里:

.stacked-images 
  min-height: 500px;
  position: relative;
  margin: 20px;


img 
  position: absolute;
  opacity: 0.9;
  transition: transform .5s ease-in-out;
  transform: translateZ(-1000px) rotate3d(1, 0, 0, 55deg) rotate3d(0, 0, 1, -30deg);


img:nth-of-type(1) 
  z-index: 100;
  top: 0;


img:nth-of-type(2) 
  z-index: 90;
  top: 80px;


img:nth-of-type(3) 
  z-index: 80;
  top: 160px;


img:hover 
  transform: rotate3d(0, 0, 0, 0) scale(1.1, 1.1);
  opacity: 1;
  z-index: 101;
<div class="stacked-images">
  <img src="https://via.placeholder.com/320x180/0000FF">
  <img src="https://via.placeholder.com/320x180/FF0000">
  <img src="https://via.placeholder.com/320x180/00FF00">
</div>

【讨论】:

谢谢@Kosh,你介意解释一下为什么会这样吗,我必须遗漏一些东西,因为除了嵌套类之外,我拥有的 SCSS 应该会产生与你提供的 CSS 类似的代码。

以上是关于iOS 和 Safari macOS 中的 z-index 反转的主要内容,如果未能解决你的问题,请参考以下文章

如何限制在 Safari(MacOS 和 iOS)中暂停时获取 hls 段文件

macOS+iOS:Safari和Webkit停止支持SHA-1证书了

MacOs 和 iOs 上 Safari 的 React 和 Axios GET 请求问题

如何在 iOS 和 macOS 上的 Safari 中使用网络摄像头录制视频?

SVG 动画在 Safari 13.1 (Mac OS & IOS) 中遇到问题

用户在iOS 13.4/macOS 10.15.4 Safari上发现有趣的Bug