Nov 11, 2008

Let's Prepare Animated Dropdown Menu

ေမာင္လူေအး ဘေလာ႕မွာ Menu ေတြကို အယင္က Peek-a-boo ပံုစံနဲ႕ ထားပါတယ္။ ညာဖက္ Sidebar ရဲ႕ေအာက္နားမွာေပါ႕။ ၿပီးခဲ႕တဲ႕ အပတ္ စေန၊ တနဂၤေႏြကေတာ႕ ဘေလာ႕ကို အခ်ိန္ ေတာ္ေတာ္ေလး ေပးၿပီး ကလိ ျဖစ္ပါတယ္။ Menu အေနနဲ႕က အယင္ကလည္း ဒီအေရအတြက္နဲ႕ ဒီ Menu ေတြပဲ။ သို႕ေပမဲ႕ Cbox ေအာက္မွာ ထားတာက တစ္ေၾကာင္း၊ အမွတ္တမဲ႕ ၾကည္႕လိုက္ရင္ စာေရးထားတာနဲ႕ ဘာမွ မထူးတာက တေၾကာင္းေၾကာင္႕ သြားႏွိပ္ဖူးတဲ႕ သူေလာက္သာ သိၾကၿပီးေတာ႕၊ ေတာ္႐ံု ဘေလာ႕လာဖတ္သူမ်ားက Menu ႐ွိမွန္းကို မသိၾကတာပါ။

ဒီ စေန၊ တနဂၤေႏြမွာ Menu ေလး အေပၚ တင္လိုက္တယ္။ ေနာက္ထပ္ ေမာက္စ္ေလး ျဖတ္ေျပး႐ံုနဲ႕ ေအာက္ကို က်လာေစတဲ႕ Dropdown Menu ေလး လုပ္လိုက္တယ္။ ဆိုေတာ႕ ဒီေနရာမွာ Menu ရွိတယ္ဆိုတာ လာလည္တဲ႕ သူငယ္ခ်င္းေတြ အလြယ္တကူ သိေစႏိုင္ၿပီးေတာ႕ သြားေရာက္ လည္ပတ္ဖို႕ လြယ္ကူ သြားေစပါတယ္။

တကယ္တမ္း ေမာင္လူေအး Programming နားမလည္ပါဘူး။ သို႕ေပမဲ႕ အလုပ္ကလြဲရင္ ေက်ာင္းစာကလြဲရင္ စိတ္၀င္စားတဲ႕ အရာသာ ျဖစ္လိုက္၊ မရမခ်င္း စိုက္လိုက္မတ္တပ္ လိုက္လုပ္တတ္တဲ႕ ၀သီေၾကာင္႕ ဟိုကလိ ဒီကလိကေနၿပီးေတာ႕ အခ်ိန္ ေတာ္ေတာ္ေလး ေခါင္းကိုက္ခံ၊ မ်က္စိ႐ႈပ္ခံၿပီး လုပ္လိုက္တဲ႕ ေနာက္မွာ အဲဒီ Menu ေလးရလာတယ္ ေပါ႕ဗ်ာ။

အယင္ပို႕စ္မွာ ကိုေ႐ႊဘိုသားေလးက ေမးသြားတယ္။ ဘယ္လို လုပ္တာလဲ။ သိခ်င္ပါတယ္ ဆိုေတာ႕ ေမာင္လူေအး လုပ္ထားတဲ႕ အေတြ႕အႀကံဳ ေလးနဲ႕ ေျပာျပမယ္ဗ်ာ။ အိုင္တီသမား မဟုတ္ေတာ႕ နား႐ႈပ္ခဲ႕မယ္ဆိုရင္ ကြန္းမန္႕ေလး ခ်န္ခဲ႕ဗ်ာ။ ေနာ…

စစခ်င္းက ဒီ စာသားေလးကို အယင္ကူးဗ်ာ။



.jqueryslidemenu{
font: bold 12px Verdana;
background: #414141;
width: 100%;
}

.jqueryslidemenu ul{
margin: 0;
padding: 0;
list-style-type: none;
}

/*Top level list items*/
.jqueryslidemenu ul li{
position: relative;
display: inline;
float: left;
}

/*Top level menu link items style*/
.jqueryslidemenu ul li a{
display: block;
background: #414141; /*background of tabs (default state)*/
color: white;
padding: 8px 10px;
border-right: 1px solid #778;
color: #2d2b2b;
text-decoration: none;
}

* html .jqueryslidemenu ul li a{ /*IE6 hack to get sub menu links to behave correctly*/
display: inline-block;
}

.jqueryslidemenu ul li a:link, .jqueryslidemenu ul li a:visited{
color: white;
}

.jqueryslidemenu ul li a:hover{
background: black; /*tab link background during hover state*/
color: white;
}

/*1st sub level menu*/
.jqueryslidemenu ul li ul{
position: absolute;
left: 0;
display: block;
visibility: hidden;
}

/*Sub level menu list items (undo style from Top level List Items)*/
.jqueryslidemenu ul li ul li{
display: list-item;
float: none;
}

/*All subsequent sub menu levels vertical offset after 1st level sub menu */
.jqueryslidemenu ul li ul li ul{
top: 0;
}

/* Sub level menu links style */
.jqueryslidemenu ul li ul li a{
font: normal 13px Verdana;
width: 160px; /*width of sub menus*/
padding: 5px;
margin: 0;
border-top-width: 0;
border-bottom: 1px solid gray;
}

.jqueryslidemenuz ul li ul li a:hover{ /*sub menus hover style*/
background: #eff9ff;
color: black;
}

/* ######### CSS classes applied to down and right arrow images ######### */

.downarrowclass{
position: absolute;
top: 12px;
right: 7px;
}

.rightarrowclass{
position: absolute;
top: 6px;
right: 5px;
}

ၿပီးရင္ Notepad ေလးဖြင္႕ၿပီး File Nameကို jqueryslidemenu.css လို႕ေပးၿပီး သိမ္းလိုက္ဗ်ာ။

ေနာက္တစ္ခါ ဒီ စာသားေလးေတြကို ထပ္ကူးဗ်ာ။

//Specify full URL to down and right arrow images (23 is padding-right to add to top level LIs with drop downs):
var arrowimages={down:['downarrowclass', 'down.gif', 23], right:['rightarrowclass', 'right.gif']}

var jqueryslidemenu={

animateduration: {over: 200, out: 100}, //duration of slide in/ out animation, in milliseconds

buildmenu:function(menuid, arrowsvar){
jQuery(document).ready(function($){
var $mainmenu=$("#"+menuid+">ul")
var $headers=$mainmenu.find("ul").parent()
$headers.each(function(i){
var $curobj=$(this)
var $subul=$(this).find('ul:eq(0)')
this._dimensions={w:this.offsetWidth, h:this.offsetHeight, subulw:$subul.outerWidth(), subulh:$subul.outerHeight()}
this.istopheader=$curobj.parents("ul").length==1? true : false
$subul.css({top:this.istopheader? this._dimensions.h+"px" : 0})
$curobj.children("a:eq(0)").css(this.istopheader? {paddingRight: arrowsvar.down[2]} : {}).append(
'[img src="http://www.blogger.com/%27+%20%28this.istopheader?%20arrowsvar.down%5B1%5D%20:%20arrowsvar.right%5B1%5D%29%20%09%09%09%09+%27" class="' + (this.istopheader? arrowsvar.down[0] : arrowsvar.right[0]) + '" style="border: 0pt none ;" /]'
)
$curobj.hover(
function(e){
var $targetul=$(this).children("ul:eq(0)")
this._offsets={left:$(this).offset().left, top:$(this).offset().top}
var menuleft=this.istopheader? 0 : this._dimensions.w
menuleft=(this._offsets.left+menuleft+this._dimensions.subulw>$(window).width())? (this.istopheader? -this._dimensions.subulw+this._dimensions.w : -this._dimensions.w) : menuleft
if ($targetul.queue().length<=1) //if 1 or less queued animations $targetul.css({left:menuleft+"px", width:this._dimensions.subulw+'px'}).slideDown(jqueryslidemenu.animateduration.over) }, function(e){ var $targetul=$(this).children("ul:eq(0)") $targetul.slideUp(jqueryslidemenu.animateduration.out) } ) //end hover }) //end $headers.each() $mainmenu.find("ul").css({display:'none', visibility:'visible'}) }) //end document.ready } } //build menu with ID="myslidemenu" on page: jqueryslidemenu.buildmenu("myslidemenu", arrowimages)

ၿပီးရင္ jqueryslidemenu.js ဆိုတဲ႕ နာမည္ေလး ေပးၿပီး သိမ္းဗ်ာ။

ၿပီးရင္ ဒီ ျမွားပံုေလး ႏွစ္ခုကို Download ခ်ပါ။ အဲဒီေနာက္ အဲဒီျမွားေလး ႏွစ္ခုကိုပဲ သူငယ္ခ်င္းရဲ႕ Hosting တစ္ခုမွာ Upload လုပ္ဗ်ာ။ ၿပီးရင္ URL ေလး ထုတ္ယူပါ။

ခုနက Save လုပ္ထားတဲ႕ jqueryslidemenu.js ကို Open with နဲ႕ Notepad နဲ႕ ဖြင္႕ဗ်ာ။

ၿပီးရင္

//Specify full URL to down and right arrow images (23 is padding-right to add to top level LIs with drop downs):
var arrowimages={down:['downarrowclass', 'down.gif', 23], right:['rightarrowclass', 'right.gif']}

ဒီထဲမွာ ပါတဲ႕ down.gif နဲ႕ right.gif ကို ခုနက ရထားတဲ႕ URL ေလးေတြနဲ႕ အစားထိုးဗ်ာ။ ၿပီးရင္ Save ေပါ႔။

အဲဒီေနာက္ အဲဒီ jqueryslidemenu.js နဲ႕ jqueryslidemenu.css ကိုလည္း ံHosting ထဲကို Upload လုပ္ပါ။

အဲဒါ ၿပီးရင္ www.blogger.com ထဲကို သြားဗ်ာ။ ပံုမွန္အတိုင္း sign in လုပ္ဗ်ာ။ ၿပီးရင္ layout tab ထဲက Edit HTML ကို ၀င္ဗ်ာ။

အဲဒီထဲမွာ [head] ဆိုတာကို ႐ွာဗ်ာ။

အဲဒီ [head] ေအာက္မွာ ဒီ စာသားေလး ကူးထည္႕ဗ်ာ။


[link rel="stylesheet" type="text/css" href="jqueryslidemenu.css"]

[!--[if lte IE 7]]
[
style type="text/css"]
html .jqueryslidemenu{height: 1%;} /*Holly Hack for IE7 and below*/
[/style]
[![endif]--]

[script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"][/script]
[script type="text/javascript" src="jqueryslidemenu.js"][/script]

အဲဒါေလး ကူးထည္႕တဲ႕ အခါမွာ jqueryslidemenu.css နဲ႕ jqueryslidemen.js ေလးကို ခုနက Hosting ကေန ရထားတဲ႕ URL ေလးေတြ ေျပာင္းေပးဖို႕ေတာ႕ မေမ႕နဲ႕ေပါ႕ဗ်ာ။

အဲ ဒီအဆင္႕အထိ ၿပီးၿပီဆိုရင္ေတာ႕ Coding ကိစၥ ၀ိစၥ ၿပီးသေလာက္ ျဖစ္သြားပါၿပီ။

Coding ေတြ ၿပီးရင္ ကၽြန္ေတာ္တို႕ Menu ေလးေတြ ေနရာခ်ဖို႕ပဲ က်န္ပါေတာ႕မယ္။

အဲဒီလို ေနရာခ်ႏိုင္ဖို႕ ဒီ Coding ေလးကို သံုးပါတယ္။ ဒီ Coding ကိုေတာ႕ ကိုယ္ထည္႕ခ်င္တဲ႕ Link ေတြနဲ႕ Notepad ထဲမွာ Prepare လုပ္ၿပီးမွ Copy Paste လုပ္တာ ပို အဆင္ေျပပါတယ္။

[div id="myslidemenu" class="jqueryslidemenu"]
[ul]
[li][a href="http://www.yourdomain.com/"]Item 1[/a][/li]
[li][a href="#"]Item 2[/a][/li]
[li][a href="#"]Folder 1[/a]
[ul]
[li][a href="#"]Sub Item 1.1[/a][/li]
[li][a href="#"]Sub Item 1.2[/a][/li]
[li][a href="#"]Sub Item 1.3[/a][/li]
[li][a href="#"]Sub Item 1.4[/a][/li]
[/ul]
[/li]
[li][a href="#"]Item 3[/a][/li]
[li][a href="#"]Folder 2[/a]
[ul]
[li][a href="#"]Sub Item 2.1[/a][/li]
[li][a href="#"]Folder 2.1[/a]
[ul]
[li][a href="#"]Sub Item 2.1.1[/a][/li]
[li][a href="#"]Sub Item 2.1.2[/a][/li]
[li][a href="#"]Folder 3.1.1[/a]
[ul]
[li][a href="#"]Sub Item 3.1.1.1[/a][/li]
[li][a href="#"]Sub Item 3.1.1.2[/a][/li]
[li][a href="#"]Sub Item 3.1.1.3[/a][/li]
[li][a href="#"]Sub Item 3.1.1.4[/a][/li]
[li][a href="#"]Sub Item 3.1.1.5[/a][/li]
[/ul]
[/li]
[li][a href="#"]Sub Item 2.1.4[/a][/li]
[/ul]
[/li]
[/ul]
[/li]
[li][a href="http://www.yourdomain.com/"]Item 4[/a][/li]


[/div]




Click ႏွိပ္လုိ႕ ကိုယ္သြားေစခ်င္တဲ႕ ေနရာရဲ႕ လိပ္စာကို
[a href="#"] ရဲ႕ # ေနရာမွာ ထည္႕ဗ်ာ။ ေနာက္က Item တို႕ Sub Item တို႕ ေနရာကေတာ႕ ကိုယ္ေပၚေစခ်င္တဲ႕ စာသားေလးေတြ ႐ိုက္ထည္႕ေပါ႕။

အဲလို ႐ိုက္ထည္႕ၿပီးတဲ႕ ေနာက္မွာေတာ႕ ကိုယ္႕ Menu ကို ဘယ္နားထားခ်င္တာလဲ ဆိုတာေပၚ မူတည္ၿပီး ေနရာခ်ရပါမယ္။ ေမာင္လူေအး စာမ်က္ႏွာမွာ ထည္႕ထားတဲ႕ ေနရာမ်ိဳးမွာ ထည္႕ခ်င္တာ ဆိုရင္ေတာ႕ HTML Edit Page ထဲမွာ ဒီ Coding ေလးကို ႐ွာၿပီး အဲဒီ ေအာက္မွာ ထည္႕ေပးလိုက္ပါ။
[div id='content-wrapper']

[div id='crosscol-wrapper' style='text-align:center']
[b:section class='crosscol' id='crosscol' showaddelement='no'/]

ဒါဆို ေမာင္လူေအး စာမ်က္ႏွာမွာ ေပၚေနတဲ႕ Menu ေလးေတြ လိုမ်ိဳးေလးေတြ ရ႐ွိပါလိမ္႕မယ္ဗ်ာ။ Coding ေတြထဲ ပါတဲ႕ အနီေရာင္ ေလးေထာင္႕ကြင္း ေလးေတြကိုေတာ႕ ေထာင္႕ကြင္းေလးေတြ ေျပာင္းေပးဖို႕ လိုပါမယ္။

Coding ကူးရတာ အဆင္မေျပဘူး ဆိုရင္ jqueryslidemenu.css နဲ႕ jqueryslidemenu.js တို႕ေတြကို ဒီမွာလည္း သြားယူလို႕ ရပါတယ္ဗ်ာ...

  • jqueryslidemenu.css

  • jqueryslidemenu.js


  • အကယ္လို႕ ေမာင္လူေအး ေရးျပတာ နား႐ႈပ္မယ္ ဆိုရင္ေတာ႕ ဒီေနရာေလးမွာ ေအာ္ရီခ်င္တယ္ ဗား႐ွင္းကို သြားေရာက္ ဖတ္႐ႈႏိုင္ပါတယ္ဗ်ာ။

    Related Posts

    5 comments:

    1. kom: Original ကို ေအာ္ရီခ်င္တယ္ လို႕ဖတ္ၿပီး ဘာကို ေအာ္ရီခ်င္ပါလိမ္႔လို႕စဥ္းစားလုိက္မိေသးတယ္။ :D
      12 Nov 08, 00:13
      kom: မလုပ္ရဲပါဘဴး။ ွွရွိတာေလးနဲ႕ဘဲ ထမင္းၿကမ္းယပ္ခပ္စားပါ႔ရေစ။။

      ReplyDelete
    2. Ko Lu Aye, Thanks you so much. I'll try it coming Sat.

      ReplyDelete
    3. ေတာ္လုိက္တဲ့ကုိလူေအး၊ ဘာမွေရးလုိ့မတတ္လုိ့ အေသးစိတ္ရွင္းျပထားလဲလုပ္လုိ့မတတ္လုိ့ လာျပီးပဲဖတ္သြားပါတယ္၊ ေက်းဇူးပါ၊

      ReplyDelete
    4. hi,
      could you teach me how to add animated dropdown menu to blogger?

      thanks
      http://ifinancialfreedomnow.blogspot.com/

      ReplyDelete
    5. Hi Anonymous,

      Thanks for your interest. Please take a look on this original page of that animated dropdown tutorial, here.

      Have fun.

      ReplyDelete

    Your comment encouraged Mgluaye to write new posts in blog. It will be appreciated to write something about the post you have read...

    Thank you

    BAY OF HUNTERS