一、JavaScript缓冲公式ease

原生JS没有自己的缓冲公式,但是你要自己推理的话,必须要懂一些数学和物理公式:

让div用100毫秒(帧),从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是时间增量,b为100,c为700,d为100

t : 当前时间(current time)

b :初始值(begining value)

c :变化量(change in value)

d :持续时间(总步数)(duration)

首先b、c、d三个参数(初始值、变化量、持续时间)在运动开始前,是需要确定好的。

举例:

div要向右缓动,left初始值100,那么b就是100,要向右移动700,那么c就是700,至于d的设置就比较灵活,只要符合t是从0向d递增或递减就可以了

d根步骤配合使用来设置持续时间,例如d设置为100,如果设置步长是1,那么从0到100就有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基础就到这里了,后续一些知识点我们在面向对象再见面吧,如果有哪些知识点遗漏了,请联系我补充谢谢。

前端笔记之JavaScript(十二)缓冲公式&检测设备&Data日期的更多相关文章

  1. 前端笔记之JavaScript(二)关于运算符&初识条件判断语句

    运算符 数学运算符的正统,number和number的数学运算,结果是number.出于面试的考虑,有一些奇奇怪怪的数学运算: 数学运算中:只有纯字符串.布尔值.null能够进行隐式转换. //隐式转 ...

  2. 从头开始学JavaScript (十二)——Array类型

    原文:从头开始学JavaScript (十二)--Array类型 一.数组的创建 注:ECMAscript数组的每一项都可以保存任何类型的数据 1.1Array构造函数 var colors = ne ...

  3. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第二十二章:四元数(QUATERNIONS)

    原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第二十二章:四元数(QUATERNIONS) 学习目标 回顾复数,以及 ...

  4. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十二章:几何着色器(The Geometry Shader)

    原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十二章:几何着色器(The Geometry Shader) 代码工 ...

  5. WCF技术剖析之十二:数据契约(Data Contract)和数据契约序列化器(DataContractSerializer)

    原文:WCF技术剖析之十二:数据契约(Data Contract)和数据契约序列化器(DataContractSerializer) [爱心链接:拯救一个25岁身患急性白血病的女孩[内有苏州电视台经济 ...

  6. JavaScript DOM编程艺术-学习笔记(第十二章)

    第十二章 1.本章是综合前面章节的所有东西的,一个综合实例 2.流程:①项目简介:a.获取原始资料(包括文本.图片.音视频等) b.站点结构(文件目录结构) c.页面(文件)结构 ②设计(切图) ③c ...

  7. Linux内核设计与实现 总结笔记(第十二章)内存管理

    内核里的内存分配不像其他地方分配内存那么容易,内核的内存分配不能简单便捷的使用,分配机制也不能太复杂. 一.页 内核把页作为内存管理的基本单位,尽管处理器最小寻址坑是是字或者字节.但是内存管理单元MM ...

  8. 《深入理解java虚拟机》读书笔记十一——第十二章

    第十二章  Java内存模型与线程 1.硬件效率与一致性 由于计算机的存储设备与处理器的运算速度有几个数量级的差距,所以现代计算机系统都不得不加入一层读写速度尽可能接近处理器运算速度的高速缓存(Cac ...

  9. 前端笔记之JavaScript(十)深入JavaScript节点&DOM&事件

    一.DOM JavaScript语言核心.变量的定义.变量的类型.运算符.表达式.函数.if语句.for循环.算法等等.这些东西都属于语言核心,下次继续学习语言核心就是面向对象了.JavaScript ...

随机推荐

  1. 福州大学软件工程1916|W班 第3次作业成绩排名

    作业链接 结对第二次-文献摘要热词统计及进阶需求 评分细则 本次作业由三部分组成(程序满分80,博客满分70,工程能力满分30) 程序评分标准 基础需求 共有7个测试用例,每个满分20分并按照一定的映 ...

  2. Java EE ----- Container/Injection

    容器(container)是一个类,实际上是component的子类,因此容器本身也是一个组件,具有组件的所有性质,但是它的主要功能是容纳其他组件和容器. 对于开发人员,需要引入复杂的代码解决事务以及 ...

  3. VMware Workstation安装Red hat7.0联网问题总结

    1.在red hat7当中iconfig命令是被取消了的,开发者用ip addr命令取代了ifconfig命令. 当然也是可以用ifconfig命令的 (前提是你安装的linux是可以联网的): 1) ...

  4. 8.3-8.4NOIP模拟题总结

    一:成绩 Day1 score=100+100+20 Day2 score=100+30+0 这成绩还是不行啊,仍需继续加油(抱怨一句暴力分有点少#滑稽) 二:题目分析 Day1 T1祖孙询问: 已知 ...

  5. 【自动化测试】robotframework中一些建议可能需要掌握的关键字

    这是2019年的第一篇文章,因公司事情较多,导致更新缓慢.这次主要推荐一些可能在使用rf工具的时候需要掌握的关键字. 1. @{cloose_ele}  get webelements  xpath= ...

  6. Visual Studio(VS)秘钥集合

    Visual Studio 2019 Pro :NYWVH-HT4XC-R2WYW-9Y3CM-X4V3Y

  7. 线程(Thread、ThreadPool)

    多线程的操作,推荐使用线程池线程而非新建线程.因为就算只是单纯的新建一个线程,这个线程什么事情也不做,都大约需要1M的内存空间来存储执行上下文数据结构,并且线程的创建与回收也需要消耗资源,耗费时间.而 ...

  8. maven_SSM集成的demo

    一.集成spring 二.集成springMVC 三.集成mybatis 1. pom.xml <?xml version="1.0" encoding="UTF- ...

  9. ReactNative问题随记1 Exception in thread "main" java.lang.RuntimeException: gradle-2.14.1-all.zip

    ReactNative问题随记 想运行在真机上,在运行命令react-native run-android遇到错误如下: Scanning 559 folders for symlinks in D: ...

  10. 高级Java面试总结3

    1,java堆,分新生代老年代,新生代有Eden,from surviver,to surviver三个空间,堆被所有线程共.eden内存不足时,发生一次minor GC,会把from survivo ...