一、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. JAVA递归生成树形菜单

    递归生成一个如图的菜单,编写两个类数据模型Menu.和创建树形的MenuTree.通过以下过程实现: 1.首先从菜单数据中获取所有根节点. 2.为根节点建立次级子树并拼接上. 3.递归为子节点建立次级 ...

  2. 展开被 SpringBoot 玩的日子 《 四 》 Session 会话共享

    共享Session-spring-session-data-redis 分布式系统中,sessiong共享有很多的解决方案,其中托管到缓存中应该是最常用的方案之一. Spring Session官方说 ...

  3. 利用JavaFx开发RIA桌面应用-在线资料

    转载请注明来源-作者@loongshawn:http://blog.csdn.net/loongshawn/article/details/52805751 1.前言 虽说java已经不是主流的桌面应 ...

  4. 将欢迎消息添加到PeopleSoft主页--登录事件

    以下是如何为PeopleSoft应用程序设置Signon事件消息. 导航到PeopleTools>实用程序>管理> SignOn事件消息 在此页面上,您将看到当前处于活动状态或过去处 ...

  5. Selenium 实现 Web 自动化的原理 (软件测试52讲学习笔记)

    Selenium 1.0 的工作原理 Selenium 1.0,又称Selenium RC ,RC是Remote Control的缩写.Selenium RC利用的原理:JavaScript代码可以方 ...

  6. c# 集合的长度为什么是可变的

    摘要: 写在前面:此随笔仅仅是作为个人学习总结,有不对的地方,请各位前辈指正O(∩_∩)O........ 一: 引入 在学习集合之前我们都学习过数组.可以知道数组的长度在声明的时候就已经被固定了,不 ...

  7. redis消息队列,tp5.0,高并发,抢购

    redis处理抢购,并发,防止超卖,提速 1.商品队列(List列表),goods_list           控制并发,防止超卖 2.订单信息(Hash集合),order_info        ...

  8. Spring整合MybatisPlus学习笔记

    简介 MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发.提高效率而生 特性 无侵入:只做增强不做改变,引入它不会对现有 ...

  9. django(models)视图与html 简单的操作

    !数据提前写好 urls映射图 点击a标签之后

  10. partial 的随笔

    partial class Dmeos { public int Ager { get; set; } public void Run() { Console.WriteLine(Ager); } } ...