為什麼別人網頁的滾動條辣麽好看~

来源:http://www.cnblogs.com/-Steven/archive/2017/11/30/7931833.html
-Advertisement-
Play Games

其實我們一樣可以很個性。。^_^ 效果實現:(附效果圖) 各位大神有什麼好的意見和指導敬請賜教~~ ...


其實我們一樣可以很個性。。^_^

效果實現:(附效果圖)

<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title></title>
        <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
        <style>
            body,
            html {
                margin: 0;
                width: 100%;
                height: 100%;
            }
            
            ul,
            li {
                margin: 0;
                padding: 0;
                list-style: none;
            }
            
            .scrollBox {
                width: 100%;
                height: 100%;
                overflow: hidden;
                padding-right: 15px;
                box-sizing: border-box;
            }
            
            .cBox {
                width: 100%;
                /*float: left;*/
            }
            
            .sBox {
                width: 15px;
                height: 100%;
                /*float: right;*/
                position: absolute;
                top: 0;
                right: 0;
                background-image: linear-gradient(rgba(188,57,75,0.8) 0%,rgba(38,70,173,0.5) 100%);
                box-shadow: 0 0 15px 3px rgba(0,0,0,0.5) inset;
            }
            
            li {
                width: 100%;
            }
            
            img {
                display: block;
                width: 100%;
            }
            
            .tool {
                width: 100%;
                border-radius:7px;
                position: relative;
                left: 0px;
                top: 0px;
                text-align: center;
                /*background-color: skyblue;*/
                background-image: linear-gradient(skyblue 0%,pink 100%);
                box-shadow: 0 0 20px 2px #FFFF99 inset;                
                cursor: pointer;
            }
        </style>
        <script type="text/javascript">
            window.onload = function() {
                //獲取觸發滾動事件的元素
                var scrollBox = document.querySelector('.scrollBox');
                //創建滾動結構:
                //--------------

                //獲取和子元素
                var cBox = scrollBox.querySelector('.cBox');
                var sBox = scrollBox.querySelector('.sBox');
                var tool = scrollBox.querySelector('.tool');
                initWheel();
                //滾動條初始化
                function initWheel() {
                    //計算滾動條高度
                    var H1 = cBox.offsetHeight;
                    var H2 = scrollBox.clientHeight;
                    var h1 = sBox.offsetHeight;
                    //求出h2的高度
                    var h2 = H2 / H1 * h1;
                    //                    console.log(h2)
                    tool.style.height = h2 + 'px';
                    tool.style.lineHeight = h2 + 'px';
                }
                    var site = tool.offsetTop;
                    var speed = 10;
                    wheel({
                        obj: scrollBox,
                        up: function() {
                            site -= speed;
                            //邊界處理
                            if(site <= 0) {
                                site = 0;
                            }
                            tool.style.top = site + 'px';
                            cBox.style.marginTop = -(cBox.offsetHeight * (site / sBox.clientHeight)) + 'px';
                        },
                        down: function() {
                            site += speed;
                            //邊界處理
                            if(site >= sBox.clientHeight - tool.offsetHeight) {
                                site = sBox.clientHeight - tool.offsetHeight;
                            }
                            tool.style.top = site + 'px';
                            cBox.style.marginTop = -(cBox.offsetHeight * (site / sBox.clientHeight)) + 'px';
                        }
                    });
                    
                    //拖動滾動條
                    tool.onmousedown = function(ev){
                        var ev=ev||event;
                        ev.preventDefault();
                        var x1 = ev.clientX;
                        var y1 =ev.clientY;
                        document.onmousemove = function(ev){
                            var ev=ev||event;
                            ev.preventDefault();
                            var x2 = ev.clientX;
                            var y2 =ev.clientY;
                            
                            var x = Math.abs(x2-x1);
                            var y = y2-y1;
                            
                            //邊界處理
                            var m =site+y;
                            if(m<=0){
                                m=0;
                            };
                            if(m>=sBox.clientHeight-tool.offsetHeight){
                                m=sBox.clientHeight-tool.offsetHeight;
                            };
                            tool.style.top=m+'px';
                            cBox.style.marginTop = -cBox.offsetHeight*(m/sBox.clientHeight)+'px';
                            if(x>200){//x超過滾動條200時取消事件
                                site = tool.offseetTop;//這裡記錄變化後的位置
                                document.onmousemove = null;
                            }
                        }
                        document.onmouseup = function(){
                            site = tool.offsetTop;//記錄變化後的位置
                            document.onmousemove = null;
                        }
                    }
                    

                    /*
                     * 
                     * //滾輪事件方法:
                     * 功能:綁定滾輪事件
                     * 參數:
                     * option {
                     *
                     *   obj: 觸發事件的元素
                     *   up:  滾輪向上滾動要執行的函數
                     *   down: 滾輪向下滾動要執行的函數
                     *
                     * }
                     * 
                     * */

                    function wheel(option) {
                        //自定義錯誤提示
                        if(!option) {
                            console.log('錯誤碼10086:參數不正確');
                            return false;
                        }
                        var opt = {
                            obj: option.obj || documen,
                            up: option.up || null,
                            down: option.down || null,
                        };
                        opt.obj.onmousewheel = function(ev) {
                            var ev = ev || event;
                            if(ev.wheelDelta < 0) {
                                console.log('向下')
                                opt.down && opt.down();
                            }
                            if(ev.wheelDelta > 0) {
                                console.log('向上')
                                opt.up && opt.up();
                            }
                        }
                        opt.obj.addEventListener('DOMMouseScroll', function(ev) {

                            var ev = ev || event;

                            //                                            console.log(ev.detail);

                            if(ev.detail > 0) {
                                //                    console.log('向下');
                                opt.down && opt.down();
                            }
                            if(ev.detail < 0) {
                                //                                                    console.log('向上');
                                opt.up && opt.up();
                            }
                        });
                    }
            }
        </script>
    </head>

    <body>
        <section class="scrollBox">
            <div class="cBox">
                <ul>
                    <li>
                        <img src="img/1.jpg" alt="" />
                    </li>
                    <li>
                        <img src="img/2.jpg" alt="" />
                    </li>
                    <li>
                        <img src="img/3.jpg" alt="" />
                    </li>
                    <li>
                        <img src="img/4.jpg" alt="" />
                    </li>
                    <li>
                        <img src="img/5.jpg" alt="" />
                    </li>
                    <li>
                        <img src="img/6.jpg" alt="" />
                    </li>
                    <li>
                        <img src="img/7.jpg" alt="" />
                    </li>
                    <li>
                        <img src="img/8.jpg" alt="" />
                    </li>
                    <li>
                        <img src="img/9.jpg" alt="" />
                    </li>
                </ul>
            </div>
            <div class="sBox">
                <span class="tool glyphicon glyphicon-flash" href="javascript:;"></span>
            </div>
        </section>
    </body>

</html>

各位大神有什麼好的意見和指導敬請賜教~~


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

-Advertisement-
Play Games
更多相關文章
  • ////發表時間(now) function p(s) { return s < 10 ? '0' + s : s; } var myDate = new Date(); //獲取當前年 var year = myDate.getFullYear(); //獲取當前月 var month = myD ...
  • 原文地址: "簡潔後臺管理模版" 之前給客戶開發一個簡單的後臺管理系統,本來準備套用AdminLTE的,但客戶嫌棄太臃腫,而且又需要有多tab頁面切換,於是從我代碼庫中找到好久前就寫過的管理後臺,根據需求重寫。這是基於jQuery,加上自己編寫基礎樣式,從零搭建起來的框架,在這個輕量級模版的基礎上進 ...
  • 網上找了很多版本嘗試都不行,最後在stackoverflow上找到一個,嘗試完美解決 具體操作步驟如下 1. 安裝jquery npm install jquery 2.安裝 type for jquery npm install -D @types/jquery 3.在組件中使用jquery im ...
  • 1.main.js 2.fs模塊,讀寫文件 3.http請求模塊 4.schedule.js, 任務調度模塊 5.sendQQemail.js,發送QQ郵件模塊 6.先簡單記錄下,以後有空再詳細說明 ...
  • MVVM是一種前端框架模式,框架模式主要是用來管理與組織代碼,在複雜應用中,利用高內聚低耦合的思想,將代碼分離組織到不同部分,每部分都有其關註點和職責,各部分間耦合度低,達到“關註點分離”目的,使整個應用更易管理、維護,每個部分可以單獨更新、替換以及復用,從而達到整個應用的模塊化。 一、概念 MVV ...
  • 在angular中,使用session處理 源碼如下: typescript import { Injectable } from '@angular/core'; import { AES, enc } from 'crypto js'; import { has, isNull, isUndef ...
  • 詳情:http://www.liu12fei08fei.top/ github個人博客綁定單獨阿裡功能變數名稱指南 起源 禁止微信重拍版 給github pages綁定功能變數名稱 獲取github pages的ip地址 配置阿裡雲功能變數名稱並解析(是功能變數名稱就行,是不是阿裡不重要) 配置github pages的custo ...
  • 這篇博文主要涉及到初學React時所總結的內容,也是我從最開始的認識React到後面的逐漸深入學習的歷程,而這篇是開始,當然不會是結束。 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...