前端筆記知識點整合之JavaScript(十二)緩衝公式&檢測設備&Data日期

来源:https://www.cnblogs.com/rope/archive/2019/03/30/10628582.html
-Advertisement-
Play Games

一、JavaScript緩衝公式ease 原生JS沒有自己的緩衝公式,但是你要自己推理的話,必須要懂一些數學和物理公式: 讓div用100毫秒(幀),從left100px的位置變化到left800px的位置,要求勻速: 大致計算如下: 毫秒編號(幀) 距離起點的增量 目前絕對的位置 0 0 100 ...


一、JavaScript緩衝公式ease

原生JS沒有自己的緩衝公式,但是你要自己推理的話,必須要懂一些數學和物理公式:

div100毫秒(幀),從left100px的位置變化到left800px的位置,要求勻速:

大致計算如下:

毫秒編號(幀)

距離起點的增量

目前絕對的位置

0

0

100

1

7

107

2

14

114

...

...

...

t

t*c/d

b+t*c/d

49

343

443

50

350

450

98

686

786

99

693

793

100

700

800

t是時間增量,b100c700d100

 t : 當前時間(current time

 b :初始值(begining value

 c :變化量(change in value

 d :持續時間(總步數)(duration

首先bcd三個參數(初始值、變化量、持續時間)在運動開始前,是需要確定好的。

舉例:

div要向右緩動,left初始值100,那麼b就是100,要向右移動700,那麼c就是700,至於d的設置就比較靈活,只要符合t是從0d遞增或遞減就可以了

d根步驟配合使用來設置持續時間,例如d設置為100,如果設置步長是1,那麼從0100就有100步,即分100次完成這個過程,步數越多那麼持續時間就越長。

 2次:=100+A2*A2*700/(100*100)

 3次:=100+A2*A2*A2*700/(100*100*100)

 正弦1次: =100+SIN(A2/20)*700/SIN(100/20)

 正弦2次:=100+SIN(A2/20)*SIN(A2/20)*700/(SIN(100/20)*SIN(100/20))

 

var oDiv = document.getElementsByTagName('div');
var f = 0;
var timer = setInterval(function(){
   f++;
   if(f >= 100){
       clearInterval(timer);
   }
   oDiv[0].style.left = linear(f,100,700,100) + "px";
   oDiv[1].style.left = ease_2(f,100,700,100) + "px";
   oDiv[2].style.left = ease_3(f,100,700,100) + "px";
   oDiv[3].style.left = ease_sin(f,100,700,100) + "px";
   oDiv[4].style.left = ease_sin2(f,100,700,100) + "px";
},20);
// 推理出的勻速公式
function linear(t,b,c,d){
    return b + t * c / d;
}
function ease_2(t,b,c,d){
    return b + t * t * c / (d * d);
}
function ease_3(t,b,c,d){
    return b + t * t * t * c / (d * d * d);
}
function ease_sin(t,b,c,d){
    return b + Math.sin(t/20) * c / Math.sin(d/20);
}
 function ease_sin2(t,b,c,d){
    return b + Math.sin(t/20)*Math.sin(t/20) * c / (Math.sin(d/20)*Math.sin(d/20));
}

二、檢測設備跳轉

 

if(/(iPhone|iPad)/i.test(navigator.userAgent)){
    //如果當前設備是手持設備,就跳轉到以下網址
    window.location.href = 'https://m.taobao.com/';
}else if(/(Android)/i.test(navigator.userAgent)){
    window.location.href = 'https://m.baidu.com/';
}

三、Date日期對象

Date() 方法可返回當天的日期和時間

 

 Date()          返回當日的日期和時間。

 getDate()       Date 對象返回一個月中的某一天 (1 ~ 31)

 getDay()        Date 對象返回一周中的某一天 (0 ~ 6)

 getMonth()      Date 對象返回月份 (0 ~ 11)

 getFullYear()   Date 對象以四位數字返回年份。

 getHours()      返回 Date 對象的小時 (0 ~ 23)

 getMinutes()    返回 Date 對象的分鐘 (0 ~ 59)

 getSeconds()    返回 Date 對象的秒數 (0 ~ 59)

 getMilliseconds()   返回 Date 對象的毫秒(0 ~ 999)

 getTime()       返回 1970 1 1 日至今的毫秒數。

 


 

 JavaScript基礎就到這裡了,後續一些知識點我們在面向對象再見面吧,如果有哪些知識點遺漏了,請聯繫我補充謝謝。

ps:儘量讓它越來越規範,前期的文章都是本人的學習時的筆記整理,希望看完後可以指點一二,提提意見多多交流; 

筆記流程:html>css>javascript>jquery>html5/css3>移動端>ajax>面向對象>canvas>nodejs>es678>vue>react>小程式>面試問題

意見請留言,郵箱:[email protected]

 


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

-Advertisement-
Play Games
更多相關文章
  • 1. div 2. 邊距 3. 邊框 4. 定位 5. 浮動 1 21.1 div 部分(division) <div>元素,經常以 div 形式引用 是 XHTML 元素,用於定義 XHTML 文 件中的區域. 1.添加 div <div> <p>This is our content area. ...
  • 1.Filter 屬性介紹 2.Alpha 濾鏡的使用 3.Blur 濾鏡的使用 4.Filph、Filpv 濾鏡 5.DropShadow 濾鏡 6.Glow 濾鏡 7.Gray ,Invert,Xray 濾鏡 8.Shadow 濾鏡 1 19.1 F Fr ilter 屬性介紹 設置或檢索對象所 ...
  • dyld: Library not loaded: /usr/local/opt/jpeg/lib/libjpeg.8.dylib Referenced from: /usr/local/lib/liblept.5.dylib Reason: image not found'使用pytesserac... ...
  • 有一道很有意思的數組操作相關編程題,閑來無事用JS解決了一下,問題描述如下: (1) 鍵盤錄入6個int類型的數據存入數組arr中; (2) 將arr數組中的內容反轉; (3) 將反轉後的數組角標為奇數的元素相互交換,即1和3交換,3和5交換,以此類推; (4) 將數組中最後一個角標為奇數的元素和數 ...
  • 1. HTML認識 1.1 什麼是HTML HTML是描述(製作)網頁的語言,指的是超文本標記語言(Hyper Text Markup Language)。 超文本:就是指頁面內可以包含圖片、鏈接、甚至音樂、程式等非文字元素; 標記語言:是一套標記標簽(markup tag); 標記:一種標記符、標 ...
  • 一、準備階段: a.進入阿裡巴巴矢量圖標庫www.iconfont.cn挑選所需的圖標,加入購物車 b.點擊網頁中的購物車下載代碼 二、3種方法實現 Iconfont 的HTML顯示 Unicode 引用 Unicode 是字體在網頁端最原始的應用方式,特點是: 相容性最好,支持 IE6+,及所有現 ...
  • 一、現象描述 真正意義上的inline-block水平呈現的元素間,換行顯示或者空格隔開的情況下會有間距,這是因為瀏覽器在解析時,會將換行等讀取成一個空格導致。 二、移出空格的方法 ① 我們可以去掉元素之間的換行和空格,這樣間距自然就沒有了,但是這樣會降低代碼的可讀性,不可取。 ② 使用margin ...
  • datagrid combobox輸入框下拉(取消)選值和編輯已選值處理 by:授客 QQ:1033553122 測試環境 jquery-easyui-1.5.3 需求場景 如下,在datagrid中新增、編輯記錄: 新增時通過點選指定combobox下拉列表項來實現選擇、取消選擇所點項(多選com ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...