JS實現css屬性動畫效果

html代碼

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>css屬性運動框架</title><style>body,div{margin: 0;padding: 0;}ul,li{list-style: none;}ul li{width: 200px;height: 100px;background: yellowgreen;margin-bottom: 20px;filter:alpha(opacity:30);opacity: 0.3;border:4px solid #666666;}</style><script src="js/move.js"></script><script>window.onload=function(){var Li1=document.getElementById('li1');var Li2=document.getElementById('li2');var Li3=document.getElementById('li3');var Li4=document.getElementById('li4');var Li5=document.getElementById('li5');Li1.onmouseover=function(){startMove(this,{height:200});}Li1.onmouseout=function(){startMove(this,{height:100});}Li2.onmouseover=function(){startMove(this,{width:400});}Li2.onmouseout=function(){startMove(this,{width:200});}Li3.onmouseover=function(){startMove(this,{opacity:100});}Li3.onmouseout=function(){startMove(this,{opacity:30});}Li4.onmouseover=function(){startMove(Li4,{width:400},function(){startMove(Li4,{height:200},function(){startMove(Li4,{opacity:100},function(){});});});}Li4.onmouseout=function(){startMove(Li4,{opacity:30},function(){startMove(Li4,{height:100},function(){startMove(Li4,{width:200});});});}Li5.onmouseover=function(){startMove(Li5,{width:400,height:200,opacity:100});}Li5.onmouseout=function(){startMove(Li5,{width:200,height:100,opacity:30});}            }</script></head><body><ul><li id="li1">高動畫</li><li id="li2">寬動畫</li><li id="li3">透明度動畫</li><li id='li4'>高寬透明度鏈式動畫</li><li id='li5'>高寬透明度同時動畫</li></ul></body>
</html>

引入的JS代碼,運動框架move.js

//運動
//startMove(obj,{attr1:itarget1,attr2:itarget2},fn)
function startMove(obj,json,fn) {clearInterval(obj.timer);obj.timer = setInterval(function() {var flag=true;//標桿,假設所有運動都達到了目標值for(var attr in json){//1.去當前的值var icur = 0;if(attr == 'opacity') {icur = Math.round(parseFloat(getStyle(obj,attr)) * 100); //parseFloat獲取小數.Math.round四舍五入} else {icur = parseInt(getStyle(obj, attr)); //parseInt獲取整數}//2.算速度var speed = (json[attr] - icur) / 8;speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);//3.檢測屬性動畫是否全部達到目標值if(icur !== json[attr]) {flag=false;//如果不是所有的動畫都達到目標值,標桿設為false}        if(attr == 'opacity') {obj.style.filter = 'alpha(opacity:' + (icur + speed) + ')';obj.style.opacity = (icur + speed) / 100;}else {obj.style[attr] = icur + speed + 'px';}}//在動畫結束的時候檢測是否有回調函數,如果檢測到有回調函數,執行if(flag){clearInterval(obj.timer);if(fn){fn();}}}, 30)}//獲取對象屬性function getStyle(obj,attr){if(obj.currentStyle){return obj.currentStyle[attr];//IE}else{return getComputedStyle(obj,false)[attr];//火狐 chrome}}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/256987.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/256987.shtml
英文地址,請注明出處:http://en.pswp.cn/news/256987.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

學習筆記(24):Python網絡編程并發編程-進程與線程的區別

立即學習:https://edu.csdn.net/course/play/24458/296438?utm_sourceblogtoedu 線程與進程的區別&#xff1a; 1.消耗區別&#xff1a;進程>線程 1&#xff09;進程運行結果 #進程運行 from multiprocessing import Process def task(name):print("我是%s"%na…

Codeforces Beta Round #1

A /*************************************************************************> File Name: A.cpp> Author: opas_chenxin> Mail: 1017370773qq.com > Created Time: 2016年05月06日 星期五 02時22分23秒 ************************************************…

windows系統中創建線程常用哪幾個函數,有什么區別?

windows系統中創建線程常用哪幾個函數&#xff1f; 在windows系統中創建線程的函數有&#xff1a; CreadThread&#xff0c;AfxBeginThread&#xff0c;_beginthread&#xff0c;_beginthreadex。 他們的區別在于使用的場景不同。 CreateThread是Windows的API函數(SDK函數的標…

java.lang.String小測試

還記得java.lang.String么&#xff0c;如果現在給你一個小程序&#xff0c;你能說出它的結果么 1 public static String ab(String a){2 return a "b";3 }4 5 public static void testAb(){6 String x "a";7 ab…

Oracle傳輸表空間

一、簡介 可傳輸表空間(還有個集)最大的優勢是其速度比export/import或unload/load要快的多。因為可傳輸表空間主要是復制數據文件到目標路徑&#xff0c;然后再使用export/import或Data Pump export/import等應用僅導出/導入表空間對象的元數據到新數據庫。 &#xff08;1&…

進程控制塊PCB結構體 task_struct 描述

進程控制塊&#xff0c;英文名&#xff08;Processing Control Block&#xff09;&#xff0c;簡稱 PCB 。 進程控制塊是系統為了管理進程設置的一個專門的數據結構&#xff0c;主要表示進程狀態。 每一個進程都對應一個PCB來維護進程相關的信息&#xff1b; 在Linux中&#xf…

基于OpenCV與tensorflow實現實時手勢識別

基于OpenCV與tensorflow object detection API使用遷移學習&#xff0c;基于SSD模型訓練實現手勢識別完整流程&#xff0c;涉及到數據集收集與標注、VOC2012數據集制作&#xff0c;tfrecord數據生成、SSD遷移學習與模型導出&#xff0c;OpenCV攝像頭實時視頻流讀取與檢測處理&a…

學習筆記(25):Python網絡編程并發編程-Thread其他屬性和守護線程

立即學習:https://edu.csdn.net/course/play/24458/296440?utm_sourceblogtoedu 1.Thread其他的屬性 CurrentThread().getName():獲得當前線程的名字 t.is_Alive:判斷線程是否還在運行 t.join():等待線程運行結束再執行join后面的代碼 t.setName("name"):為線程…

AIX主機信任關系配置

1.配置主機信任關系的時候&#xff0c;需要先在兩臺主機/etc/hosts文件中添加要信任主機的&#xff29;&#xff30;&#xff0c;假設有(192.168.8.190 aix190,192.168.8.191 aix191)2個主機,在191主機配置如下所示 192.168.8.190 aix190 2.如果系統配置DNS&#xff0c;則需要去…

Sprint2團隊貢獻分

團隊貢獻分&#xff1a; 郭志豪&#xff1a;31% http://www.cnblogs.com/gzh13692021053/ 楊子健&#xff1a;22%http://www.cnblogs.com/yzj666/ 譚宇森&#xff1a;23%http://www.cnblogs.com/yzj666/ 劉森松&#xff1a;24% http://www.cnblogs.com/lssh/轉載于:https://w…

學習筆記(26):Python網絡編程并發編程-GIL與自定義互斥鎖的區別

立即學習:https://edu.csdn.net/course/play/24458/296443?utm_sourceblogtoedu 1.GIL的基本概念 答&#xff1a;GIL本質上就是一把鎖&#xff0c;只是他是一把在python解釋器上的鎖 2.GIL與互斥鎖的區別 答&#xff1a; 1&#xff09;GIL保護的是在python解釋器上的參數&a…

多目標跟蹤檢測

方法&#xff1a; 1、實時性&#xff0c;每幀視頻10ms 2、方法&#xff0c;首先深度學習檢測到目標&#xff0c;然后再寫跟蹤算法

2014年最具人氣國外WORDPRESS主題

在國外&#xff0c;WrodPress這個博客系統極為受歡迎&#xff0c;使用WordPress來建站可以降低很多成本&#xff0c;另外還能以十分便宜的價格獲得一個漂亮的WP網站模板。 今天向大家分享來自Themeforest 2014年最具人氣的高級WrodPress主題&#xff0c;這些主題無論是設計還是…

軟件工程學習感想

通過這半學期我對軟件工程的學習&#xff0c;從軟件工程的基礎到考試用戶的需求分析與求解&#xff0c;最后到黑盒白盒測試通過自身做過的一些案例&#xff0c;講解了軟件工程這門本身枯燥乏味的課程&#xff0c;這不僅增強了學生學習的積極性&#xff0c;也通過讓我們自己去做…

開源視覺salm算法介紹

當前的開源SLAM方案 開源方案傳感器形式地址鏈接MonoSLAM單目https://github.com/hanmekim/SceneLib2 PTAM單目 http://www.robots.ox.ac.uk/~gk/PTAM/ORB-SLAM 單目為主http://webdiis.unizar.es/~raulmur/orbslam/ORB-SLAM2單目https://github.com/raulmur/ORB_SLAM2LSD-SLAM…

學習筆記(27):Python網絡編程并發編程-GIL與多線程

立即學習:https://edu.csdn.net/course/play/24458/296444?utm_sourceblogtoedu GIL與多線程 1.須知&#xff1a; 1&#xff09;cpu主要是為了提升計算性能&#xff0c;增加CPU提升計算性能&#xff1b; 2&#xff09;每一個CPU一旦遇到阻塞狀態都會處于等待狀態&#xff0c…

J0ker的CISSP之路:復習-Access Control(3)

本文同時發表在&#xff1a;[url]http://netsecurity.51cto.com/art/200801/63649.htm[/url] 在《J0ker的CISSP之路》系列的上一篇文章里&#xff0c;J0ker給大家介紹了訪問控制CBK里面一些常見的破壞信息資產保密性的威脅類型&#xff0c;那么什么類型的威脅會破壞信息資產的完…

C#中對泛型List進行分組輸出元素

背景&#xff1a;在輸出列表時&#xff0c;往往需要按照某一字段進行分組&#xff0c;比如在輸出城市列表時&#xff0c;按照首字母進行分組&#xff0c;輸出學生列表時&#xff0c;按照年級進行分組&#xff0c;然后再對分組的結果按照其他的字段進行排序。 如存在以下STU學生…

分頁3

http://www.cnblogs.com/ChrisLee2011/p/4288194.html 頁面的HTML部分如下&#xff1a; < div class "tableContainer"> < input id "currentPage" type "hidden" value " ViewData[ "currentPage"] "/> < i…

最優化課堂筆記01: 第一章 最優化的基本概念

第一章 最優化的基本概念 1.最優化求解的數學模型建立 2.例題&#xff08;考試第一大題&#xff1a;數學模型建立&#xff09; 解析&#xff1a;優化變量、目標函數&#xff08;一般取最小化&#xff09;、約束條件 注意&#xff1a; 1&#xff09;約束條件一般形式為&#…