准确检测浏览器是否支持平滑滚动?
Accurately detect if a browser supports smooth scrolling?
既然 Safari 15.4 现在支持原生平滑滚动,我正在寻找一种可靠的方法来检查浏览器是否使用原生平滑滚动。
我试过这个方法:
if (getComputedStyle(document.body).scrollBehavior === 'smooth') {
console.log('Smooth scrolling natively supported ');
}else{
console.log('Smooth scrolling NOT natively supported');
}
但它无法准确检测 Chrome 和 Safari 15.4 上的平滑滚动(它返回误报)。这是因为 scrollBehavior
设置为 auto
.
这个方法我也试过:
let supported = 'scrollBehavior' in document.documentElement.style;
if(supported == true){
console.log('Smooth scrolling natively supported ');
}else{
console.log('Smooth scrolling NOT natively supported');
}
这似乎更可靠,但是当我在 Google Chrome 上禁用平滑滚动时,它会读取误报。这可能是因为浏览器支持它,但它没有启用? (我通过使用 /Applications/Google\ Chrome.app --args --disable-smooth-scrolling
从终端启动 Chrome 来禁用它)
检查浏览器是否原生支持平滑滚动的最佳方法是什么?有没有人有可以测试这些的旧版本(v61 之前的版本)或其他本身不支持平滑滚动的浏览器?
执行此操作的最本机方法是使用 @supports
CSS at-rule 检查浏览器支持:
@supports (scroll-behavior:smooth) {
/* Supports smooth scrolling */
}
要在 JavaScript 中执行此检查,您可以在 CSS 对象上使用此函数:
if(window.CSS.supports('scroll-behavior', 'smooth')) {
// Supports smooth scrolling
}
既然 Safari 15.4 现在支持原生平滑滚动,我正在寻找一种可靠的方法来检查浏览器是否使用原生平滑滚动。
我试过这个方法:
if (getComputedStyle(document.body).scrollBehavior === 'smooth') {
console.log('Smooth scrolling natively supported ');
}else{
console.log('Smooth scrolling NOT natively supported');
}
但它无法准确检测 Chrome 和 Safari 15.4 上的平滑滚动(它返回误报)。这是因为 scrollBehavior
设置为 auto
.
这个方法我也试过:
let supported = 'scrollBehavior' in document.documentElement.style;
if(supported == true){
console.log('Smooth scrolling natively supported ');
}else{
console.log('Smooth scrolling NOT natively supported');
}
这似乎更可靠,但是当我在 Google Chrome 上禁用平滑滚动时,它会读取误报。这可能是因为浏览器支持它,但它没有启用? (我通过使用 /Applications/Google\ Chrome.app --args --disable-smooth-scrolling
从终端启动 Chrome 来禁用它)
检查浏览器是否原生支持平滑滚动的最佳方法是什么?有没有人有可以测试这些的旧版本(v61 之前的版本)或其他本身不支持平滑滚动的浏览器?
执行此操作的最本机方法是使用 @supports
CSS at-rule 检查浏览器支持:
@supports (scroll-behavior:smooth) {
/* Supports smooth scrolling */
}
要在 JavaScript 中执行此检查,您可以在 CSS 对象上使用此函数:
if(window.CSS.supports('scroll-behavior', 'smooth')) {
// Supports smooth scrolling
}