CSS 滚动捕捉点在 iOS 9.1 safari 中不起作用
CSS Scroll snap point not working in iOS 9.1 safari
我刚刚将我的 ipad mini 更新为 iOS 9.1 并根据 Can I use I should be able to use css snappoints on my device in safari. There are snap-point demo's on the web, but I've written one of my own (why not :) DEMO。在该演示中,您可以水平滚动。
HTML:
<ol>
<li class="a"></il>
<li class="b"></il>
...
</ol>
样式:
ol {
list-style-type: none;
white-space: nowrap;
overflow-x: auto;
overflow-y: hidden;
white-space: nowrap;
scroll-snap-type: mandatory;
scroll-snap-points-x: repeat(100%);
scroll-behavior: smooth;
}
无论如何,我的演示在我的笔记本电脑上可以在 FF 和 Safari 中运行,但在我的 iPad 上却不行。所以问题是,是 Can I Use 错了还是我做错了什么?
我在一个项目中遇到了同样的问题,该项目也不会按照您在 iPad 上的建议进行操作。
但是,由于截止日期,我最终使用了这个超轻的小 jquery 插件,名为:
在此处试用演示:http://robspangler.com/git/jquery-snappoint/demo/demo.html
我可以通过添加 -webkit-overflow-scrolling: touch;
使其工作
看到这个更新 fiddle http://jsfiddle.net/hpjtqewn/2/
该按钮不起作用,但当我使用手指滚动时,它会捕捉到正确的捕捉点,这在我桌面上的 safari 浏览器中也是如此,当我使用触摸板滚动时它会起作用。普通鼠标不起作用,单击按钮也不起作用,但这可能与您通过 jquery.
使用 .scrollTo 的方式有关
您可以为您的 ol 添加父 div 并使用 -webkit-overflow-scrolling:touch。它修复了 iOS.
上的滚动问题
<div style="overflow:auto;-webkit-overflow-scrolling:touch">
<ol>
<li class="a"></il>
<li class="b"></il>
...
</ol>
</div>
我发现 irnmn 的回答很有帮助,但在进入项目后它又停止工作了。经过几个小时的调查,我发现添加
overflow: hidden;
在桌面和移动设备上,子元素会杀死 safari 上的快速滚动。
在撰写本文时,要在 Safari 中进行全屏滚动捕捉,滚动捕捉类型必须带有 body 标签:
body {
scroll-snap-type: y mandatory;
}
而 Chrome 和 Firefox 要求它带有 html 标签:
html {
scroll-snap-type: y mandatory;
}
它有点乱,但我不得不将它们都放在我的 css 文件中以实现跨平台兼容性。
我刚刚将我的 ipad mini 更新为 iOS 9.1 并根据 Can I use I should be able to use css snappoints on my device in safari. There are snap-point demo's on the web, but I've written one of my own (why not :) DEMO。在该演示中,您可以水平滚动。
HTML:
<ol>
<li class="a"></il>
<li class="b"></il>
...
</ol>
样式:
ol {
list-style-type: none;
white-space: nowrap;
overflow-x: auto;
overflow-y: hidden;
white-space: nowrap;
scroll-snap-type: mandatory;
scroll-snap-points-x: repeat(100%);
scroll-behavior: smooth;
}
无论如何,我的演示在我的笔记本电脑上可以在 FF 和 Safari 中运行,但在我的 iPad 上却不行。所以问题是,是 Can I Use 错了还是我做错了什么?
我在一个项目中遇到了同样的问题,该项目也不会按照您在 iPad 上的建议进行操作。 但是,由于截止日期,我最终使用了这个超轻的小 jquery 插件,名为:
在此处试用演示:http://robspangler.com/git/jquery-snappoint/demo/demo.html
我可以通过添加 -webkit-overflow-scrolling: touch;
使其工作
看到这个更新 fiddle http://jsfiddle.net/hpjtqewn/2/
该按钮不起作用,但当我使用手指滚动时,它会捕捉到正确的捕捉点,这在我桌面上的 safari 浏览器中也是如此,当我使用触摸板滚动时它会起作用。普通鼠标不起作用,单击按钮也不起作用,但这可能与您通过 jquery.
使用 .scrollTo 的方式有关您可以为您的 ol 添加父 div 并使用 -webkit-overflow-scrolling:touch。它修复了 iOS.
上的滚动问题<div style="overflow:auto;-webkit-overflow-scrolling:touch">
<ol>
<li class="a"></il>
<li class="b"></il>
...
</ol>
</div>
我发现 irnmn 的回答很有帮助,但在进入项目后它又停止工作了。经过几个小时的调查,我发现添加
overflow: hidden;
在桌面和移动设备上,子元素会杀死 safari 上的快速滚动。
在撰写本文时,要在 Safari 中进行全屏滚动捕捉,滚动捕捉类型必须带有 body 标签:
body {
scroll-snap-type: y mandatory;
}
而 Chrome 和 Firefox 要求它带有 html 标签:
html {
scroll-snap-type: y mandatory;
}
它有点乱,但我不得不将它们都放在我的 css 文件中以实现跨平台兼容性。