h5之scrollIntoView控制頁面元素滾動

来源:http://www.cnblogs.com/puyongsong/archive/2017/06/23/6805460.html
-Advertisement-
Play Games

如果滾動頁面也是DOM沒有解決的一個問題。為瞭解決這個問題,瀏覽器實現了一下方法,以方便開發人員如何更好的控制頁面的滾動。在各種專有方法中,HTML5選擇了scrollIntoView()作為標準方法。scrollIntoView()可以在所有的HTML元素上調用,通過滾動瀏覽器視窗或某個容器元素, ...


  如果滾動頁面也是DOM沒有解決的一個問題。為瞭解決這個問題,瀏覽器實現了一下方法,以方便開發人員如何更好的控制頁面的滾動。在各種專有方法中,HTML5選擇了scrollIntoView()作為標準方法。scrollIntoView()可以在所有的HTML元素上調用,通過滾動瀏覽器視窗或某個容器元素,調用元素就可以出現在視窗中。如果給該方法傳入true作為參數,或者不傳入任何參數,那麼視窗滾動之後會讓調動元素頂部和視窗頂部儘可能齊平。如果傳入false作為參數,調用元素會儘可能全部出現在視口中(可能的話,調用元素的底部會與視口的頂部齊平。)不過頂部不一定齊平.

一、scrollIntoView

html

<div>
    <h2>scrollIntoView</h2>
    <button id="roll1">scrollIntoView(false)</button>
    <button id="roll2">scrollIntoView(true)</button>

    <div>
        <div id="myDiv"></div>
        <div id="roll_top">
            scrollIntoView(ture)元素上邊框與視窗頂部齊平
            <span id="bottom">scrollIntoView(false)元素下邊框與視窗底部齊平</span>
        </div>
    </div>
</div>

css

       #myDiv {
            height: 900px;
            background-color: gray;

        }

        #roll_top {
            height: 900px;
            background-color: green;
            color: #FFF;
            font-size: 50px;
            position: relative;
        }

        #bottom {
            position: absolute;
            display: block;
            left: 0;
            bottom: 0;
        }

js

  window.onload = function () {
        document.querySelector("#roll1").onclick = function () {
            document.querySelector("#roll_top").scrollIntoView(false);
        };
        document.querySelector("#roll2").onclick = function () {
            document.querySelector("#roll_top").scrollIntoView(true);
        };
    }

二、滾動監聽

html

<div>
    <h2>scroll</h2>
    <div id="nav">
        <div class="f1">floor1</div>
        <div class="f2">floor2</div>
        <div class="f3">floor3</div>
        <div class="f4">floor4</div>
        <div class="f5">floor5</div>
    </div>
    <p>
        頁面結構
    </p>
    <div class="main">
        <div id="f1">測試1</div>
        <div id="f2">測試2</div>
        <div id="f3">測試3</div>
        <div id="f4">測試4</div>
        <div id="f5">測試5</div>
    </div>
</div>

css

      .main div {
            height: 1000px;
            width: 300px;
            margin: 20px;
            background-color: #C0C0C0;
        }

        #nav {
            position: fixed;
            width: 100px;
            height: 200px;
            top: 40%;
            right: 10px;
        }

        #nav div {
            cursor: pointer;
            text-align: center;

        }

js

    $(function () {
        $(window).scroll(function () {//為頁面添加頁面滾動監聽事件
            var wst = $(window).scrollTop(); //滾動條距離頂端值
            for (var i = 1; i < 6; i++) {             //加迴圈
                if ($("#f" + i).offset().top <= wst + 10) { //判斷滾動條位置
                    $('#nav div').css("background-color", "white");
                    $(".f" + i).css("background-color", "red");
                }
            }
        });
        $('#nav div').click(function () {
            $('html,body').animate({scrollTop: $("#" + this.className).offset().top}, 500);
//          $("#" + this.className)[0].scrollIntoView(true);//h5 scrollIntoView()

        });
    });

全部代碼

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>h5之scrollIntoView控制頁面元素滾動</title>
    <style>

        /*scrollIntoView*/
        #myDiv {
            height: 900px;
            background-color: gray;

        }

        #roll_top {
            height: 900px;
            background-color: green;
            color: #FFF;
            font-size: 50px;
            position: relative;
        }

        #bottom {
            position: absolute;
            display: block;
            left: 0;
            bottom: 0;
        }

        /*scroll*/
        .main div {
            height: 1000px;
            width: 300px;
            margin: 20px;
            background-color: #C0C0C0;
        }

        #nav {
            position: fixed;
            width: 100px;
            height: 200px;
            top: 40%;
            right: 10px;
        }

        #nav div {
            cursor: pointer;
            text-align: center;

        }
    </style>
</head>

<body>
<div>
    <h2>scrollIntoView</h2>
    <button id="roll1">scrollIntoView(false)</button>
    <button id="roll2">scrollIntoView(true)</button>

    <div>
        <div id="myDiv"></div>
        <div id="roll_top">
            scrollIntoView(ture)元素上邊框與視窗頂部齊平
            <span id="bottom">scrollIntoView(false)元素下邊框與視窗底部齊平</span>
        </div>
    </div>
</div>

<div>
    <h2>scroll</h2>
    <div id="nav">
        <div class="f1">floor1</div>
        <div class="f2">floor2</div>
        <div class="f3">floor3</div>
        <div class="f4">floor4</div>
        <div class="f5">floor5</div>
    </div>
    <p>
        頁面結構
    </p>
    <div class="main">
        <div id="f1">測試1</div>
        <div id="f2">測試2</div>
        <div id="f3">測試3</div>
        <div id="f4">測試4</div>
        <div id="f5">測試5</div>
    </div>
</div>

<script>
    window.onload = function () {
        /*
         如果滾動頁面也是DOM沒有解決的一個問題。為瞭解決這個問題,瀏覽器實現了一下方法,以方便開發人員如何更好的控制頁面的滾動。
         在各種專有方法中,HTML5選擇了scrollIntoView()作為標準方法。scrollIntoView()可以在所有的HTML元素上調用,
         通過滾動瀏覽器視窗或某個容器元素,調用元素就可以出現在視窗中。如果給該方法傳入true作為參數,或者不傳入任何參數,
         那麼視窗滾動之後會讓調動元素頂部和視窗頂部儘可能齊平。如果傳入false作為參數,調用元素會儘可能全部出現在視口中(可能的話,調用元素的底部會與視口的頂部齊平。)不過頂部不一定齊平.
         */

        document.querySelector("#roll1").onclick = function () {
            document.querySelector("#roll_top").scrollIntoView(false);
        };
        document.querySelector("#roll2").onclick = function () {
            document.querySelector("#roll_top").scrollIntoView(true);
        };
    }
</script>

<script src="http://apps.bdimg.com/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
    $(function () {
        $(window).scroll(function () {//為頁面添加頁面滾動監聽事件
            var wst = $(window).scrollTop(); //滾動條距離頂端值
            for (var i = 1; i < 6; i++) {             //加迴圈
                if ($("#f" + i).offset().top <= wst + 10) { //判斷滾動條位置
                    $('#nav div').css("background-color", "white");
                    $(".f" + i).css("background-color", "red");
                }
            }
        });
        $('#nav div').click(function () {
            $('html,body').animate({scrollTop: $("#" + this.className).offset().top}, 500);
//          $("#" + this.className)[0].scrollIntoView(true);//h5 scrollIntoView()

        });
    });
</script>
</body>
</html>
View Code

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 設計模式概念 引用《設計模式-可復用的面相對像設計》對模式的定義是這樣的:【Christopher Alexander 說過: “每一個模式描述了一個在我們周圍不斷重覆發生的問題,以及該問題的解決方案的核心。這樣,你就能一次又一次地使用該方案而不必做重覆勞動”, 儘管Alexander所指的是城市和 ...
  • java 企業網站源碼 前後臺都有 靜態模版引擎, 代碼生成器大大提高開發效率 前臺: 支持三套模版, 可以在後臺切換 系統介紹: 1.網站後臺採用主流的 SSM 框架 jsp JSTL,網站後臺採用freemaker靜態化模版引擎生成html 2.因為是生成的html,所以訪問速度快,輕便,對服務 ...
  • 每個框架都不可避免會有自己的一些特點,從而會對使用者有一定的要求,這些要求就是主張,主張有強有弱,它的強勢程度會影響在業務開發中的使用方式。 一、Angular,它兩個版本都是強主張的,如果你用它,必須接受以下東西:- 必須使用它的模塊機制- 必須使用它的依賴註入- 必須使用它的特殊形式定義組件(這 ...
  • ++++++++++++++++++++++++++++++++++++++++++Nginx反向代理+++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 環境:os centos7.3tengine 2.2.0本案例:兩台Web伺服器, ...
  • 英文:Martin Heller 譯文:葡萄城控制項 學習過程中遇到什麼問題或者想獲取學習資源的話,歡迎加入學習交流群343599877,我們一起學前端! 對於JavaScript程式員來說,目前有很多很棒的工具可供選擇。本文將會討論10個優秀的支持JavaScript,HTML5和CSS開發,並且可 ...
  • HTML form標簽小結 最近研究 form標簽,有一些小心得寫下來與大家分享分享,共勉。在小結的最後有一個form表單的小例子,可以作為參考。 DanlV form是HTML的一個極為重要的功能標簽之一。 輸入域input input type屬性有如下屬性值: 1.button按鈕(具體接下來 ...
  • 相比於JavaScript開發人員的數量,目前JavaScript框架、類庫和工具的數量似乎更多一些。截至2017年5月,GitHub上的快速搜索顯示,有超過110萬個JavaScript項目。npmjs.org有50萬個可用的軟體包,每月下載量近100億次。 本文將會討論目前最為流行的客戶端Jav ...
  • 頁面佈局(layout) header 頭部/頁眉; index 首頁/索引; logo 標誌; nav/sub_nav 導航/子導航; banner 橫幅廣告; main/content 主體/內容; container/con 容器; wrapper/wrap 包裹(類似於container); ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...