JS---案例:移動元素,封裝動畫函數

来源:https://www.cnblogs.com/jane-panyiyun/archive/2019/12/12/12029759.html
-Advertisement-
Play Games

案例:移動元素,封裝動畫函數 1. div要移動,要脫離文檔流 position:absolute 2. 如果樣式的代碼是在style的標簽中設置,外面是獲取不到 3. 如果樣式的代碼是在style的屬性設置,外面是可以獲取 4. 獲取div的當前位置 console.log(my$("dv").o ...


案例:移動元素,封裝動畫函數

1. div要移動,要脫離文檔流---position:absolute 2. 如果樣式的代碼是在style的標簽中設置,外面是獲取不到 3. 如果樣式的代碼是在style的屬性設置,外面是可以獲取 4. 獲取div的當前位置
  console.log(my$("dv").offsetLeft);

 

動畫函數animate封裝

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>title</title>
  <style>
    * {
      margin: 0;
      padding: 0;
    }

    input {
      margin-top: 20px;
    }

    div {
      margin-top: 30px;
      width: 200px;
      height: 100px;
      background-color: pink;
      position: absolute;
    }
  </style>
</head>

<body>
  <input type="button" value="移動到400px" id="btn1" />
  <input type="button" value="移動到800px" id="btn2" />
  <div id="dv"></div>
  <script src="common.js"></script>
  <script>

    //點擊第一個按鈕,移動到400px
    my$("btn1").onclick = function () {
      animate(my$("dv"), 400);
    };
    //點擊第二個按鈕,移動到800px
    my$("btn2").onclick = function () {
      animate(my$("dv"), 800);
    };

    //動畫函數animate封裝
    function animate(element, target) {
      //先清理定時器
      clearInterval(element.timeId);
      //一會要清理定時器 (只產生一個定時器)
      element.timeId = setInterval(function () {
        //獲取div當前位置
        var current = element.offsetLeft; //數字類型,沒有px
        //div每移動多少像素---步數
        var step = 10;
        step = current < target ? step : -step;
        //每次移動後的距離
        current += step;
        //判斷當前移動後的位置,是否達到目標位置
        if (Math.abs(target - current) > Math.abs(step)) {
          element.style.left = current + "px";
        } else {
          //清理定時器
          clearInterval(element.timeId);
          element.style.left = target + "px";
        }
      }, 20);
    }

  </script>
</body>

</html>

 


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

-Advertisement-
Play Games
更多相關文章
  • 在每一個圖片的某一側都可以展示出一個三角形的邊框視圖,就是咱們的三角形標簽視圖。這個視圖在電商類APP當中比較常用,使用過ebay的同學應該都還記得有些商品的左上角或者右上角都會顯示一個三角形的邊框,用於給人一個直觀的商品正在促銷,或者剛剛上線的直觀感受。我們可以看看實現後的效果如下: 在真實的AP ...
  • 案例:無縫的輪播圖 w <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <style> * { margin: 0; padding: 0; } ul { list-style: none; ...
  • 案例 左右焦點輪播圖(tb) <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <style> body, ul, ol, li, img { margin: 0; padding: 0; l ...
  • 後臺管理系統中比較常見的佈局是左邊菜單欄,右邊tab切換欄,但是一般的tab組件不包含tab頁過多的切換問題的,所以需要個性化實現,本文的實現方案是滑動滑鼠滾輪綁定tab達到切換的效果,先上一個動態圖看下效果 tab滑動欄佈局代碼如下 <div class="tabmain" id="tabmain ...
  • 操作符 算術運算符:+ 、 、 、 / 、 %、++、 賦值運算符:= 、+=、 =、 =、/=、%= 比較運算符: 、 =、 流程式控制制 以下在進行判斷的時候為假 0 null undefined NaN "" 空字元串 false if else switch 迴圈 for迴圈 while迴圈 d ...
  • 案例:簡單輪播圖 div叫盒子,裡面包了2個小盒子,一個是inner,一個是square inner的div是放ul,裡面有li,a,和圖片 square的div裡面放span,是輪播圖的小點 <!DOCTYPE html> <html lang="en"> <head> <meta charset ...
  • 本文重點介紹Vue單頁面應用的優化手段: 非同步載入 面切換時加loading特效 點擊延遲 inline manifest 邏輯代碼優化 依賴包體積優化 cdn引用 Vue代碼優化 非同步載入 所謂的非同步載入組件,其實就是組件懶載入。可以理解為:當我需要使用組件的時候才進行載入。主要包含兩部分:路由配 ...
  • 動畫函數封裝:設置任意的一個元素,移動到指定的目標位置 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>title</title> <style> div{ width: 200px; height: 200 ...
一周排行
    -Advertisement-
    Play Games
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...
  • 目錄前言PostgreSql安裝測試額外Nuget安裝Person.cs模擬運行Navicate連postgresql解決方案Garnet為什麼要選擇Garnet而不是RedisRedis不再開源Windows版的Redis是由微軟維護的Windows Redis版本老舊,後續可能不再更新Garne ...
  • C#TMS系統代碼-聯表報表學習 領導被裁了之後很快就有人上任了,幾乎是無縫銜接,很難讓我不想到這早就決定好了。我的職責沒有任何變化。感受下來這個系統封裝程度很高,我只要會調用方法就行。這個系統交付之後不會有太多問題,更多應該是做小需求,有大的開發任務應該也是第二期的事,嗯?怎麼感覺我變成運維了?而 ...
  • 我在隨筆《EAV模型(實體-屬性-值)的設計和低代碼的處理方案(1)》中介紹了一些基本的EAV模型設計知識和基於Winform場景下低代碼(或者說無代碼)的一些實現思路,在本篇隨筆中,我們來分析一下這種針對通用業務,且只需定義就能構建業務模塊存儲和界面的解決方案,其中的數據查詢處理的操作。 ...
  • 對某個遠程伺服器啟用和設置NTP服務(Windows系統) 打開註冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer 將 Enabled 的值設置為 1,這將啟用NTP伺服器功 ...
  • title: Django信號與擴展:深入理解與實踐 date: 2024/5/15 22:40:52 updated: 2024/5/15 22:40:52 categories: 後端開發 tags: Django 信號 松耦合 觀察者 擴展 安全 性能 第一部分:Django信號基礎 Djan ...
  • 使用xadmin2遇到的問題&解決 環境配置: 使用的模塊版本: 關聯的包 Django 3.2.15 mysqlclient 2.2.4 xadmin 2.0.1 django-crispy-forms >= 1.6.0 django-import-export >= 0.5.1 django-r ...
  • 今天我打算整點兒不一樣的內容,通過之前學習的TransformerMap和LazyMap鏈,想搞點不一樣的,所以我關註了另外一條鏈DefaultedMap鏈,主要調用鏈為: 調用鏈詳細描述: ObjectInputStream.readObject() DefaultedMap.readObject ...
  • 後端應用級開發者該如何擁抱 AI GC?就是在這樣的一個大的浪潮下,我們的傳統的應用級開發者。我們該如何選擇職業或者是如何去快速轉型,跟上這樣的一個行業的一個浪潮? 0 AI金字塔模型 越往上它的整個難度就是職業機會也好,或者說是整個的這個運作也好,它的難度會越大,然後越往下機會就會越多,所以這是一 ...
  • @Autowired是Spring框架提供的註解,@Resource是Java EE 5規範提供的註解。 @Autowired預設按照類型自動裝配,而@Resource預設按照名稱自動裝配。 @Autowired支持@Qualifier註解來指定裝配哪一個具有相同類型的bean,而@Resourc... ...