js元素在中心點由小變大顯示效果和隱藏
在不少的功能中有類似的,效果,那麼就是元素能夠從中心點進行放大和縮小。
下面就通過程式碼例項介紹一下如何利用javascript實現此功能。
程式碼如下:
[HTML] 純文字檢視 複製程式碼<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> #main{ width:500px; margin:100px; height:500px; border:1px solid red } #test{ border:1px solid red; display:none; width:10px; height:10px; background:yellow } </style> <script type="text/javascript"> function $(o){ return document.getElementById(o); } function XslideDown(obj,type,mX,num) { if(!type){return;} try{ var type1=type=="height"?"marginTop":"marginLeft"; var type2=type=="height"?"top":"left"; XSetCss(obj,[type1,XgetOffset(obj)[type2]+"px"]); XSetCss(obj,[type,XgetOffset(obj)[type]+num+"px"]); if(XgetOffset(obj)[type]<mX){ setTimeout(function(){XslideDown(obj,type,mX,num);},10); } else{ XSetCss(obj,[type,mX]) } } catch(e){} } function XslideUp(obj,type,mX,num) { if(!type){return;} try{ var type1=type=="height"?"marginTop":"marginLeft"; var type2=type=="height"?"top":"left"; XSetCss(obj,[type1,XgetOffset(obj)[type2]+"px"]); XSetCss(obj,[type,XgetOffset(obj)[type]-num+"px"]); if(XgetOffset(obj)[type]>mX){ setTimeout(function(){XslideUp(obj,type,mX,num);},1); } else{ XSetCss(obj,[type,mX]) obj.style.display="none"; } } catch(e){} } function XSetCss(obj,cssArgs){ if(arguments.length==2){ if(cssArgs.constructor==Object){ for(var o in cssArgs){ if(obj.style[o]!="undefiend"){ obj.style[o]=cssArgs[o]; } } } if(cssArgs.constructor==Array&&cssArgs.length==2){ obj.style[cssArgs[0]]=cssArgs[1]; } } } function XgetOffset(obj){ return { height:obj.offsetHeight, width:obj.offsetWidth, top:parseInt((obj.parentNode.offsetHeight-obj.offsetHeight)/2), left:parseInt((obj.parentNode.offsetWidth-obj.offsetWidth)/2) } } function XopenDiv(o){ o.style.display="block"; XslideDown(o,"width",400,10); XslideDown(o,"height",400,10); } function XcloseDiv(o){ XslideUp(o,"width",10,10); XslideUp(o,"height",10,10); } window.onload=function(){ $("bt").onclick=function(){ XopenDiv($("test")) } $("bt1").onclick=function(){ XcloseDiv($("test")) } } </script> </head> <body> <input type="button" value="開啟" id="bt" /> <input type="button" value="關閉" id="bt1" /> <div id="main"> <div id="test"></div> </div> </body> </html>
上面的程式碼實現了我們的要求,下面介紹一下它的實現過程。
一.程式碼註釋:
(1).function $(o){
return document.getElementById(o);
},模擬實現了jQuery的id選擇器。
(2).function XslideDown(obj,type,mX,num) {},此函式實現了div元素擴充套件效果,第一個引數是要擴充套件的元素物件,第二個引數是width或者height屬性,第三個引數規定最大的尺寸,第四個參數列示每次增加的數目。
(3).if(!type){return;},如果不存在,那麼直接返回。
(4).try{} catch{}語句這裡也是為了安全起見。
(5).var type1=type=="height"?"marginTop":"marginLeft",如果type是"height",那麼就返回marginTop,否則返回marginLeft。
(6).var type2=type=="height"?"top":"left",和上面一樣的道理。
(7).XSetCss(obj,[type1,XgetOffset(obj)[type2]+"px"]),設定元素的左邊距和上邊距。
(8).XSetCss(obj,[type,XgetOffset(obj)[type]+num+"px"]),設定元素的width或者height值,每一次執行都會增加一定的尺寸。
(9).if(XgetOffset(obj)[type]<mX){
setTimeout(function(){XslideDown(obj,type,mX,num);},10);
},如果元素還沒有到達最大尺寸,那麼就採用遞迴的方式繼續執行上面的程式碼。
(10).else{
XSetCss(obj,[type,mX+"px"])
},否則的話,設定為最大尺寸。
(11).function XSetCss(obj,cssArgs){
if(arguments.length==2){
if(cssArgs.constructor==Object){
for(var o in cssArgs){
if(obj.style[o]!="undefiend"){
obj.style[o]=cssArgs[o];
}
}
}
if(cssArgs.constructor==Array&&cssArgs.length==2){
obj.style[cssArgs[0]]=cssArgs[1];
}
}
},上面的程式碼就是設定元素的css屬性,第一個引數就是元素物件,第二個引數是一個Object物件或者陣列。
只是這兩種不同的資料型別,讀取屬性值得方式不同。
(12).function XgetOffset(obj){
return {
height: obj.offsetHeight,
width: obj.offsetWidth,
top:parseInt((obj.parentNode.offsetHeight-obj.offsetHeight)/2),
left:parseInt((obj.parentNode.offsetWidth-obj.offsetWidth)/2)
}
},此方法返回一個物件,物件包含四個屬性,分別是元素的長寬,還有元素能夠實現居中的上邊距和左邊距尺寸。
二.相關閱讀:
(1).三元運算子可以參閱javascript 三元運算子一章節。
(2).setTimeout()方法可以參閱setTimeout()一章節。
(3).constructor屬性可以參閱javascript constructor一章節。
(4).for in語句可以參閱javascript for in一章節。
(5).offsetHeight可以參閱js offsetHeight一章節。
(6).parseInt()可以參閱javascript parseInt()一章節。
相關文章
- CSS點選隱藏和顯示div效果CSS
- jQuery 效果 – 隱藏和顯示jQuery
- jQuery實現的點選元素隱藏和顯示jQuery
- js實現的點選一個div顯示,其他div隱藏效果JS
- CSS 小結筆記之元素的隱藏與顯示CSS筆記
- js設定元素控制元件顯示和隱藏程式碼例項JS控制元件
- 元素的隱藏和顯示(display ,visibility ,overflow)
- JavaScript動畫方式控制div元素的隱藏和顯示JavaScript動畫
- 點選元素實現當前元素隱藏效果
- 由顯示/隱藏引出的CSSbug(轉)CSS
- 由顯示/隱藏引出的CSS Bug(轉)CSS
- jQuery動畫的顯示與隱藏效果jQuery動畫
- jQuery動畫的顯示與隱藏效果!jQuery動畫
- jQuery 實現顯示與隱藏效果jQuery
- MacOS X隱藏和顯示隱藏檔案Mac
- Mac顯示和隱藏“隱藏檔案”命令Mac
- 使用 hide和 show方法來隱藏和顯示 HTML 元素IDEHTML
- jQuery點選頁面其他地方隱藏顯示的元素jQuery
- 點選按鈕顯示或者隱藏元素例項程式碼
- jquery點選按鈕顯示和隱藏DIvjQuery
- jQuery點選按鈕實現div的隱藏和顯示切換效果jQuery
- view的隱藏和顯示View
- js下拉框實現div顯示和隱藏JS
- js動態控制表單的顯示和隱藏JS
- 點選按鈕動畫方式隱藏和顯示div動畫
- JavaScript點選切換div的顯示和隱藏JavaScript
- 定位是什麼,元素怎麼顯示隱藏
- 使用jQuery控制table表格的tr行顯示和隱藏效果jQuery
- mac顯示隱藏檔案,取消顯示隱藏檔案Mac
- Mac下顯示和隱藏隱藏檔案的命令Mac
- 區塊的顯示和隱藏
- MAC如何顯示隱藏檔案和隱藏隱藏檔案的命令Mac
- 動態控制C4C UI元素的顯示和隱藏UI
- 點選按鈕實現div的顯示和隱藏
- JavaScript點選一個按鈕隱藏和顯示divJavaScript
- OSX中隱藏和顯示[隱藏檔案]的命令列命令列
- 遨翔在知識的海洋裡----(vue之顯示隱藏的效果)Vue
- vue.js顯示與隱藏(v-if)Vue.js