婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 分享一個頁面平滑滾動小技巧(推薦)

分享一個頁面平滑滾動小技巧(推薦)

熱門標簽:搜狗星級酒店地圖標注 高德地圖標注錯誤怎么修改 洛陽市伊川縣地圖標注中心官網 江蘇高頻外呼系統線路 地圖標注自己去過的地方 會聲會影怎樣做地圖標注效果 標準智能外呼系統 平頂山電子地圖標注怎么修改 電銷機器人視頻

背景

今天寫需求的時候發現一個小的優化點:用戶選擇了一些數據之后, 對應列表中的數據需要高亮, 有時候列表很長, 為了提升用戶體驗,需要加個滾動, 自動滾動到目標位置。

簡單的處理了一下, 問題順利解決, 就把這個小技巧分享一下給大家。

正文

有幾種不同的方式來解決這個小問題。

1.scrollTop

第一想到的還是scrollTop, 獲取元素的位置, 然后直接設置:

// 設置滾動的距離
element.scrollTop = value;

不過這樣子有點生硬, 可以加個緩動:

var scrollSmoothTo = function (position) {
    if (!window.requestAnimationFrame) {
        window.requestAnimationFrame = function(callback, element) {
            return setTimeout(callback, 17);
        };
    }
    // 當前滾動高度
    var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
    // 滾動step方法
    var step = function () {
        // 距離目標滾動距離
        var distance = position - scrollTop;
        // 目標滾動位置
        scrollTop = scrollTop + distance / 5;
        if (Math.abs(distance) < 1) {
            window.scrollTo(0, position);
        } else {
            window.scrollTo(0, scrollTop);
            requestAnimationFrame(step);
        }
    };
    step();
};

// 平滑滾動到頂部,可以直接:

scrollSmoothTo(0)

jQuery 中重的animate 方法也可以實現類似的效果:

$('xxx').animate({
    scrollTop: 0
});

2. scroll-behavior

把 scroll-behavior:smooth; 寫在滾動容器元素上,也可以讓容器(非鼠標手勢觸發)的滾動變得平滑。

.list {
   scroll-behavior: smooth; 
}

在PC上, 網頁默認滾動是在<html>標簽上的,移動端大多數在<body> 標簽上, 那么這行定義到全局的css中就是:

html, body { 
  scroll-behavior:smooth; 
}

美滋滋。

3. scrollIntoView

Element.scrollIntoView() 方法, 讓當前的元素滾動到瀏覽器窗口的可視區域內。

語法:

var element = document.getElementById("box");

element.scrollIntoView(); // 等同于element.scrollIntoView(true) 
element.scrollIntoView(alignToTop); // Boolean型參數 
element.scrollIntoView(scrollIntoViewOptions); // Object型參數

scrollIntoView 方法接受兩種形式的值:

布爾值

如果為true,元素的頂端將和其所在滾動區的可視區域的頂端對齊。

  • 相應的 scrollIntoViewOptions: {block: "start", inline: "nearest"}。這是這個參數的默認值。

如果為false,元素的底端將和其所在滾動區的可視區域的底端對齊。

  • 相應的scrollIntoViewOptions: { block: "end", inline: "nearest" }Options 對象
{
    behavior: "auto" | "instant" | "smooth", 默認為 "auto"。
    block: "start" | "end", 默認為 "start"。
    inline: "start"| "center"| "end", | "nearest"。默認為 "nearest"。
}
  • behavior表示滾動方式。auto表示使用當前元素的scroll-behavior樣式。instantsmooth表示直接滾到底使用平滑滾動
  • block表示塊級元素排列方向要滾動到的位置。對于默認的writing-mode: horizontal-tb來說,就是豎直方向。start表示將視口的頂部和元素頂部對齊;center表示將視口的中間和元素的中間對齊;end表示將視口的底部和元素底部對齊;nearest表示就近對齊。
  • inline表示行內元素排列方向要滾動到的位置。對于默認的writing-mode: horizontal-tb來說,就是水平方向。其值與block類似。

scrollIntoView 瀏覽器兼容性

最后我用的是 scrollIntoView, 問題完美解決。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

標簽:廣東 鄂爾多斯 廣西 松原 蚌埠 果洛 常德 阿克蘇

巨人網絡通訊聲明:本文標題《分享一個頁面平滑滾動小技巧(推薦)》,本文關鍵詞  分享,一個,頁面,平滑,滾動,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《分享一個頁面平滑滾動小技巧(推薦)》相關的同類信息!
  • 本頁收集關于分享一個頁面平滑滾動小技巧(推薦)的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 邢台县| 奇台县| 星子县| 兴安盟| 乌审旗| 涞源县| 广东省| 兴城市| 呼和浩特市| 大兴区| 太康县| 正阳县| 页游| 峨山| 昭通市| 全州县| 子长县| 久治县| 桑植县| 太保市| 镇康县| 平江县| 藁城市| 称多县| 兰考县| 都安| 雅安市| 邵阳县| 陆川县| 青铜峡市| 张家口市| 朔州市| 徐水县| 靖安县| 伊宁市| 阿坝县| 衡山县| 昌平区| 岑巩县| 平顺县| 红河县|