我有一个固定背景图片,想要在滚动时使该图片模糊。我知道如何使用CSS来模糊图片,但是希望在特定的滚动位置实现这个效果。
以下是一个示例: https://medium.com/good-music/f160ba9e6c52 如果你有任何想法、示例或建议,都会很有帮助。
谢谢。
以下是一个示例: https://medium.com/good-music/f160ba9e6c52 如果你有任何想法、示例或建议,都会很有帮助。
谢谢。
$(window).scroll(function(e) {
var distanceScrolled = $(this).scrollTop();
$('.element').css('-webkit-filter', 'blur('+distanceScrolled/60+'px)');
});
在这里,我使用scrollTop()
来获取窗口滚动的像素数量,然后将元素的模糊度设置为该数字除以60,这只是我选择的任意数字,用于获得所需的模糊度。
如果您想在特定位置添加模糊效果,可以使用DOM上的元素并检查其相对于窗口的位置。
$(window).scroll(function(e) {
var elOffset = $('.element').scrollTop() - $(window).scrollTop();
if(elOffset < 450) {
$(this).addClass('blur');
}
});
.element
不足450px,则会向其添加类blur
。你的模糊类看起来可能是这样的: .blur {
-webkit-filter: blur(4px);
}
你可能想要使用过渡效果。不要忘记添加厂商前缀。
我只是提到了如何通过滚动获取位置。
$('#divscroll').bind('mousewheel', function (e) {
var toTop = $(window).scrollTop();
//from this you can get the distance from the top
//then you can blur the image as you want with relevent to the position of ur image
});
对于IE和Opera浏览器,之前的绑定方法将不起作用,因此您需要
$('#divscroll').bind('DOMMouseScroll', function (e) {
var toTop = $(window).scrollTop();
//Handle your logic
});