我創建了一個視差效果,其中圖像和文本的移動方向與鼠標的移動方向相反。這發生在一個叫做parallax-wrapper的元素中。但是當我移出元素時,我希望圖像和文本返回到原來的位置。我試圖檢測元素外部的鼠標位置,但由於某種原因它沒有正確觸發。Javascript中的視差問題
的codepen鏈接 - https://codepen.io/rohitgd/pen/gRLNad?editors=1010
HTML
<div class="parallax-wrapper">
<div class="layer" data-mouse-parallax="0.1">
<img src="https://tympanus.net/Development/MorphingBackgroundShapes/img/1.jpg"/>
</div>
<div class="layer" data-mouse-parallax="0.3">REVERT</div>
</div>
CSS
body {
background-color:#fff;
padding: 100px;
display: flex;
justify-content: center;
align-items: center;
}
.parallax-wrapper {
width: 500px;
height: 300px;
background-color:#0c0c0c;
position: relative;
overflow: hidden;
.layer {
width: 80%;
height: 80%;
position: absolute;
left: 30px;
text-align: center;
line-height: 300px;
font-size: 38px;
color:#FFF;
transition: all 200ms ease-out;
}
}
img {
width: 200px;
height: 200px;
position: relative;
top: 50px;
right: 70px;
}
的Javascript
$(".parallax-wrapper").mousemove(function(e) {
var x = e.pageX - $(this).offset().left - $(this).width()/2;
var y = e.pageY - $(this).offset().top - $(this).height()/2;
$("*[data-mouse-parallax]").each(function() {
var factor = parseFloat($(this).data("mouse-parallax"));
x = -x * factor;
y = -y * factor;
$(this).css({ transform: "translate3d(" + x + "px, " + y + "px, 0)" });
});
});
$(document).mouseleave(function(e) {
var target = $(e.target);
if(!target.is("div.layer")) {
alert('out of the element');
e.stopPropagation();
}
});
當鼠標超出了我要的是視差 - 包裝圖像和文本返回到原來的位置。
非常感謝!這正是我正在尋找的。我做了@Archer寫的背景顏色,而不是改變背景顏色。現在它工作得很好! –
很樂意幫忙。但是你的代碼中有另一個bug,我認爲這是因爲CSS。當你將包裝物放到頂部時,它不會觸發事件。最有可能是定位問題,你應該使用不同的方式來通過CSS定位包裝。但這是另一個問題的問題,沒有視差等**等待**或者可能不是。我注意到這隻發生在codepen上。在這裏所以它工作正常 – pid
這絕對是一個codepen問題,測試它是否也在你的網站上! – pid