【问题标题】:transform:rotate() forces video on top of all elementstransform:rotate() 将视频强制置于所有元素之上
【发布时间】:2021-01-27 00:05:35
【问题描述】:

我有这个元素 (.tas-fullscreen),它包含一个 .media-container 和一个 .content-container。媒体容器包含视频元素,内容容器包含文本。不旋转 .tas-fullscreen 元素时看起来不错,但是当我旋转它时,视频元素会自动放置在所有元素之上。文本元素应始终位于视频元素之上。

我尝试过在 .content-container 上使用高 z-index,在 .media-container 上使用低 z-index,但没有任何效果。

这是一个简单的例子

.tas-fullscreen{
    position: absolute;
    left: 0px;
    top:600px;
    overflow: hidden;
    z-index: 10;
    height: 300px;
    width: 600px;
    font-size: 46px;
    transform: rotate(-90deg);
    transform-origin: 0% 0%;
    display: flex;
}

.media-container{
  position:absolute;
  top:0;
  left:0;
  width:100%;
  height:100%;
  z-index:0;
}

.media-content{
  width: 100%;
    height: 100%;
    position: absolute;
    top: 0;
    left: 0;
    z-index:10;
}

video{
  object-fit: cover;
  height: 100%;
  width:100%;
  z-index:0;
}
<div class="tas-fullscreen">
<div>
<div class="media-container">
<video class="video" autoplay="true" loop="" muted="" data-origwidth="0" data-origheight="0"><source src="https://theadstore.io/wp-content/uploads/2020/09/dcf3ca22-d06f-44d1-b140-b7fdbf7faffa.mp4" type="video/mp4"></video>
</div>
<div class="media-content">
<div class="heading">
This is the header
</div>
<div class="body">
This is the body
</div>
</div>
</div>
</div>

https://theadstore.io/?p=2232&a=niels

希望你能帮助我。

【问题讨论】:

  • 您能否添加一个演示问题的最小代码示例。
  • @AHaworth 我添加了一个简单的例子,谢谢。
  • 嗨,您的 sn-p 正在 Windows 10 Edge 和 Chrome 上运行(因为文本位于视频顶部,但视频只是位于主 div 的中间,占据了全高(300px)和看似相同的宽度。在 W10 上的 FF 上,文本显示在视频上方 OK 并且视频占据了整个宽度。W10 上的 IE11 在视频上显示了一些文本,但大部分都丢失在黑色环绕中,视频是与 Edge/Chrome 上的尺寸相同。在 iPadIOS Safari 上,视频似乎(几乎)占据了整个宽度,但文本消失了。您对哪些浏览器/系统感兴趣,您正在使用哪些?
  • 嗨@AHaworth,感谢您测试所有这些浏览器供应商/操作系统。我在 Mac (Catalina) 上使用 Crome,并将浏览器定位在电视屏幕上(例如三星)。他们似乎使它相似。我想不同观点的原因是,我没有在浏览器中为属性添加前缀 -moz- -ms- 等。但我认为这与文本位于下方的事实无关我这边的视频。有意义吗?
  • 我认为您现在不需要为所有内容添加前缀,尤其是对于 Chrome,但是,我会在今天晚些时候继续检查。 Chrome(因此可能是 Edge)和设置视频以覆盖有些奇怪 - 它只是没有,但它更好地处理文本(在 W10 上)。很奇怪。

标签: css video rotation transform


【解决方案1】:

给定的 sn-p 在 Window10 上的 FireFox 上按预期/要求工作。它在 W10 的 Edge 上发挥了一定作用,因为文本出现在视频的顶部,但视频仅限于全高(300 像素)和相应的(自动)宽度 - 似乎没有注意到任何封面。在 IOS13 Safari 和 Chrome 上,视频翻转并占据了整个宽度和高度而没有失真(即封面似乎有效),但文本被隐藏了。这是问题中报告的最后一种现象。

因为感兴趣的是 Chrome,所以在此寻找并给出了一种有效的方法。它需要两个具有类 tas-fullscreen 的外部 div。第一个包含视频,并且 div 被赋予 z-index -1(z-index 0 或以上不起作用)。第二个包含文本并被赋予更高的 z-index。

<!DOCTYPE html>
<html>
<head>
<style>
.tas-fullscreen{
    position: absolute;
    left: 0px;
    top:600px;
    overflow: hidden;
    height: 300px;
    width: 600px;
    font-size: 46px;
    transform: rotate(-90deg);
    transform-origin: 0% 0%;
    display: flex;
}

.media-container{
  position:absolute;
  top:0;
  left:0;
  width:100%;
  height:100%;
  z-index:0;
}

.media-content{
  width: 100%;
    height: 100%;
    position: absolute;
    top: 0;
    left: 0;
    z-index:10;
}

video{
  positon: absolute;
  object-fit: cover;
  height: 100%;
  width:100%;
}
</style>
</head>
<body>
<div class="tas-fullscreen" style="z-index:-1;">
<div>
<div class="media-container">
<video class="video" autoplay="true" loop="" muted="" data-origwidth="0" data-origheight="0"><source src="https://theadstore.io/wp-content/uploads/2020/09/dcf3ca22-d06f-44d1-b140-b7fdbf7faffa.mp4" type="video/mp4"></video>
</div>
</div>
</div>
<div class="tas-fullscreen" style="z-index:100;background-cyan:opacity:0.5;">
<div class="media-content">
<div class="heading">
This is the header
</div>
<div class="body">
This is the body
</div>
</div>
</div>
</body>
</html>

这个 sn-p 已经在 W10 的 Chrome 和 FF 上进行了测试,并且似乎可以工作。它在 Edge 上工作,除了视频不包含,它包含。 sn-p 也在 iPadIOS13 上的 Safari 和 Chrome 上进行了测试,似乎可以正常工作。

【讨论】:

  • 很棒的海沃氏,非常感谢,你让我开心!
猜你喜欢
  • 2020-08-27
  • 2021-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多