Olá pessoal.Neste tutorial aprenderemos como fazer uma barra de navegação com efeito(animação) usando o Mootools.Em tutoriais anteriores falei somente sobre o JQuery, então resolvi dar uma mudada e ensinarei a fazer isto usando o Mootools que é uma otima ferramenta também.

Demostração / Download dos Arquivos
A barra de navegação é um elemento importante em qualquer site, e nada melhor do que ter uma com estilo.Neste Tutorial faremos uma barra com submenus.
O efeito ou animação que essa barra fará será quando o visitante passa o mouse sobre a barra alternado os submenus.Haverá ainda um link para esconder este submenu e mostra-lo novamente, veja com mais detalhes usando a demonstração.
antes de tudo, dê uma olhada no código HTML desta barra, repare que os menus(home, Tutoriais…) estão contidos na id=navigation, observe:
<div id="navigation">
<a href="#" class="right_link" id="op1">Esconder submenu</a>
<ul id="mymenu">
<li id="s1"><a href="#">Home</a></li>
<li id="s2"><a href="#">Tutoriais</a></li>
<li id="s3"><a href="#">Vitrine</a></li>
<li id="s4"><a href="#">Arquivos</a></li>
</ul>
</div>
Semelhantemete fiz com os submenus, só que agora usando o id dos menus, veja:
</div>
<div id="sublinks">
<ul id="s1_m">
<li><a href="#">Recentes</a></li>
<li><a href="#">Populares</a></li>
<li><a href="#">Os melhores...</a></li>
</ul>
<ul id="s2_m">
<li><a href="#">Ajax</a></li>
<li><a href="#">CSS</a></li>
<li><a href="#">Javascript</a></li>
<li><a href="#">Flash</a></li>
<li><a href="#">Photoshop</a></li>
</ul>
<ul id="s3_m">
<li><a href="#">CSS Websites</a></li>
<li><a href="#">Flash Websites</a></li>
<li><a href="#">Imagens</a></li>
</ul>
<ul id="s4_m">
<li><a href="#">Fontes</a></li>
<li><a href="#">Wallpapers</a></li>
<li><a href="#">Icones</a></li>
</ul>
</div>
Cada lista é relacionada a uma aba no menu principal .Se você quer adicionar outros elementos ao submenu você tem apenas para adicionar um elemento novo com uma identificação igual as anteriores, ou simplismente copie a anterior e colo logo abaixo deste, ex:
<ul id="s4_m">
<li><a href="#">Fontes</a></li>
<li><a href="#">Wallpapers</a></li>
<li><a href="#">Icones</a></li>
<li><a href="#">Novo Submenu</a></li>
</ul>
Esta regra também vale para os menus, adicinado seus elementos no id=mymenu e no id=sublinks, ex:
<ul id="mymenu">
<li id="s1"><a href="#">Home</a></li>
<li id="s2"><a href="#">Tutoriais</a></li>
<li id="s3"><a href="#">Vitrine</a></li>
<li id="s4"><a href="#">Arquivos</a></li>
<li id="s5"><a href="#">Novo Menu</a></li>
</ul>
E no Submenu:
<ul id="s5_m">
<li><a href="#">Novo Submenu</a></li>
<li><a href="#">Novo Submenu</a></li>
<li><a href="#">Novo Submenu</a></li>
</ul>
Passado o código html, vamos ao CSS
Para o CSS precisaremos das imagens (que estão no pacote), utilizadas em nosso exemplo e do seguinte código:
body{
font-family:"Lucida Grande", "Lucida Sans Unicode", Verdana, Arial, Helvetica, sans-serif;
font-size:12px;
border:0; margin:0; padding:0;
}
ul, li{border:0; padding:0; margin:0; list-style:none;}
/* ----------- NAVIGATION----------- */
#top-navigation{
background:url(img/topnav-bg.gif) repeat-x;
width:auto;
height:48px;
margin:0 auto;
}
#navigation{
background:url(img/nav-bg.gif) repeat-x;
height:32px;
margin:0 auto;
width:auto;
}
#navigation .right_link{
float:right;
font-size:11px;
line-height:32px;
margin:0 10px;
}
#navigation ul{
height:32px;
line-height:32px;
}
#navigation ul li{
display:inline;
}
#navigation ul li a,
#navigation ul li a:visited {
background:url(img/line-a.gif) right no-repeat;
padding:0 20px;
display:block;
text-decoration:none;
float:left;
color:#000000;
font-weight:bold;
}
#navigation ul li a:hover{
color:#FFFFFF;
background:#A5A5A5;
}
/* ----------- SUBLINKS ----------- */
#sublinks{
width:auto;
margin:0 auto;
background:#888888 url(img/sublink.gif);
height:30px;
font-size:11px;
}
#sublinks ul{
height:32px;
line-height:31px;
}
#sublinks ul li{
display:inline;
}
#sublinks ul li a,
#sublinks ul li a:visited {
padding:0 20px;
display:block;
text-decoration:none;
float:left;
color:#FFFFFF;
}
#sublinks ul li a:hover{
text-decoration:underline;
}
.style1 {
font-size: 16;
font-weight: bold;
}
Note que tanto para a id=navigation e para id=sublinks há estilos diferentes.
Antes de irmos ao script vamos chamar o mootools usando o seguinte codígo, não entrarei em detalhes pois já falei sobre isto neste tutorial(etapa 1):
<script type="text/javascript" src="mootools.svn.js"></script>
O arquivos mootools.svn.js já vai incluso no pacote com os arquivos e as imagens.
E agora finalmente o script da animação, copei e colo logo depois do script anterior(acima):
<script type="text/javascript">
window.addEvent('load', function(){
$('sublinks').getElements('ul').setStyle('display', 'none');
$('s1_m').setStyle('display', 'block');
$$('#mymenu li').each(function(el){
el.getElement('a').addEvent('mouseover', function(subLinkId){
var layer = subLinkId+"_m";
$('sublinks').getElements('ul').setStyle('display', 'none');
$(layer).setStyle('display', 'block');
}.pass( el.id)
);
});
// --------------------------------------- //
// SHOW and HIDE Submenu with animation
var mySlide = new Fx.Slide('sublinks');
$('op1').addEvent('click', function(e){
var textLink = $('op1').innerHTML;
if(textLink=='Hide submenu'){
$('op1').innerHTML='Esconder Submenu';
} else {
$('op1').innerHTML='Mostrar Submenu';
}
e = new Event(e);
mySlide.toggle();
e.stop();
});
});
</script>
Depois de tudo feito nosso HTML ficará da seguinte forma(observe a sequência em que os codigos estão e faça igualmente):
<!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>Menu com Mootools</title>
<script type="text/javascript" src="mootools.svn.js"></script>
<script type="text/javascript">
window.addEvent('load', function(){
$('sublinks').getElements('ul').setStyle('display', 'none');
$('s1_m').setStyle('display', 'block');
$$('#mymenu li').each(function(el){
el.getElement('a').addEvent('mouseover', function(subLinkId){
var layer = subLinkId+"_m";
$('sublinks').getElements('ul').setStyle('display', 'none');
$(layer).setStyle('display', 'block');
}.pass( el.id)
);
});
// --------------------------------------- //
// SHOW and HIDE Submenu with animation
var mySlide = new Fx.Slide('sublinks');
$('op1').addEvent('click', function(e){
var textLink = $('op1').innerHTML;
if(textLink=='Hide submenu'){
$('op1').innerHTML='Esconder Submenu';
} else {
$('op1').innerHTML='Mostrar Submenu';
}
e = new Event(e);
mySlide.toggle();
e.stop();
});
});
</script>
<style type="text/css">
body{
font-family:"Lucida Grande", "Lucida Sans Unicode", Verdana, Arial, Helvetica, sans-serif;
font-size:12px;
border:0; margin:0; padding:0;
}
ul, li{border:0; padding:0; margin:0; list-style:none;}
/* ----------- NAVIGATION----------- */
#top-navigation{
background:url(img/topnav-bg.gif) repeat-x;
width:auto;
height:48px;
margin:0 auto;
}
#navigation{
background:url(img/nav-bg.gif) repeat-x;
height:32px;
margin:0 auto;
width:auto;
}
#navigation .right_link{
float:right;
font-size:11px;
line-height:32px;
margin:0 10px;
}
#navigation ul{
height:32px;
line-height:32px;
}
#navigation ul li{
display:inline;
}
#navigation ul li a,
#navigation ul li a:visited {
background:url(img/line-a.gif) right no-repeat;
padding:0 20px;
display:block;
text-decoration:none;
float:left;
color:#000000;
font-weight:bold;
}
#navigation ul li a:hover{
color:#FFFFFF;
background:#A5A5A5;
}
/* ----------- SUBLINKS ----------- */
#sublinks{
width:auto;
margin:0 auto;
background:#888888 url(img/sublink.gif);
height:30px;
font-size:11px;
}
#sublinks ul{
height:32px;
line-height:31px;
}
#sublinks ul li{
display:inline;
}
#sublinks ul li a,
#sublinks ul li a:visited {
padding:0 20px;
display:block;
text-decoration:none;
float:left;
color:#FFFFFF;
}
#sublinks ul li a:hover{
text-decoration:underline;
}
.style1 {
font-size: 16;
font-weight: bold;
}
</style>
</head>
<body>
<div id="navigation">
<a href="#" class="right_link" id="op1">Esconder submenu</a>
<ul id="mymenu">
<li id="s1"><a href="#">Home</a></li>
<li id="s2"><a href="#">Tutoriais</a></li>
<li id="s3"><a href="#">Vitrine</a></li>
<li id="s4"><a href="#">Arquivos</a></li>
</ul>
</div>
<div id="sublinks">
<ul id="s1_m">
<li><a href="#">Recentes</a></li>
<li><a href="#">Populares</a></li>
<li><a href="#">Os melhores...</a></li>
</ul>
<ul id="s2_m">
<li><a href="#">Ajax</a></li>
<li><a href="#">CSS</a></li>
<li><a href="#">Javascript</a></li>
<li><a href="#">Flash</a></li>
<li><a href="#">Photoshop</a></li>
</ul>
<ul id="s3_m">
<li><a href="#">CSS Websites</a></li>
<li><a href="#">Flash Websites</a></li>
<li><a href="#">Imagens</a></li>
</ul>
<ul id="s4_m">
<li><a href="#">Fontes</a></li>
<li><a href="#">Wallpapers</a></li>
<li><a href="#">Icones</a></li>
</ul>
</div>
Bom pessoal espero que tenham gostado e qualquer dúvida, sugestão , elogios…comentem!!!
Até a proxima.
Olha cara, ficou muito legal. Mas tipo, eu achei um erro nele.
Ali no javascript que tá na página, tem uma coisa:
if(textLink==’Hide Submenu’){
com isso, não funciona o negócio de mudar de esconder para mostrar nem de mostrar para esconder. Se tu colocar:
if(textLink==’Mostrar Submenu’){
funciona direitinho, testei aqui e deu certo. ![]()
opa vlw…isso vai ser bom pra galera…não uso mootools ![]()
de nada, eu sou um “observador atento” xD
© 2010 Mateus Souza – Webdesigner (Deus Seja Louvado) | Posts (RSS) | Comentários (RSS). | powered by WordPress e Linha Framework :P