-
為什么要新定義一個alpha存儲透明度,而不直接用oDiv.style.filter或oDiv.style.opacity與目標判斷: style對象只能獲取通過HTML標簽的style特性定義的樣式,對于opacity特性是定義在<style>內(nèi)嵌標簽內(nèi)的樣式,odiv.style.opacity=" "結(jié)果為空。查看全部
-
currentStyle 與getComputedStyle查看全部
-
不用json的同步運動,本人自己寫的,如有錯誤或者 此方法沒有使用json的方法好的原因請大家務(wù)必私信告訴我 var heighttimer="height"+"timer"; var opacitytimer="opacity"+"timer"; li1.onmouseover = function() { startMove(this, 'height', 400,heighttimer); startMove(this, 'opacity', 30,opacitytimer); } li1.onmouseout = function() { startMove(this, 'height', 100,heighttimer); startMove(this, 'opacity', 100,opacitytimer); } function startMove(obj, attr, target,attrtimer) { clearInterval(obj[attrtimer]); obj[attrtimer] = setInterval(function() { var icur ; if(attr=='opacity') icur= parseFloat(getStyle(obj, attr))*100; else icur= parseInt(getStyle(obj, attr)); var speed = (target - icur) / 8; speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed); if (target == icur) clearInterval(obj[attrtimer]); else { if(attr=='opacity') obj.style.opacity=(icur+speed)/100; else obj.style[attr] = icur + speed + "px"; } }, 30) }查看全部
-
offsetLeft和style.left的區(qū)別: offsetLeft返回的是數(shù)字,style.left返回的是字符串,除了數(shù)字還有‘px’; offsetLeft只讀,style.left可寫。 這里style.left是隨定時器而變動的。查看全部
-
鏈式運動即使用回調(diào)函數(shù)一環(huán)扣一環(huán)查看全部
-
1.offsetWidth屬性可以返回對象的padding+border+width屬性值之和,style.width返回值就是定義的width屬性值。 2.offsetWidth屬性僅是可讀屬性,而style.width是可讀寫的。 3.offsetWidth屬性返回值是整數(shù),而style.width的返回值是字符串。 4.style.width僅能返回以style方式定義的內(nèi)部樣式表的width屬性值。 clientWidth是對象看到的寬度(含padding,不含border) offsetWidth是指對象自身的寬度(含padding,含border) scrollWidth是對象實際內(nèi)容的寬度(含padding,含border,含滾動條) JS中 obj.style.attr 只能獲取行內(nèi)樣式 要獲取非行內(nèi)樣式要通過obj.currentStyle[attr]或者getComputedStyle(obj,false)[attr]方法獲取 可以封裝為 function getStyle(obj,attr){ //currentStyle針對IE瀏覽器; if(obj.currentStyle){ return bj.currentStyle[attr]; }else{ //getComputedStyle 針對Firefox瀏覽器 return getComputedStyle(obj,false)[attr] } } obj.offsetWidth 返回值是數(shù)值所以不用parseInt();而obj.style.width獲取的是像素值 (當給div增加邊框值時,且寬度在內(nèi)聯(lián)樣式里設(shè)置,js中obj.offsetWidth返回值中包括有邊框,所以會導(dǎo)致js程序中數(shù)值的判斷有誤。當把寬度設(shè)置到行內(nèi)樣式時,上述的現(xiàn)象則沒有。)查看全部
-
多物體運動所有的東西都不能共用查看全部
-
1.速度(改變值left,right,width,height.opacity透明度) 2.緩沖運動 3.多物體運動 4.任意值變化 5.鏈式運動 6.同時運動查看全部
-
一:如果將var flag=true 放在定時器外,定時器內(nèi)部函數(shù)只能將flag變?yōu)閒alse,不能完成鏈式運動。 二:如果將var flag=true 放在定時器內(nèi),假設(shè)json參數(shù)第一二個分別是width、height,若width已經(jīng)到達final值,flag仍為true,不會設(shè)置為false,就會清除定時器 結(jié)論:只有當json內(nèi)的所有參數(shù)都達到final值,才能執(zhí)行消除定時器的操作。將var flag=true放在定時器內(nèi)部最開頭,在定時器內(nèi)部設(shè)置一個getFlag()的函數(shù),此函數(shù)遍歷json所有參數(shù)是否到達final值,只有所有參數(shù)都達到final值,flag才會為true。查看全部
-
JS動畫實現(xiàn)運動框的思路 1.速度(left right width height opacity)2.緩沖 3.多物體運動4.任意值的變化 5.鏈式運動6.同時運動查看全部
-
變速運動查看全部
-
很不錯,學(xué)到了好多,最后jQuery一下搞出來,感覺自己都可以寫框架了查看全部
-
不同瀏覽器兼容查看全部
-
如果同時調(diào)用多個startMove函數(shù),后面的startMove會清除掉前面的startMove的定時器(因為startMove函數(shù)中第一句就是clearInterval)。因此實際只有最后一個startMove被執(zhí)行了。查看全部
-
<script type="text/javascript"> window.onload=function(){ var oLi=document.getElementById('li1'); oLi.onmousemove=function(){ startMove(this,'width',400,function(){ startMove(this,'height',200,function(){ startMove(this,'opacity',100); }) }) } oLi.onmouseout=function(){ startMove(this,'opacity',30,function(){ startMove(this,'height',100,function(){ startMove(this,'width',200); }) }) } } </script>查看全部
舉報
0/150
提交
取消