이 글에서는 마우스 왼쪽 상단에 슬라이딩 메뉴 효과를 구현하는 js 코드를 주로 소개합니다. 이는 마우스 이벤트를 기반으로 페이지 요소의 스타일을 동적으로 변경하는 JavaScript 기술을 포함합니다. 자세한 내용은 다음과 같습니다.
여기서 마우스를 클릭하면 웹페이지 왼쪽 상단에 있는 메뉴가 활성화됩니다. 클릭하지 마세요. 보조 메뉴로 전환될 수 있습니다.
실행 중인 효과의 스크린샷은 다음과 같습니다.
온라인 데모 주소는 다음과 같습니다.
http: //demo.jb51.net/ js/2015/js-click-hd-show-menu-style-codes/
구체 코드는 다음과 같습니다.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>左上角导航菜单</title> <style type="text/css"> #pMenu0 {position:absolute; top:0px; left:30px; visibility:hidden; font-family:arial,helvetica,sans-serif; font-size:18px; font-weight:bold;} #pMenu1 {position:absolute; top:0px; left:150px; visibility:hidden; font-family:arial,helvetica,sans-serif; font-size:18px; font-weight:bold;} #pMenu2 {position:absolute; top:0px; left:250px; visibility:hidden; font-family:arial,helvetica,sans-serif; font-size:18px; font-weight:bold;} </style> <script language="javascript"> function lib_bwcheck(){ //Browsercheck (needed) this.ver=navigator.appVersion this.agent=navigator.userAgent this.dom=document.getElementById?1:0 this.opera5=this.agent.indexOf("Opera 5")>-1 this.ie5=(this.ver.indexOf("MSIE 5")>-1 && this.dom && !this.opera5)?1:0; this.ie6=(this.ver.indexOf("MSIE 6")>-1 && this.dom && !this.opera5)?1:0; this.ie4=(document.all && !this.dom && !this.opera5)?1:0; this.ie=this.ie4||this.ie5||this.ie6 this.mac=this.agent.indexOf("Mac")>-1 this.ns6=(this.dom && parseInt(this.ver) >= 5) ?1:0; this.ns4=(document.layers && !this.dom)?1:0; this.bw=(this.ie6 || this.ie5 || this.ie4 || this.ns4 || this.ns6 || this.opera5) return this } var bw=new lib_bwcheck() var tMove=10; var tSpeed=40 var tMoveOnScroll=true var tShow=20 function makeMenu(obj,nest,show,move,speed){ nest=(!nest) ? "":'document.'+nest+'.' this.el=bw.dom?document.getElementById(obj):bw.ie4?document.all[obj]:bw.ns4?eval(nest+'document.'+obj):0; this.css=bw.dom?document.getElementById(obj).style:bw.ie4?document.all[obj].style:bw.ns4?eval(nest+'document.'+obj):0; this.x=this.css.left||this.css.pixelLeft||this.el.offsetLeft||0 this.y=this.css.top||this.css.pixelTop||this.el.offsetTop||0 this.state=1; this.go=0; this.mup=b_mup; this.show=show; this.mdown=b_mdown; this.height=bw.ns4?this.css.document.height:this.el.offsetHeight this.moveIt=b_moveIt; this.move=move; this.speed=speed this.obj = obj + "Object"; eval(this.obj + "=this") } var px = bw.ns4||window.opera?"":"px"; function b_moveIt(x,y){this.x=x; this.y=y; this.css.left=this.x+px; this.css.top=this.y+px;} function b_mup(){ if(this.y>-this.height+this.show){ this.go=1; this.moveIt(this.x,this.y-this.move) setTimeout(this.obj+".mup()",this.speed) }else{this.go=0; this.state=1} } //Menu out function b_mdown(){ if(this.y<eval(scrolled)){ this.go=1; this.moveIt(this.x,this.y+this.move) setTimeout(this.obj+".mdown()",this.speed) }else{this.go=0; this.state=0} } function moveTopMenu(num){ if(!oMenu[num].go){ if(!oMenu[num].state)oMenu[num].mup() else oMenu[num].mdown() } for(i=0;i<oMenu.length;i++){ if(i!=num && !oMenu[i].state){ oMenu[i].mup()} } } function checkScrolled(){ for(i=0;i<oMenu.length;i++){ if(!oMenu[i].go){ y=!oMenu[i].state?eval(scrolled):eval(scrolled)-oMenu[i].height+oMenu[i].show oMenu[i].moveIt(oMenu[i].x,y) } } if(bw.ns4||bw.ns6) setTimeout('checkScrolled()',40) } function topMenuInit(){ oMenu=new Array() oMenu[0]=new makeMenu('pMenu0',"",tShow,tMove,tSpeed) oMenu[1]=new makeMenu('pMenu1',"",tShow,tMove,tSpeed) //* oMenu[2]=new makeMenu('pMenu2',"",20,10,20) //* scrolled=bw.ns4||bw.ns6?"window.pageYOffset":"document.body.scrollTop" for(i=0;i<oMenu.length;i++){ oMenu[i].moveIt(oMenu[i].x,-oMenu[i].height+oMenu[i].show) oMenu[i].css.visibility='visible' } if(tMoveOnScroll) bw.ns4||bw.ns6?checkScrolled():window.onscroll=checkScrolled; } onload=topMenuInit; </script> <p id="pMenu0"> <!-- You can just replace this text with some cool images if you want --> <a href="javascript://">链接一</a><br><br> <a href="javascript://">链接二</a><br><br> <a href="javascript://">链接三</a><br><br> <a href="javascript://">链接四</a><br><br> <a href="#" onclick="moveTopMenu(0); return false">菜单一</a> </p> <p id="pMenu1"> <!-- You can just replace this text with some cool images if you want --> 这是第二个菜单的内容<br><br> <a href="#" onmouseover="moveTopMenu(1)">菜单二</a> </p> <p id="pMenu2"> <!-- You can just replace this text with some cool images if you want --> 这是第三个菜单的内容<br> <a href="#" onclick="moveTopMenu(2); return false">菜单三</a> </p> </body> </html>
위 내용은 이 장의 전체 내용입니다. 더 많은 관련 튜토리얼을 보려면 JavaScript 비디오 튜토리얼을 방문하세요!