如何实现像this example这样的视差效果:
但是没有使用jQuery
,使用纯JavaScript并且只使用图像?
$(document).ready(function(){
$('#landing-content').mousemove(function(e){
var x = -(e.pageX + this.offsetLeft) / 20;
var y = -(e.pageY + this.offsetTop) / 20;
$(this).css('background-position', x + 'px ' + y + 'px');
});
});
#landing-content {
overflow: hidden;
background-image: url(http://i.imgur.com/F2FPRMd.jpg);
width: 100%;
background-size: 150% 150%;
background-repeat: no-repeat;
max-height: 500px;
border-bottom: solid;
border-bottom-color: #628027;
border-bottom-width: 5px;
}
.slider {
margin-left: auto;
margin-right: auto;
overflow: hidden;
padding-top: 200px;
max-width: 1002px;
}
.slider img {
width: 80%;
padding-left: 10%;
padding-right: 10%;
height: auto;
margin-left: auto;
margin-right: auto;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="landing-content">
<section class="slider">
<img src="http://i.imgur.com/fVWomWz.png"/>
</section>
</div>
注意:像在示例中一样,元素应该沿鼠标方向平滑移动。
2条答案
按热度按时间yc0p9oo01#
您可以根据控制背景位置的
clientX/clientY
坐标更新两个自定义属性,如本概念验证所示Codepen demo
在这个例子中,我使用了一个覆盖整个视口高度的图像,但是非常大。在初始状态,背景居中。
在JS on
mousemove
事件中,你可以得到鼠标的坐标(例如:clientX
或clientY
),并使用该值设置CSS自定义属性(--mouseX/--mouseY
),该值用于背景定位。w8ntj3qf2#
我只是将jQuery代码直接“翻译”为普通JS