div模擬selection標簽 下拉列表

来源:https://www.cnblogs.com/liveoutfun/archive/2018/07/11/9295502.html
-Advertisement-
Play Games

垂直滾動條 --> 帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9 帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9 帥哥天下9帥哥天下9帥哥天下9帥哥天... ...


<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <meta name="Generator" content="EditPlus®">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <title>垂直滾動條</title>
  <style type="text/css">
     .box{
       border:1px solid red;
       width:300px;
       height:500px;
       margin:50px auto;
       overflow:hidden;
       position:relative;
     }
     .content{
     height:1000px;
     padding-right:25px;
     position:relative;
     left:0;
     top:0;
     }
     .scrollBox{
       position:absolute;
       top:0;
       right:0;
       width:20px;
       height:500px;
       background:#b5b5b5;
     }
     .scroll{
       width:inherit;
       height:100px;
       background:#ff3300;
       position:absolute;
       left:0;
       top:0;
       cursor:pointer;
     }
  </style>
 </head>
 <body>
   <!--
     分析 
     就是一個大盒子
     裡面有左右兩個盒子
     左邊:文字內容
     右邊:一個背景滾動條  
     而且有一個子盒子(紅色小方塊)
     一共四個盒子
    結構:
    <div>
        <div></div>
        <div>
            <div></div>
        </div>
    </div>
   -->

 <div class="box">
   <div class="content">
    帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9
    帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9
    帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9
    帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9
    帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9
    帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9
    帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9
    帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9
    帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9
    帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9
    帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9
    帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9
    帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9
    帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9
    帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9
    帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9
    帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9
    帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9
    帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9
    帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9
    帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9
    帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9
    帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9
    帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9帥哥天下9
 </div>
 <div class="scrollBox">
    <div class="scroll"></div>
       </div>
   </div>

    
   <script type="text/javascript">
   
   /*
     初步分析  應該是  紅色滾動軸跟隨滑鼠移動
     然後內容根據紅色滾動在父元素高度的距離百分比  我移動1%  你移動1%
     剛開始的 

                       
   
   */

   var scroll=document.querySelector(".scroll");
   var content=document.querySelector(".content");
   var scrollBox=document.querySelector(".scrollBox");
       /*內容越多的時候  滾動條應該越短
        公式就是   容器高度*容器高度/內容高度
                          一個屬*一個小於一的數  永遠不可能大於自己
                */            
        ~~function setScrollLength(){
              if(scroll.offsetHeight<=10){
               scroll.style.height="10px";
              }
              else{
              scroll.style.height=scrollBox.offsetHeight*scrollBox.offsetHeight/content.offsetHeight+"px"
              }
        
        }();


        ~~function start(){
        scroll.onmousedown=function(event){
            var that=this;
            var event=event||window.event;
            var top=event.clientY-this.offsetTop;
            var parentH=scrollBox.offsetHeight;
            document.onmousemove=function(event){

                 var event=event||window.event;
                 var y=event.clientY-top;
                 if(y<=0){
                   y=0;
                 }
                 else if(y>=parentH-that.offsetHeight){
                    y=parentH-that.offsetHeight;
                 }
                 that.style.top=y+"px";
                 /*
                     剛開始就 有滾動條的一部分距離   所以滾動條不可能運動和容器一樣的高度
                     內容同理  內容也會顯示一部分(容器高度的)內容
                     算比例就好了  滾動條運動的距離   內容應該移動的距離
                                            內容高度-容器高度/容器高度-滾動條的高度*滾動條移動的距離
                                            OK
                 */
                 var start=parentH-that.offsetHeight;
                 content.style.top=-1*parseFloat(content.offsetHeight-parentH)/start*y+"px";
                 //為了不讓下拉滾動條的時候選中字體
                 window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty();
            
            }
        
        }
        document.onmouseup=function(){
          document.onmousemove=null;
        
        }
        }();
   </script>
 </body>
</html>

 


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

-Advertisement-
Play Games
更多相關文章
  • 1.css3簡介 CSS3是CSS(層疊樣式表)技術的升級版本,於1999年開始制訂,2001年5月23日W3C完成了CSS3的工作草案,主要包括盒子模型、列表模塊、超鏈接方式、語言模塊、背景和邊框、文字特效、多欄佈局等模塊。 2.css3背景 <css3>概覽有幾個很棒的背景屬性,它們提供了對背景 ...
  • Q:瀏覽器頁面有哪三層構成,分別是什麼,作用是什麼? A:由三部分構成: 網頁結構層(Structural Layer)——由(X)HTML等標記語言負責創建,實現頁面結構。 網頁表示層(Presentation Layer)——由CSS完成頁面的風格。 網頁行為層(Behavior Layer)— ...
  • Action Action是store數據的唯一來源。需使用store.dispatch()將所需的action傳到store。Action是把伺服器響應的數據或者用戶輸入的數據、和其他一些非View的數據傳入store的有效載荷。Action實際上是JS的普通對象。示例: 需要註意的是:應該儘可能 ...
  • $符號總體來說有兩個作用: 1、作為一般函數調用:$(param) (1)、參數為函數:當DOM載入完成後,執行此回調函數 $(function(){//dom載入完成後執行 //代碼 }) (2)、參數為選擇器字元串:查找所有匹配的標簽,並將它們封裝成jQuery對象 (3)、參數為dom對象:將 ...
  • vue經過幾年的發展,已經成為最受歡迎的前端框架之一了。在項目中使用Vue插件也是前端開發人員的日常工作內容。其中vue-pdf是用來瀏覽PDF的,但是一些版本方面的問題(issules)。 ...
  • 恢復內容開始 恢復內容結束 ...
  • 1.獲取今天的日期 function getTodayDate(symbol) { symbol = symbol || '-'; var nowDate = new Date(), year = nowDate.getFullYear(), month = nowDate.getMonth() + ...
  • 滑鼠移動 登陸框跟隨 註冊登陸 註冊信息 (可以拖拽) 【關閉】 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...