要件
perspective
のため、視覚的には親の幅の100%を占めていないように見えます実際、この質問は フォローアップ質問 です。
これは、現在のモックアップ状態が [〜#〜] sass [〜#〜] または [〜#〜] css [〜#〜] のPENです。 =。
JavaScriptでは、私が探しているものを実現するのは非常に簡単です。 これがPENです CSSで模倣したい効果をシミュレートします。
私が今までに最も懸念している問題は、ブラウザがこのシナリオを異なってレンダリングしているように見えるという事実です。下の右下隅にスクロールしたブラウザウィンドウ(chrome vs ff)のスクリーンショットを参照してください。しかし、これを回避できることを願っています。
実際、私は本当に多くのことを研究しましたが、水平視差(子レイヤーの幅が100vwを超えることを意味します)を実装する方法の説明も1つも見つかりませんでした。もちろんあります 水平視差スクロールタッツ そこにあります。しかし、それらにはすべて共通点があります。子レイヤーの幅は常に<= 100vwであり、実際にはそれが違いです。
html,
body {
height: 100%;
overflow: hidden;
width: 100%;
}
body {
-webkit-transform: translateZ(0);
transform: translateZ(0);
}
#projection {
-webkit-perspective: 1px;
perspective: 1px;
-webkit-perspective-Origin: 0 0;
perspective-Origin: 0 0;
height: 100%;
overflow: auto;
width: 100%;
}
.pro {
-webkit-transform: scale(1) translate(0px, 0px) translateZ(0px);
transform: scale(1) translate(0px, 0px) translateZ(0px);
height: 100%;
position: absolute;
-webkit-transform-Origin: 0 0;
transform-Origin: 0 0;
-webkit-transform-style: preserve-3d;
transform-style: preserve-3d;
width: 100%;
}
.pro--1 {
-webkit-transform: scale(4) translate(0px, 0px) translateZ(-3px);
transform: scale(4) translate(0px, 0px) translateZ(-3px);
width: 110%;
}
.pro--2 {
-webkit-transform: scale(3) translate(0px, 1em) translateZ(-2px);
transform: scale(3) translate(0px, 1em) translateZ(-2px);
width: 110%;
}
.pro--3 {
-webkit-transform: scale(2) translate(0px, 2em) translateZ(-1px);
transform: scale(2) translate(0px, 2em) translateZ(-1px);
width: 110%;
}
.pro {
background: rgba(0, 0, 0, 0.33);
box-shadow: inset 0 0 0 5px orange;
color: orange;
font-size: 4em;
line-height: 1em;
text-align: center;
}
.pro--2 {
box-shadow: inset 0 0 0 5px green;
color: green;
}
.pro--3 {
box-shadow: inset 0 0 0 5px blue;
color: blue;
}
<div id="projection">
<div class="pro pro--1">pro--1</div>
<div class="pro pro--2">pro--2</div>
<div class="pro pro--3">pro--3</div>
</div>
私はあなたが目標としているものを正確に得ていると100%確信しているわけではありませんが、少なくともあなたのために一歩前進しています。 この記事 のpure-css視差サイトで、perspective-Origin-x: 100%
とtransform-Origin-x: 100%
を使用したWebkit関連のバグの回避に関する更新がありました。
これをx方向とy方向の両方で、sassを使用した現在のモックアップケースに適用すると、#projection
と.pro
だけが次のように変更されます。
#projection
perspective: $perspective + 0px
perspective-Origin: 100% 100%
height: 100%
overflow: auto
width: 100%
.pro
@include projection()
height: 100%
position: absolute
transform-Origin: 100% 100%
transform-style: preserve-3d
width: 100%
そして視差の振る舞いは私が期待するようにずっと見え始めます。最終的なペンは次のとおりです。 https://codepen.io/kball/pen/qPbPWa/?editors=01