明確にするためにこの質問を編集してください。mousemoveに基づく視差の問題
私はmousemove
に基づいて視差効果を作成しようとしていますが、いくつか問題があります。
1)正しいwindow
オフセットを取得できません。 JSFiddleが表示された場合、オフセットはポインタがwindow
に入る位置に関連していることがわかります。私はを常にwindow
の真ん中に基づいてオフセットしたいと思っています。これを解決するために私は何ができますか?
2)私はそれを複製すると、視差が輝度を変えることに気づくでしょう。私は以前、すべての間で反復するループを試みましたが、成功しませんでした。なぜこのようなことが起こり、どうすれば防止できますか?
.one,
.two,
.three {
position: relative;
width: 100%;
height: 200px;
}
.one { background-color: pink; }
.two { background-color: lightgray; }
.three { background-color: orange; }
.parallax {
position: absolute;
left: 50%;
top: 50%;
bottom: 50%;
right: 50%;
overflow: visible;
}
.asset {
position: absolute;
}
.asset-layer1 {
background-color: yellow;
}
.asset-layer2 {
background-color: green;
}
.asset-layer3 {
background-color: blue;
}
.asset-layer4 {
background-color: red;
}
HTML
<section class="one">
<div class="parallax">
<div class="asset asset-layer4">4</div>
<div class="asset asset-layer3">3</div>
<div class="asset asset-layer2">2</div>
<div class="asset asset-layer1">1</div>
</div>
</section>
<section class="two">
<div class="parallax">
<div class="asset asset-layer4">4</div>
<div class="asset asset-layer3">3</div>
<div class="asset asset-layer2">2</div>
<div class="asset asset-layer1">1</div>
</div>
</section>
<section class="three">
<div class="parallax">
<div class="asset asset-layer4">4</div>
<div class="asset asset-layer3">3</div>
<div class="asset asset-layer2">2</div>
<div class="asset asset-layer1">1</div>
</div>
</section>
JS
var currentX = '';
var currentY = '';
var movementConstant = .015;
$(document).mousemove(function(e) {
if (currentX == '')
currentX = e.pageX;
var xdiff = e.pageX - currentX;
currentX = e.pageX;
if (currentY == '')
currentY = e.pageY;
var ydiff = e.pageY - currentY;
currentY = e.pageY;
$('.parallax div').each(function(i) {
var $el = $(this);
var movementx = (i + 1) * (xdiff * movementConstant);
var movementy = (i + 1) * (ydiff * movementConstant);
var newX = $el.position().left + movementx;
var newY = $el.position().top + movementy;
$el.css({left: newX + 'px', top: newY + 'px'});
});
});
CSSは、事前にありがとうございます。
ループ内の 'each'はループ内のループと同じです! –
はい、可能です。関連するHTMLはどこですか? – Slime
'.parallax -... 'のHTMLを投稿できますか?'要素?同じクラスを持つ人がもっと多いでしょうか(例えば、いくつの「視差-1」がありますか?) –