world {
width: 100%;
height: 100%;
position: absolute;
perspective:800px;
}
bg {
width: 100%;
height: 100%;
position: absolute;
z:1;
transform:rotateX(20deg) rotateY(10deg);
background: url(https://images.pexels.com/photos/1154498/pexels-photo-1154498.jpeg?auto=compress&cs=tinysrgb&h=1250);
}
layer_wrap {
width: 350px;
height: 60px;
position: absolute;
top: 50%;
left: 50%;
mix-blend-mode: overlay;
z:100;
perspective:500px;
transform-style:flat;
backface-visibility:hidden;
}
layer {
position:relative;
background: rgba(0, 122, 255,0.8);
padding: 20px;
color: #fff;
text-transform: uppercase;
font-family: "Arial";
font-size: 30px;
text-align: center;
transformOrigin:50% 50% 50%;
transform:translateX(-50%) translateY(-50%) rotateX(30deg) rotateY(5deg) translateZ(0.001px);
}
<world>
<bg></bg>
<layer_wrap>
<layer>THIS IS A LAYER</layer>
</layer_wrap>
</world>
В этом примере контейнер bg и контейнер layer_wrap должны находиться на одном уровне, чтобы можно было использовать режим mix-blend-mode и для других требованийПроект.
Результаты того, как он отображается в Safari и Chrome, различны.Safari разрезает половину слоя, отображая весь мир в одном контейнере.transformStyle preserve-3d или другие хитрости не помогли.
Также transformZ не является решением, так как он изменил бы размер и расстояние до зрителя.
Надеюсь, у одного из вас, ребята, есть хорошее решение для этого.Ура!