javascript每日一练—运动
1、弹性运动
运动原理:加速运动+减速运动+摩擦运动;
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
<style>
#div1{ width:100px; height:100px; background:red; position:absolute; left:0; top:50px;}
</style>
<script>
window.onload = function()
{
var oBtn = document.getElementById('btn1');
var oDiv = document.getElementById('div1'); oBtn.onclick = function()
{
startMove(oDiv, 300);
};
}; var iSpeed = 0;
var left = 0; function startMove(obj, iTarget)
{
clearInterval(obj.timer);
obj.timer = setInterval(function(){
iSpeed += (iTarget - obj.offsetLeft)/5;
iSpeed *= 0.7; left += iSpeed; if(Math.abs(iSpeed)<1 && Math.abs(left-iTarget)<1){
clearInterval(obj.timer);
obj.style.left = iTarget + 'px';
}else{
obj.style.left = obj.offsetLeft + iSpeed + 'px';
} }, 30);
}
</script>
</head> <body>
<input id="btn1" type="button" value="运动" />
<div id="div1"></div>
<div style="width:1px; height:300px; background:black; position:absolute; top:0; left:300px; "></div>
</body>
</html>
2、图片放大缩小
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>图片放大缩小</title>
<style>
*{ margin:0; padding:0; list-style:none;}
#ulList{ margin:50px;}
#ulList li{ margin:10px; width:100px; height:100px; float:left; background:#ddd; border:1px solid black;}
</style>
<script>
window.onload = function()
{
var oUl = document.getElementById('ulList');
var aLi = oUl.getElementsByTagName('li');
var zIndex = 2; //布局转换
for(var i=0;i<aLi.length;i++){
aLi[i].style.left = aLi[i].offsetLeft + 'px';
aLi[i].style.top = aLi[i].offsetTop + 'px';
} for(var i=0;i<aLi.length;i++){
aLi[i].style.position = 'absolute';
aLi[i].style.margin = '0';
} for(var i=0;i<aLi.length;i++){
aLi[i].onmouseover = function()
{
this.style.zIndex = zIndex++;
startMove(this, {width:200, height:200, marginLeft:-50, marginTop:-50});
};
aLi[i].onmouseout = function()
{
startMove(this, {width:100, height:100, marginLeft:0, marginTop:0});
};
}
}; function getStyle(obj, attr)
{
if(obj.currentStyle){
return obj.currentStyle[attr];
}else{
return getComputedStyle(obj, false)[attr];
}
} function startMove(obj, json, fn)
{
clearInterval(obj.timer);
obj.timer=setInterval(function (){
var bStop=true;
for(var attr in json)
{ var iCur=0; if(attr=='opacity')
{
iCur=parseInt(parseFloat(getStyle(obj, attr))*100);
}
else
{
iCur=parseInt(getStyle(obj, attr));
} var iSpeed=(json[attr]-iCur)/8;
iSpeed=iSpeed>0?Math.ceil(iSpeed):Math.floor(iSpeed); if(iCur!=json[attr])
{
bStop=false;
} if(attr=='opacity')
{
obj.style.filter='alpha(opacity:'+(iCur+iSpeed)+')';
obj.style.opacity=(iCur+iSpeed)/100;
}
else
{
obj.style[attr]=iCur+iSpeed+'px';
}
} if(bStop)
{
clearInterval(obj.timer); if(fn)
{
fn();
}
}
}, 30)
}
</script>
</head> <body>
<ul id="ulList">
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</body>
</html>
3、信息滑动淡入加载显示
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
<style>
#msgBox{ width:500px; margin:0 auto; padding:5px;}
.msgList{ filter:alpha(opacity=0); opacity:0; font-size:12px; line-height:1.6; border-bottom:1px solid #ddd;} .box{ float:left;}
</style> <script>
window.onload = function()
{
var oTxt = document.getElementById('txt1');
var oBtn = document.getElementById('btn1');
var oBox = document.getElementById('msgBox'); oBtn.onclick = function()
{
var oMsg = document.createElement('div');
var aDiv = oBox.getElementsByTagName('div'); oMsg.className = 'msgList';
oMsg.innerHTML = oTxt.value;
oTxt.value = ''; if(aDiv.length==0){
oBox.appendChild(oMsg);
}else{
oBox.insertBefore(oMsg, aDiv[0]);
} var iH = oMsg.offsetHeight;
oMsg.style.height = 0; startMove(oMsg, {height:iH}, function(){
startMove(oMsg, {opacity:100});
}); };
}; function getStyle(obj, attr)
{
if(obj.currentStyle){
return obj.currentStyle;
}else{
return getComputedStyle(obj, false)[attr];
}
} function startMove(obj, json, fn)
{
clearInterval(obj.timer);
obj.timer = setInterval(function(){
var bStop = true; for(var attr in json){
var iCur = 0; if(attr == 'opacity'){
iCur = Math.round((parseFloat(getStyle(obj, attr))*100));
}else{
iCur = parseInt(getStyle(obj, attr));
} var iSpeed = (json[attr] - iCur) / 8;
iSpeed = iSpeed > 0 ? Math.ceil(iSpeed) : Math.floor(iSpeed); if(iCur != json[attr]){
bStop = false;
} if(attr == 'opacity'){
obj.style.filter = 'alpha(opacity=' + (iCur + iSpeed)+')';
obj.style.opacity = (iCur + iSpeed) / 100;
}else{
obj.style[attr] = iCur + iSpeed + 'px';
}
} if(bStop){
clearInterval(obj.timer); if(fn){
fn();
}
}
}, 30);
}
</script>
</head> <body>
<div class="box">
<textarea id="txt1" cols="40" rows="10"></textarea><br />
<input id="btn1" type="button" value="提交信息" />
</div>
<div id="msgBox"> </div>
</body>
</html>
4、无缝滚动
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
<style>
*{ margin:0; padding:0; list-style:none;}
#div1{ width:480px; height:120px; margin:50px auto; border:1px solid black; position:relative; overflow:hidden;}
#div1 li{ float:left; padding:10px;}
#div1 li img{ display:block;}
#div1 ul{ position:absolute;}
</style>
<script>
window.onload = function()
{
var oDiv = document.getElementById('div1');
var oUl = oDiv.getElementsByTagName('ul')[0];
var aLi = oUl.getElementsByTagName('li');
var aBtn = document.getElementsByTagName('input');
var iSpeed = -3;
var timer = null; oUl.innerHTML += oUl.innerHTML;
oUl.style.width = aLi[0].offsetWidth * aLi.length + 'px'; timer = setInterval(move, 30); aBtn[0].onclick = function()
{
iSpeed = -3;
}; aBtn[1].onclick = function()
{
iSpeed = 3;
}; oDiv.onmouseover = function()
{
clearInterval(timer);
}; oDiv.onmouseout = function()
{
timer = setInterval(move, 30);
}; function move(){
if(oUl.offsetLeft<-oUl.offsetWidth/2){
oUl.style.left = '0px';
}else if(oUl.offsetLeft>0){
oUl.style.left = -oUl.offsetWidth/2 + 'px';
}
oUl.style.left = oUl.offsetLeft + iSpeed + 'px';
} };
</script>
</head> <body>
<input type="button" value="向左" />
<input type="button" value="向右" />
<div id="div1">
<ul>
<li><img src="data:images/1.jpg" width="100" height="100" /></li>
<li><img src="data:images/2.jpg" width="100" height="100" /></li>
<li><img src="data:images/3.jpg" width="100" height="100" /></li>
<li><img src="data:images/4.jpg" width="100" height="100" /></li>
</ul>
</div>
</body>
</html>
javascript每日一练—运动的更多相关文章
- javascript每日一练(十四)——弹性运动
一.弹性运动 运动原理:加速运动+减速运动+摩擦运动: <!doctype html> <html> <head> <meta charset="u ...
- javascript每日一练(十二)——运动框架
运动框架 可以实现多物体任意值运动 例子: <!doctype html> <html> <head> <meta charset="utf-8&q ...
- javascript每日一练(十一)——多物体运动
一.多物体运动 需要注意:每个运动物体的定时器作为物体的属性独立出来互不影响,属性与运动对象绑定,不能公用: 例子1: <!doctype html> <html> <h ...
- javascript每日一练(十)——运动二:缓冲运动
一.缓冲运动 实现原理:(目标距离-当前距离) / 基数 = 速度(运动距离越大速度越小,运动距离和速度成反比) (500 - oDiv.offsetLeft) / 7 = iSpeed; 需要注意: ...
- javascript每日一练(九)——运动一:匀速运动
一.js的运动 匀速运动 清除定时器 开启定时器 运动是否完成:a.运动完成,清除定时器:b.运动未完成继续 匀速运动停止条件:距离足够近 Math.abs(当然距离-目标距离) < 最小运动 ...
- javascript每日一练(十三)——运动实例
一.图片放大缩小 <!doctype html> <html> <head> <meta charset="utf-8"> < ...
- javascript每日一练(一)——javascript基础
一.javascript的组成 ECMAScript DOM BOM 二.变量类型 常见类型有:number, string, boolean, undefined, object, function ...
- javascript每日一练(八)——事件三:默认行为
一.阻止默认行为 return false; 自定义右键菜单 <!doctype html> <html> <head> <meta charset=&quo ...
- javascript每日一练(七)——事件二:键盘事件
一.键盘事件 onkeydown触发, keyCode键盘编码 ctrlKey altKey shiftKey 键盘控制div移动 <!doctype html> <html> ...
随机推荐
- 查看当前支持的MySQL字符集的命令
查看不同的MySQL字符集有不同的方法,下面介绍的命令用于查看当前支持的MySQL字符集,希望对您学习MySQL字符集能有所帮助. mysql> show char set; +-------- ...
- c# 自定义位数生成激活码
Random random = new Random(~unchecked((int)DateTime.Now.Ticks));private string CreateAndCheckCode(Ra ...
- c#简单缓存使用,添加和修改
private void SetCache(string CacheKey, object objObject, DateTime dt) { System.Web.Caching.Cache obj ...
- zoj1108 FatMouse's Speed
给你每个物体两个参数,求最长的链要求第一个参数递增,第二个参数递减,要求输出任意最长路径. 首先第一反应根据第二个参数排个序,然后不就是最长上升子序列的问题吗? O(nlogn)的复杂度,当然这样可以 ...
- Char型和string型字符串比较整理
1.赋值 char赋值: char ch1[] = "give me"; char ch2[] = "a cup"; strcpy(ch1,ch2); cout ...
- php中的一些编程例子
#一到一百不能被三整除的数 for($i=1;$i<=100;$i++){ if($i%3 != 0){ $arr[] = $i; }} var_dump($arr); #水仙花数for($i= ...
- SVN提交出现“< < < < < < < .mine’无效,路径中具有非法字符”的问题
使用SVN提交或更新后经常会出现”Files 的值’< < < < < < < .mine’无效.路径中具有非法字符”的错误.查阅了下资料,是因为:你更改了一 ...
- td太多内容显示...
table style="table-layout:fixed;"td style="text-overflow: ellipsis;white-space: nowra ...
- Axure 快捷方式
基本快捷键: 打开:Ctrl + O新建:Ctrl + N保存:Ctrl + S退出:Alt + F4打印:Ctrl + P查找:Ctrl + F替换:Ctrl + H复制:Ctrl + C剪切:Ct ...
- [Backbone.js]如何处理Model里面嵌入的Collection?
写了近半个月的backbone.js代码,从一开始的todo到现在做仿微信的网页聊天,其中最大的困惑就在于如何处理比较复杂的Model,其内嵌了一个或者多个Collections. 假设我们有一个Pe ...