总结一下自己今天学习运动的基本思想:‘

【1】对于移动的div,使其在某一个位置停止将其封装成一个函数,仅仅改变speed的正负即可

涉及到问题包括:

var time=null;

function  startMove(target)

{

var oDiv=document.getElementById('div');

clearInteral(time);//清除定时器

time=setInteral(function()

{

var speed=0;

if(oDiv.offsetLeft<target){speed=正数;}

else{speed=负数;}  //考虑刚开始的div在目标值的左边还是右边

if(oDiv.offsetLeft==target){clearInteral(time);}

else{oDiv.style.Left=oDiv.offsetLeft+speed+'px';}

},30);

}

【2】淡入淡出图片的制作,借助变量存储值。

var alpha=30;//存储变量值
var time=null;
function startMove(target)
{
var img=document.getElementById('img1');
clearInterval(time);
time=setInterval(function()
{
var speed=0;
if(alpha<target){speed=1;}
else{speed=-1;}
if(alpha==target){clearInterval(time);}
else{
alpha+=speed;
img.style.opacity=alpha/100;//火狐下为opacity:0-1之间的值   而IE为:filter:alpha(opacity=30);0-100之间的数值
document.title=alpha;
}

},30);
}

【3】侧边栏分享的制作过程,同上面【1】一样,主要是改变Left的值  设为0或-100,添加鼠标移入移出事件。

【4】缓慢运动的基本思想和上面差不多,但speed是个变值,speed=目标值-原值

var time=null;

function  startMove(target)

{

var oDiv=document.getElementById('div');

clearInteral(time);//清除定时器

time=setInteral(function()

{

var speed=(target-oDiv.setoffLeft)/固定系数;//这里固定系数可以为任意数如:7,8.....................等

speed=speed>0?Math.ceil(speed):Math.floor(speed);//ceil 是向上取整  floor是向下取整   之所以取整是避免与目标值出现小偏差。

if(oDiv.offsetLeft==target){clearInteral(time);}

else{oDiv.style.Left=oDiv.offsetLeft+speed+'px';}

},30);

}

【5】右边栏的分享div保持与滚动条替丁的距离,缓慢停止的过程。

1:首先得到滚动条的距离:scrollTop=document.documentElement.scrollTop||document.body.scrollTop

2:得到div与可视区之间的距离:var t=(document.documentElement.clientHeight-oDiv.offsetHeight)/2

3:div的高为:oDiv.style.top=t+scrollTop+'px';这里需要使用paresint()函数将高转换为整数

window.onscroll=function ()------注意这里涉及到滚动条是windon.onscroll事件
{
var oDiv=document.getElementById('div1');
var scrollTop=document.documentElement.scrollTop||document.body.scrollTop;
var t=scrollTop+(document.documentElement.clientHeight-oDiv.offsetHeight)/2+'px';
startMove(parseInt(t));  //将其转换为整数,避免滚动条上下抖动
}
var time=null;
function startMove(target)
{
var oDiv=document.getElementById('div1');
clearInterval(time);
time=setInterval(function()
{
var speed=(target-oDiv.offsetTop)/8;
speed=speed>0?Math.ceil(speed):Math.floor(speed);
if(oDiv.style.top==target){clearInterval(time);}
else{oDiv.style.top=oDiv.offsetTop+speed+'px';}
txt1.value=oDiv.offsetTop+',目标:'+target;
},30);
}

JS中的基本运动逻辑思想总结的更多相关文章

  1. 研究分析JS中的三种逻辑语句

    JS中的三种逻辑语句:顺序.分支和循环语句. 一.顺序语句 代码规范如下:1. <script type="text/javascript"> var a = 10;  ...

  2. JS中循环逻辑和判断逻辑的使用实例

    源代码见: https://github.com/Embrace830/JSExample &&和||的理解 a || b:如果a是true,那么b不管是true还是false,都返回 ...

  3. js中数据操作的某些思想

    1,默认数据的复用 写成function的return形式缓存在变量中,用的时候直接执行fun就行了 例如 有文件text.js里面的对象是export default ()=>({aa:55, ...

  4. js中写laravel模板blade语法和PHP逻辑解决方法

    在js中是否能够执行blade的语法?或者说在js中能否处理PHP逻辑呢? 答案是,当然的 下面来看需求:在提交表单,完成入库操作后,使用 return redirect(route('admin.u ...

  5. js中的this介绍

    今天跟大家一起简单的来了解一下js中一个有趣的东西,this. 在js中我们用面向对象的思想去编写的时候,各个模块之间的变量就不那么容易获取的到了,当然也可以通过闭包的方式拿到其他函数的变量,如果说每 ...

  6. Dynamic CRM使用FetchXML在js中查询与调用传递编码问题

    在页面交互脚本js中实现窗体交互逻辑是很常见的crm场景,一般情况下使用拓展工具RESTBuilder编辑器,可以很方便的进行操作,增删改查均能实现,但在某些较为特殊的场景下,需要根据条件去拼接查询过 ...

  7. 讲讲js中的逻辑与(&&)以及逻辑或(||)

    前几天看到一个函数,百思不得其解,今天早上醒来看了本js的书,正好讲到操作符的用法,给大家分享下js中的&&,||,和我们用的其他的编程语言还是有点区别的. 直接上那个函数的代码: f ...

  8. 谈一谈原生JS中的【面向对象思想】

           [重点提前说:面向对象的思想很重要!]         最近开始接触学习后台的PHP语言,在接触到PHP中的面向对象相关思想之后,突然想到之前曾接触的JS中的面向对象思想,无奈记性太差, ...

  9. js中的逻辑与(&&)与逻辑或(||)

    var foo = 1; var bar = 0; var tar = false; var baz = 2; 一.js中的逻辑与(&&) 1.当第一个数为true时,返回第二个数: ...

随机推荐

  1. 默认选中ComboBox的某一项

    如: 让它选中“统计今天”(控件Name为cobListTime) 方法: 1.cobListTime.Text = cobListTime.Items[0].ToString();//默认选中第一个 ...

  2. mysql 数据类型,字符集

    数据类型 1,数值类型2,字符串类型3,日期和时间4,ENUM和SET5,几何数据类型   数据类型选项 unsigned   无负值 zerofill        数值显示有影响,会前置0来填充不 ...

  3. C# 分层 三层架构

    Hello! 三层架构↓↓↓↓↓↓ 三层架构分为:表现层(UI(User Interface)).业务逻辑层(BLL(Business Logic Layer)).数据访问层(DAL(Data Acc ...

  4. datepicker冲突

    公司里的项目由于发展较快,很多东西都没有好好梳理一下,以至于有很多的潜在的问题. 最近就遇到了一个比较坑的问题.datepicker 有两个插件库中的datepicker插件比较有名.一个是jQuer ...

  5. ABAP--如何在ALV_Grid的函数中定义下拉列表

    最近经常听到网友和用户需求希望你在ALV Grid的函数中加入下来列表,其实SAP已经考虑了大家的需求,用户的需求是可以实现的.我特地将代码奉献给大家,供大家参考和学习. 代码如下: REPORT.* ...

  6. CRM Look Up 解决方案

    CRM 前瑞开发中关于lookup的开发工作肯定会遇到,例如选中一个客户或者联系人后自动把相关的信息映射到相关记录上,这样可以减少用户的输入工作.我们在CRM 的映射关系中可以配置相关字段的映射可以解 ...

  7. iOS--页面间的代理传值(属性、代理(委托)、代码块、单例、通知)

    (一)属性传值 (二)代理(委托)传值 代理传值 适用于 反向传值 (从后往前传) 1.1 创建协议 及协议方法 在反向传值的页面(SecondViewController)中 1.2 创建协议类型的 ...

  8. Android线程池(二)

    本篇主要介绍Android自带的线程池的管理. 包含开始任务.重新加载.添加删除任务等,示例代码如下: package com.jiao.threadpooltest; import java.uti ...

  9. Memcache笔记04-Memcached机制深入了解

    Memcached机制深入了解 ①基于c/s架构 ,协议简单 c/s架构,此时memcached为服务器端,我们可以使用如PHP,c/c++等程序连接memcached服务器. memcached的服 ...

  10. 关于EditText的一点深入的了解

    最近在开发android下的记事本程序时,频繁的使用EditText控件,折腾来折腾去,算是对其的了解更深入了一些.特将这些收获记录如下: 一.几个属性的介绍 android:gravity=&quo ...