首先要感谢@prinzhorn这样一个惊人而强大的库。我的问题:我已经在我的网站的标题上实施了Skrollr视差背景,但是我希望在移动设备上查看时禁用此功能,特别是iPhone等。 (最大宽度:767px)。我想知道什么是最好的方法来做到这一点?如果destroy()函数能够做到这一点,或者我应该使用另一种技术?另外,如果destroy()是答案,我怎么才能正确实现这个?非常感谢,非常感谢和示例或演示。为移动设备禁用Skrollr(<767px)
回答
destroy()方法可以做到这一点。你也可以避免初始化小窗口上的skrollr,并且/或者如果窗口被调整为小,则销毁skrollr。
$(function() {
// initialize skrollr if the window width is large enough
if ($(window).width() > 767) {
skrollr.init(yourOptions);
}
// disable skrollr if the window is resized below 768px wide
$(window).on('resize', function() {
if ($(window).width() <= 767) {
skrollr.init().destroy(); // skrollr.init() returns the singleton created above
}
});
});
在此示例中,如果窗口被调整为较大,skrollr不会重新启用。
对不起,这是迟到的回复,但这工作得很好。谢谢:) – Petef1n
现在我意识到使用[window.matchMedia](https://developer.mozilla.org/en-US/docs/Web/CSS/Media_Queries/Testing_media_queries)而不是窗口大小调整器会更好更快。由于滚动条包含在窗口宽度中,所以会有细微的差别。 – user2301179
您还可以使用的userAgent检测 - 如此小的桌面分辨率仍然得到视差效果:
//function
$(function skrollrInit() {
//initialize skrollr
skrollr.init({
smoothScrolling: false
});
// disable skrollr if using handheld device
if(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {
skrollr.init().destroy();
}
});
//execute function
skrollrInit();
Skrollr有它自己的移动检测功能
var s = skrollr.init();
if (s.isMobile()) {
s.destroy();
}
在某些情况下,你只是禁用的转换:
@media only screen and (max-width: 480px){
.divWithSkrollr{
transform: none !important;
}
}
如果您仍然需要对与Skrollr无关的元素进行一些CSS转换,那么这不是一个好的答案。 –
.destroy()
方法是正确的满足使用;然而,我会以接受答案的方式处理这个问题。初始化skrollr实例第二次摧毁它是不必要的,性能可以提高使用.get()
方法,像这样:如果当前存在,如果它存在只是破坏
$(function() {
// Init function
function skrollrInit() {
skrollr.init(yourOptions);
}
// If window width is large enough, initialize skrollr
if ($(window).width() > 767) {
skrollrInit();
}
// On resize, check window width, if too small
// and skrollr instance exists, destroy;
// Otherwise, if window is large enough
// and skrollr instance does not exist, initialize skrollr.
$(window).on('resize', function() {
var _skrollr = skrollr.get(); // get() returns the skrollr instance or undefined
var windowWidth = $(window).width();
if (windowWidth <= 767 && _skrollr !== undefined) {
_skrollr.destroy();
} else if (windowWidth > 767 && _skrollr === undefined) {
skrollrInit();
}
});
});
Skrollr永远不会被初始化的第二次。这样可以避免初始化和摧毁之间的短暂时间内可能发现的任何错误(我根据这方面的经验讲述)。
对我而言,我只想要在某些手机上禁用某些效果。我使用Bootstrap进行响应,因此当移动设备上的列崩溃时,桌面上的某些效果会受到干扰。
我的解决方案是对我不想在移动设备上工作的效果进行自定义类。 disable-mobile-skroll
,然后删除我在skrollr被初始化之前使用的数据属性。
if ($(window).width() < 768) {
$('.disable-mobile-skroll').removeAttr('data-bottom-top').removeAttr('data-top');
};
// init Skrollr here
- 1. 如何禁用移动设备上的Skrollr?
- 2. 为移动设备禁用velocity.js动画
- 3. 为什么Skrollr不允许我在移动设备上滚动?
- 4. 禁止移动设备?
- 5. 在移动设备上禁用滚动
- 6. 禁用灯箱加移动设备
- 7. 禁用移动设备上的stellar.js
- 8. 禁用灯箱移动设备
- 9. 禁用移动设备上的链接
- 10. 在移动设备上禁用Fluidbox.js?
- 11. 如何在移动设备禁用JQZOOM
- 12. 为移动设备禁用Nextgen灯箱效果?
- 13. 为移动设备禁用延迟加载
- 14. 移动设备被检测为非移动设备
- 15. 与Tastypie为移动设备
- 16. 如何禁用skrollr中的滚动条
- 17. 在移动设备上禁用输入自动缩放
- 18. 在移动设备上禁用自动播放
- 19. 在移动设备上禁用垂直滚动
- 20. 如何禁用:在移动设备上滚动时悬停?
- 21. 如何禁用移动设备中的浏览器滚动?
- 22. jquery启用/禁用不起作用在移动设备
- 23. 使用window.Touch查找当前设备是否为移动设备
- 24. 禁用设备
- 25. 自动化为移动设备
- 26. 移动设备上禁用的用户统计信息
- 27. 使用JavaScript在移动设备上禁用谷歌AdSense
- 28. Unity设备移动
- 29. 为桌面设备和移动设备设置iframe中心
- 30. 禁用Skrollr移动/屏幕尺寸重,然后重新启用在桌面上
哇,那是一个很多问题。如果您缩小范围并提供链接或[自包含示例代码](http://sscce.org)来说明您目前正在做的事情,那么运气会好得多。 –
嘿,不用担心我会缩小它的范围 - 我想知道如何在浏览器窗口点击移动大小(特别是<767px)时禁用skrollr的功能。 – Petef1n