任意運動框架
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
div {
width: 200px;
height: 200px;
background-color: aquamarine;
margin: 10px;
border: 10px solid deeppink;
float: left;
text-align: center;
line-height: 200px;
}
#div3 {
opacity: 0.3;
filter: alpha(opacity: 30);
}
</style>
</head>
<body>
<div id="div1">變大</div>
<div id="div2">變寬</div>
<div id="div3">改變透明度</div>
<script type="text/javascript">
var oDiv1 = document.getElementById("div1");
var oDiv2 = document.getElementById("div2");
var oDiv3 = document.getElementById("div3");
oDiv1.onmouseover = function() {
startMove(oDiv1, 100, "fontSize");
}
oDiv1.onmouseout = function() {
startMove(oDiv1, 20, "fontSize");
}
oDiv2.onmouseover = function() {
startMove(oDiv2, 50, "borderWidth");
}
oDiv2.onmouseout = function() {
startMove(oDiv2, 10, "borderWidth");
}
oDiv3.onmouseover = function() {
startMove(oDiv3, 100, "opacity");
}
oDiv3.onmouseout = function() {
startMove(oDiv3, 30, "opacity");
}
function getStyle(obj, name) {
if (obj.currentStyle) {
return obj.currentStyle[name];
} else {
return getComputedStyle(obj, false)[name];
}
}
// function startMove(obj, iTarget, att) {
// clearInterval(obj.timer);
// obj.timer = setInterval(function() {
// // 獲取非行間樣式 當前語速運動的位置
// var offsetCur = parseInt(getStyle(obj, att));
// var speed = (iTarget - offsetCur) / 10;
// speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
// if (iTarget == offsetCur) {
// clearInterval(obj.timer);
// } else {
// obj.style[att] = offsetCur + speed + 'px';
// }
// }, 20);
// }
// 任意值運動框架
function startMove(obj, iTarget, att, endFn) {
clearInterval(obj.timer);
obj.timer = setInterval(function() {
// 當前元素運動的位置
// var offsetCur = parseInt(getStyle(obj, att));
var offsetCur = 0;
// 判斷是否為透明度
if (att == 'opacity') {
offsetCur = Math.round(parseFloat(getStyle(obj, att)) * 100);
} else {
offsetCur = parseInt(getStyle(obj, att));
}
var speed = (iTarget - offsetCur) / 6;
speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
if (iTarget == offsetCur) {
clearInterval(obj.timer);
if (endFn) {endFn();}
} else {
// 判斷是否為透明度
if (att == 'opacity') {
obj.style.filter = "alpha(opacity:" + (offsetCur + speed) + ")";
obj.style.opacity = (offsetCur + speed) / 100;
} else {
obj.style[att] = offsetCur + speed + 'px';
}
}
}, 20);
}
</script>
</body>
</html>
相關文章
- 運動框架框架
- JavaScript運動框架JavaScript框架
- 原生JavaScript之完美運動框架JavaScript框架
- JavaScript運動框架程式碼例項JavaScript框架
- JavaScript數字開任意次方運算JavaScript
- javascript緩衝運動框架程式碼分析JavaScript框架
- javascript實現的運動框架詳解JavaScript框架
- 【譯】我是如何學習任意前端框架的前端框架
- “造輪運動”之 ORM框架系列(二)~ 說說我心目中的ORM框架ORM框架
- 好程式設計師技術教程分享JavaScript運動框架程式設計師JavaScript框架
- 動態規劃實現O(n)爆破任意加密動態規劃加密
- js運動JS
- 運動控制
- 解除xmind限制任意移動自由主題的辦法
- IDEA小技巧:Debug拖動跳轉任意行Idea
- 移動機器人運動規劃及運動模擬機器人
- js動畫 Css提供的運動 js提供的運動JS動畫CSS
- js模擬拋物運動和慣性運動JS
- Level 運動智慧眼鏡 可代替運動手環
- 【自動駕駛】運動控制自行車模型運動規律圖解自動駕駛模型圖解
- IT運維之自動化運維運維
- css運動背景CSS
- 基於clip-path的任意元素的碎片拼接動效
- 動態的實現任意表的ALV顯示02
- 動態的實現任意表的ALV顯示01
- SCUBAJET水上運動噴氣發動機:可實現運動器材電動化
- 字元驅動框架字元框架
- Sensoria智慧運動服裝:能自動求救讓運動更安心
- 夏天必備的運動裝備,DTOOM海王運動藍芽耳機OOM藍芽
- Aeros運動文胸:透氣性的高科技運動文胸ROS
- OMsignal智慧運動內衣:追蹤穿戴者系列運動指數
- JavaScript 緩衝運動JavaScript
- 運動去手機
- 運動的時鐘
- 專案實戰:Qt球機控制工具(球機運動八個方向以及運動速度,運動指定角度QT
- 用自動化運維工具解放IT運維運維
- Hadoop Yarn 框架原理及運作機制HadoopYarn框架
- 原生JavaScript運動功能系列(四):多物體多值鏈式運動JavaScript