最終的動畫函數封裝(2)

 	<button>點擊觸發1</button><button>點擊觸發2</button><div></div>
<style>*{margin: 0;padding: 0;}div{width: 100px;height: 100px;background-color: red;position: relative;top: 100px;left: 0;}.div1{display: block;width: 50px;height: 50px;background-color: gold;margin-top: 200px;position: relative;top: 0;left: 0;}</style>
 <script>var box = document.querySelector('div');// var box1 = document.querySelector('.div1');// var span = document.querySelector('span');var btn1 = document.querySelector('button:nth-child(1)');var btn2 = document.querySelector('button:nth-child(2)');//給時間函數的變量設置為nullvar timeID = null;//進行點擊事件:btn1.onclick = function(){//動畫函數封裝的調用animation(box,0,700,20,60);// animation(box1,0,700,20,60);}btn2.onclick = function(){//動畫函數封裝的調用animation(box,700,200,20,60);// animation(box1,0,700,20,60);}//定義一個節流閥,默認動畫已經執行完,可以執行下一個動畫效果了var flag = true;//形參有,屬性,起始位置,終點位置,每次移動的距離,所需要的時間function animation(element,current,target,step,time){//添加一個判斷條件,防止在一個事件中調用多次動畫效果//為此同時所有在動畫效果內的 flag前都添加上elementif(!element.flag){element.flag = true;}	if(element.flag){//修改flag為false,代表動畫正在執行element.flag = false;//讓當前的起始位置跟元素的位置相同current = element.offsetLeft; //判斷事件函數是否是nullif(element.timeID != null){//刪除時間clearInterval( element.timeID);element.timeID = null}element.timeID = setInterval(function(){//開始移動元素的位置if(current > target){//設置為負數step = -Math.abs(step);}//判斷兩點之間的距離 和每次移動的距離比較if(Math.abs(target - current) <= Math.abs(step)){//最后將最終位置賦值給起始位置current = target;// 同時刪除時間函數clearInterval(element.timeID );//當動畫被清楚時,使flag為true;element.flag = true;}else{// 每次移動的距離進行相加賦值current += step;}//將移動的距離賦值給目標element.style.left = current + 'px';},time);//添加事件函數的運行時間}//設置一個返回值,考試調用者動畫是否結束return flag;}</script>

實現效果:

在這里插入圖片描述

進行動畫函數的封裝:

//window.onload = function(){var timeID = null;var flag = true;//形參有,屬性,起始位置,終點位置,每次移動的距離,所需要的時間function animation(element,current,target,step,time){if(flag){//修改flag為false,代表動畫正在執行flag = false;//讓當前的起始位置跟元素的位置相同current = element.offsetLeft; //判斷事件函數是否是nullif(element.timeID != null){//刪除時間clearInterval( element.timeID);element.timeID = null}element.timeID = setInterval(function(){//開始移動元素的位置if(current > target){//設置為負數step = -Math.abs(step);}//判斷兩點之間的距離 和每次移動的距離比較if(Math.abs(target - current) <= Math.abs(step)){//最后將最終位置賦值給起始位置current = target;// 同時刪除時間函數clearInterval(element.timeID );//當動畫被清楚時,使flag為true;flag = true;}else{// 每次移動的距離進行相加賦值current += step;}//將移動的距離賦值給目標element.style.left = current + 'px';},time);//添加事件函數的運行時間}//設置一個返回值,考試調用者動畫是否結束return flag;}//};//調用方式為:
// btn1.onclick = function(){
//     //動畫函數封裝的調用
//     animation(box,0,700,20,60);
// }

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/248186.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/248186.shtml
英文地址,請注明出處:http://en.pswp.cn/news/248186.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

第二次JAVA作業

感覺和C語言后面都差不多&#xff0c;就是開頭的定義和輸入輸出有點差別&#xff0c;多寫幾次應該能搞清楚開頭的定義&#xff0c;接下來是四道題目的截圖。 第一題&#xff1a; 第二題&#xff1a; 第三題&#xff1a; 第四題&#xff1a; 轉載于:https://www.cnblogs.com/YSh…

springmvc框架下Filter過濾器中過濾文件后 后續 controller為空的問題

開發過程中遇到過濾文件類型的問題&#xff0c;需要校驗文件的頭信息&#xff0c;&#xff0c;在過濾器中通過request獲取文件流信息 但是后續的controller中的MultipartFile一直都是空的&#xff0c;網上的網友的方案使用了一堆比如 使用BodyReaderHttpServletRequestWrapper…

js(Dom+Bom)第七天(1)

JavaScript BOM介紹 概念 BOM&#xff08;Browser Object Model&#xff09;即瀏覽器對象模型。 本質&#xff1a; 通過對象抽象瀏覽器中的一些功能 例如&#xff1a;&#xff08;刷新頁面&#xff0c;alert,confirm,pormpt,跳轉 ...&#xff09;BOM頂級對象 window對象是js中…

「十二省聯考 2019」皮配——dp

題目 【題目描述】 #### 題目背景一年一度的綜藝節目《中國好碼農》又開始了。本季度&#xff0c;好碼農由 Yazid、Zayid、小 R、大 R 四位夢想導師坐鎮&#xff0c;他們都將組建自己的夢想戰隊&#xff0c;并率領隊員向夢想發起沖擊。 四位導師的**派系**不盡相同&#xff0c;…

收藏一個在線思維導圖的制作網站

https://www.processon.com/ 轉載于:https://www.cnblogs.com/132818Creator/p/11447077.html

js(Dom+Bom)第七天(2)

webAPI 01-動畫封裝 應用到的知識點 點擊事件 給元素設置一個絕對定位 定時器(setInterval) 封裝動畫1的步驟: 讓元素設置為絕定位設置元素的開始位置(從哪開始移動)設置元素的目標位置(移動到哪)設置元素每次移動的距離設置元素每次移動的時間間隔(越短越好) 封裝動畫1遇…

鏈表中環的入口結點

題目描述 給一個鏈表&#xff0c;若其中包含環&#xff0c;請找出該鏈表的環的入口結點&#xff0c;否則&#xff0c;輸出null。 分析 第一步&#xff1a;確定一個鏈表中是否有環 我們可以用兩個指針來解決&#xff0c;定義兩個指針&#xff0c;同時從鏈表的頭結點觸發&#xf…

java 線程之線程狀態

Thread 類中的線程狀態&#xff1a; public enum State {NEW,//新建RUNNABLE,// 執行態BLOCKED, //等待鎖&#xff08;在獲取鎖的池子里&#xff09;WAITING,//等待狀態TIMED_WAITING,//定時等待TERMINATED; //終止 } 創建狀態&#xff08;NEW&#xff09;&#xff1a;當一個線…

目標元素拖動

<div class"box"><div class"title">拖拽效果</div></div>* {margin: 0;padding: 0;}.box {width: 350px;height: 300px;border: 1px solid #ccc;position: absolute;left: 50%;top: 50%;transform: translate(-50%, -50%);cursor…

操作系統原理之內存管理(第四章第二部分)

一、基本分頁存儲管理方式 1、分?存儲管理的基本原理&#xff1a; 頁&#xff1a;將?個進程的邏輯地址空間分成若?個??相等的?頁框&#xff1a;將物理內存空間分成與???相同的若?個存儲塊分?存儲&#xff1a;將進程中的若??分別裝?多個可以不相鄰的?框中頁內碎片…

C#代碼總結02---使用泛型來獲取Asp前臺頁面全部控件,并進行屬性修改

該方法&#xff1a;主要用于對前臺頁面的不同類型&#xff08;TextBox、DropDownList、等&#xff09;或全部控件進行批量操作&#xff0c;用于批量修改其屬性&#xff08;如&#xff0c;Text、Enable&#xff09;。 private void GetControlList<T>(ControlCollection c…

d3.js 教程 模仿echarts柱狀圖

由于最近工作不是很忙&#xff0c;隧由把之前的charts項目用d3.js重寫的一下&#xff0c;其實d3.js文檔很多&#xff0c;但是入門不是很難&#xff0c;可是想真的能做一個完成的&#xff0c;交互良好的圖還是要下一番功夫的。今天在echarts找到了一個柱狀圖&#xff0c;如圖。 …

簡單的動畫函數封裝(2)

<div></div><!-- <span></span> --><button class"btn1">點擊500</button><button class"btn2">點擊800</button>div{width: 100px;height: 100px;background-color: red;position: absolute;top: …

【蔡勒公式 】根據給定的年月日求出對應星期幾

蔡勒公式 蔡勒&#xff08;Zeller&#xff09;公式&#xff0c;是一個計算星期的公式&#xff0c;隨便給一個日期&#xff0c;就能用這個公式推算出是星期幾。時間復雜度&#xff1a;O(1)。具體的在紅書P229有。 若要計算的日期是在1582年10月4日或之前&#xff0c;公式則為&am…

MFC的程序,不想顯示窗口,任務欄里也不顯示

在dialog的oninitdialog里設置如下屬性&#xff0c;很簡單&#xff0c;網上一些亂七八糟的做法&#xff0c;一行代碼就能搞定啊 SetWindowPos(&CWnd::wndNoTopMost,0,0,0,0,SWP_HIDEWINDOW); ModifyStyleEx(WS_EX_APPWINDOW, WS_EX_TOOLWINDOW); 轉載于:https://www.cnblog…

放大鏡制作(2)—此方法比較容易理解

<div class"box" id"box"><!--左側的盒子--><div class"left_img"><!--圖片--><img src"images/small.jpg" class"aaa" alt"小圖片"/><!--黃色小盒子--><div class"…

call / apply / bind

對于 call / apply / bind 來說&#xff0c;他們的首要目的是用于改變執行上下文的 this 指針。 call / apply 對 call / apply 的使用&#xff0c;一般都如下&#xff0c;用于改變執行環境的上下文。只是 call 接受的是一個一個的參數&#xff0c;而 apply 則是接受的是一個參…

js(Dom+Bom)第八天—Swiper(插件)

Swiper插件(庫) 01-基本介紹 Swiper 是一款免費以及輕量級的移動設備觸控滑塊的js框架&#xff0c;使用硬件加速過渡&#xff08;如果該設備支持的話&#xff09;。主要使用于移動端的網站、移動web apps&#xff0c;native apps和hybrid apps。主要是為IOS而設計的&#xff…

第七節:EF Core調用SQL語句和存儲過程

一. 查詢類(FromSql) 1.說明 A. SQL查詢必須返回實體的所有屬性字段。 B. 結果集中的列名必須與屬性映射到的列名相匹配。 C. SQL查詢不能包含關聯數據 D. 除Select以為的其它SQL語句無法運行。 2.調用SQL語句的幾種情況 A. 基本的原生SQL查詢 B. 利用$內插語法進行傳遞 C. 原生…

沒用的一些水貨

1. 不遞歸的子函數加上inline會跑的很快。 2. 在稠密圖中用dijkstra堆優化會導致跑的很慢。 3. 連著開幾個數組的話&#xff0c;有可能越界了評測機卻返回WA。 4. 如果你用的Dev-C&#xff0c;那么有的時候會出現一些莫名其妙的編譯錯誤。請檢查是否存在未關閉的代碼生成的.exe…