爲清晰起見編輯此問題。基於mousemove的視差問題
我想創建一個基於mousemove
的視差效果,但我遇到了一些問題。
1)我無法獲得正確的window
偏移量。如果您看到JSFiddle,您會注意到偏移量與指針輸入window
的位置有關。我希望asset-layer
偏移量始終基於window
的中間值。我能做些什麼來解決這個問題? 2)你會注意到,當我複製視差時,視差會改變強度。我以前嘗試過一個循環來遍歷所有它們,但我沒有成功。爲什麼會發生這種情況,我該如何預防?
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
.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;
}
預先感謝您。
循環內部的'each'與循環內的循環相同! –
是的,這是可能的。相關的HTML在哪裏? – Slime
你可以發佈'.parallax -...的HTML。'元素?能不能有更多的同班同學(例如有多少'parallax-1'?)? –