2016-11-23 13 views
1

と左と外側要素の右側のy軸上の要素を変換し、整列...私はdiv要素-6そのよう度回転すると、それは

.skew-slider { 
    max-width: 100%; 
    overflow: hidden; 
    float: left; 
    perspective: 500px; 
    margin: 0 auto 60px; 
    display: block; 
} 
.skew-slider .inner-wrapper { 
    width: 100%; 
    float: left; 
    display: block; 
    -webkit-transform: rotateY(-6deg); 
    -moz-transform: rotateY(-6deg); 
    -o-transform: rotateY(-6deg); 
    transform: rotateY(-6deg); 
} 

...要素が正しいと回転します視点も正しい。とても長くて良い。しかし、回転された要素の左右の境界線は、外側の境界線と正確に揃うようにし、右側の境界線の間に空白を入れないでください。ここで

は一例です:http://websamurai.ch/stackoverflow/skew-slider.html

はそのため誰も解決策を持って?

+0

あなたは、あなたが2520pxの幅を有するように壮大な子要素の幅を設定し、.skew-slider'親コンポーネント 'に設定されたデバイスの幅の100%を持っています。それはコンテナよりも大きかった。 –

+0

はい、そうですが、これはこのようにする必要があります。なぜなら、カーソルでスライダの上にマウスを移動すると、内側のdivが動くからです。目標は、左に移動すると内側のdivが左のウィンドウ境界に揃えられ、右に移動するとdivの右端がブラウザウィンドウの右側に揃うようにすることです。 –

答えて

1

私はほぼ完璧な作業している別の解決策を見つけたと思います。私は変換元のz軸パラメータをウインドウの幅の-1/3に加えたスクリプトを追加しました。(ウインドウのサイズを変更しても)左右の外枠がほぼ同じになりました。

主要部分は、これらのスクリプトには、次のとおりです。

CSSで
$(window).resize(function() { 
    $('.skew-slider .inner-wrapper').css('transform-origin', 'center center -' + $(window).width()/3 + 'px'); 
}); 

及びこれら:

.skew-slider { 
    max-width: 100%; 
    overflow-y: visible; 
    overflow-x: hidden; 
    perspective: 500px; 
    margin: 0 auto 60px; 
    display: block; 
    position: absolute; 
    left: 0; 
} 
.skew-slider .inner-wrapper { 
    width: 100%; 
    float: left; 
    display: block; 
    left: 0; 
    right: 0; 
    -ms-transform: rotateY(-6deg) scale(0.8); 
    -webkit-transform: rotateY(-6deg) scale(0.8); 
    -moz-transform: rotateY(-6deg) scale(0.8); 
    -o-transform: rotateY(-6deg) scale(0.8); 
    transform: rotateY(-6deg) scale(0.8); 
} 
.skew-slider ul { 
    width: 2520px; 
    float: left; 
    display: block; 
    padding: 0; 
    margin: 0; 
    list-style: none; 
} 

それは完璧ではないのですが、私は別の実用的なソリューションを見つけていませんでしたし、それがこの作品使いやすさの観点から

ハイアー例:http://websamurai.ch/stackoverflow/skew-slider.html

0

"skew-slider"の要素にposition: absolute; left: 0;を追加すると、そのジョブが実行されます。 私が提供した例でこのアプローチを試してみました。

+0

これは私のために働いていません。カーソルを左側に移動すると、クラス「inner-wrapper」を持つ要素はブラウザの左端に表示されません。そして、カーソルを右に動かすと、これはまだ内側のdivから抜けているものです。また、カーソルが右側にある場合は、ブラウザの右側で正確に終了する必要があります。 –

+0

この回答とCodeGustの回答を組み合わせてみましたか? –

0

はあなたが例えばtransform-origin

を使用しようとしました:

transform-origin: left; 
+0

これまでのところよく見える、変換元:左;左側にはうまくいきます。あなたはアイデアを持っていますか、これがどのように右側にも役立つでしょうか? –

+0

@PeterKälin 右側に同じように動作するはずですが、 "left"の代わりに "right"と書いてください。ここに詳細がありますhttp://www.w3schools.com/cssref/css3_pr_transform-origin.asp – CodeGust

+0

@PeterKälin たとえば、回転に加えてx-余白を追加するか、スケール変換を使用することができます。 また、 'rotateY'は' scaleX'のように動作し、何も回転しません。私は 'rotate(-6deg)'を使って要素を回転させます。 回転後に境界線の外側に何かがある場合、 'top:10px;' left:10px; 'などで修正することができます。 – CodeGust