我有 2 张图像相互重叠。我想要实现的是使用鼠标滚动/鼠标滚轮来更改剪贴蒙版,以显示下面的图层。
CSS:
html {
overflow: hidden; /* prevent overscroll */
height: 100%;
}
body {
padding: 0;
margin: 0;
overflow: auto;
height: 100%;
}
#slideshow {
position: relative;
width: 100%;
top: 0;
display: table;
}
#slideshow img {
position: absolute;
top: 0;
left: 0;
width: 100%;
}
JS:
$(document).ready(function() {
var w = $('#slideshow').width();
var h = $('#slide1').height();
var lastScrollX = 0;
$('#slideshow').on('scroll', function() {
st = $(this).scrollTop();
if(st < lastScrollX) {
console.log('scroll up');
} else if(st < lastScrollX) {
console.log('scroll down');
}
lastScrollX = st;
});
var offsetX = 0;
$(document).on('DOMMouseScroll mousewheel', function (e) {
if (e.originalEvent.detail > 0 || e.originalEvent.wheelDelta < 0) {
dir = 'down';
} else {
dir = 'up';
}
d = -e.originalEvent.wheelDelta;
if(offsetX + d < w && offsetX + d >= 0) {
offsetX += d;
} else if(offsetX + d >= w) {
offsetX = w;
} else if(offsetX +d < 0) {
offsetX = 0;
}
if(offsetX > w / 2) {
// animate offsetX till w... but how?
} else {
$('#slide1').css('-webkit-clip-path', 'inset(0 ' + offsetX + 'px 0 0)');
$('#slide1').css('clip-path', 'inset(0 ' + offsetX + 'px 0 0)');
}
});
});
HTML:
<div id="slideshow">
<img id="slide5" src="img/banner5.jpg" alt="" />
<img id="slide4" src="img/banner4.jpg" alt="" />
<img id="slide3" src="img/banner3.jpg" alt="" />
<img id="slide2" src="img/banner2.jpg" alt="" />
<img id="slide1" src="img/banner1.jpg" alt="" />
</div>
不知何故,JSFiddle无法处理这种情况。
问题:如何使用 jQueryoffsetX
为全宽设置动画?w
我使用clip-path
而不是clip
因为后者的属性已被弃用。