一、图片放大缩小

 <!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>

二、信息滑动淡入加载显示

 <!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>

三、无缝滚动

 <!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每日一练(十三)——运动实例的更多相关文章

  1. javascript每日一练—运动

    1.弹性运动 运动原理:加速运动+减速运动+摩擦运动: <!doctype html> <html> <head> <meta charset="u ...

  2. javascript每日一练(十四)——弹性运动

    一.弹性运动 运动原理:加速运动+减速运动+摩擦运动: <!doctype html> <html> <head> <meta charset="u ...

  3. javascript每日一练(十二)——运动框架

    运动框架 可以实现多物体任意值运动 例子: <!doctype html> <html> <head> <meta charset="utf-8&q ...

  4. javascript每日一练(十一)——多物体运动

    一.多物体运动 需要注意:每个运动物体的定时器作为物体的属性独立出来互不影响,属性与运动对象绑定,不能公用: 例子1: <!doctype html> <html> <h ...

  5. javascript每日一练(十)——运动二:缓冲运动

    一.缓冲运动 实现原理:(目标距离-当前距离) / 基数 = 速度(运动距离越大速度越小,运动距离和速度成反比) (500 - oDiv.offsetLeft) / 7 = iSpeed; 需要注意: ...

  6. javascript每日一练(九)——运动一:匀速运动

    一.js的运动 匀速运动 清除定时器 开启定时器 运动是否完成:a.运动完成,清除定时器:b.运动未完成继续 匀速运动停止条件:距离足够近  Math.abs(当然距离-目标距离) < 最小运动 ...

  7. javascript每日一练(二)——javascript(函数,数组)

    一.函数 什么是函数 function show(){}//不带参数 function show(){return 123;}//不带参数,有返回值 function show(arg1, arg2, ...

  8. javascript每日一练(一)——javascript基础

    一.javascript的组成 ECMAScript DOM BOM 二.变量类型 常见类型有:number, string, boolean, undefined, object, function ...

  9. javascript每日一练(八)——事件三:默认行为

    一.阻止默认行为 return false; 自定义右键菜单 <!doctype html> <html> <head> <meta charset=&quo ...

随机推荐

  1. c++ 输出虚函数表内容

    class Base{ public: virtual void f(){cout<<"Base::f"<<endl;} virtual void g(){ ...

  2. Java多线程之非线程安全

    在Java多线程中我会重点总结五个如下的技术点: 1.非线程安全是如何出现的 2.synchronized对象监视器为Objec时的使用 3.synchronized对象监视器为Class时的使用 4 ...

  3. 杭电oj An easy problem

    </pre><h1 style="color: rgb(26, 92, 200);">An easy problem</h1><stron ...

  4. Python (九) 协程以及数据库操作

    本节内容 Gevent协程 Select\Poll\Epoll异步IO与事件驱动 Python连接Mysql数据库操做 Paramiko SSH 协程 协程,又称微线程,纤程.英文名Coroutine ...

  5. 羊和汽车问题(或s三门问题(Monty Hall problem)亦称为蒙提霍尔问题)

    三门问题(Monty Hall problem)亦称为蒙提霍尔问题.蒙特霍问题或蒙提霍尔悖论,大致出自美国的电视游戏节目Let's Make a Deal.问题名字来自该节目的主持人蒙提·霍尔(Mon ...

  6. C语言 结构体数组保存到二进制文件中

    在项目中我定义了一个结构体数组,头文件如下: C/C++ code   ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ...

  7. route-over VS mesh-under

    近期在网上看到一篇专门介绍route-over和Mesh-under的论文,介绍的比較具体: ip=183.63.119.35&id=1582643&acc=ACTIVE%20SERV ...

  8. POJ 3667 splay区间盘整运动

    Hotel Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 12446   Accepted: 5363 Descriptio ...

  9. Linux怎么设置PostgreSQL远程访问

    原文链接: Linux怎么设置PostgreSQL远程访问 安装PostgreSQL数据库之后,默认是只接受本地访问连接.如果想在其他主机上访问PostgreSQL数据库服务器,就需要进行相应的配置. ...

  10. ZOJ 3607 Lazier Salesgirl 贪心

    这个题比上个题简单得多,也是超过W时间会睡着,睡着就再也不会卖了,顾客按时间顺序来的,但是可能有顾客同时到(同时到如果醒着就全卖了),并且每个人只买一块面包,也是求最大的W,使得卖出面包的平均价格最高 ...