Ir para conteúdo
Fórum Script Brasil
  • 0

Slide Menu Horizontal


JackChaz

Pergunta

O problema é o seguinte:

Achei neste site: http://www.leigeber.com/2008/05/horizontal...accordion-menu/ um menu horizontal pronto, utilizando CSS e Javascript, não tive maiores problemas em adaptá-lo ao que necessitava, porém surgiu uma dúvida quanto ao modo como as "abas" abrem quando a página carrega.

Exemplo de como está no momento: menu

O que eu quero é que ao invés da primeira imagem aberta maior que as outras, logo que a página inicia, ficasse a última, que contém o "nome do site" e o link para entrar. Como nesta imagem >> Menu com a última aba maior

Não tenho a mínima experiência com javascript, então, gostaria de saber se é possível fazer o que quero aproveitando este mesmo exemplo. Bom, aguardo respostas, e como disse, sou leiga sobre o assunto, uma explicação mais detalhada me deixaria bem mais feliz ^_^

Segue abaixo os códigos

<!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=iso-8859-1" />
<title>Horizontal Slide Menu</title>
<link rel="stylesheet" type="text/css" href="slidemenu.css" />
&lt;script type="text/javascript" src="slidemenu.js"></script>
</head>
<body onload="slideMenu.build('sm',200,10,10,1)">
<div id="geral">
<ul id="sm" class="sm">
        <li><img src="images/ex1.gif"></li>
        <li><img src="images/ex1.gif"></li>
        <li><img src="images/ex1.gif"></li>
        <li><img src="images/ex1.gif"></li>
        <li><img src="images/ex1.gif"></li>
        <li><img src="images/ex1.gif"></li>
        <li><img src="images/ex2.jpg"></li>
    </ul>
</div>
</body>
</html>
CSS
* {margin:0; padding:0}
.sm {list-style:none; width:700px; height:246px; display:block; overflow:hidden}
.sm li {float:left; display:inline; overflow:hidden}
#geral {
width: 700px;
height: 400px;
top: 50%;
left: 50%;
margin-top: -123px;
margin-left: -350px;
position: absolute;
}
Javascript
var slideMenu=function(){
    var sp,st,t,m,sa,l,w,gw,ot;
    return{
        build:function(sm,sw,mt,s,sl,h){
            sp=s; st=sw; t=mt;
            m=document.getElementById(sm);
            sa=m.getElementsByTagName('li');
            l=sa.length; w=m.offsetWidth; gw=w/l;
            ot=Math.floor((w-st)/(l-1)); var i=0;
            for(i;i<l;i++){s=sa[i]; s.style.width=gw+'px'; this.timer(s)}
            if(sl!=null){m.timer=setInterval(function(){slideMenu.slide(sa[sl-1])},t)}
        },
        timer:function(s){
            s.onmouseover=function(){clearInterval(m.htimer);clearInterval(m.timer);m.timer=setInterval(function(){slideMenu.slide(s)},t)}
            s.onmouseout=function(){clearInterval(m.timer);clearInterval(m.htimer);m.htimer=setInterval(function(){slideMenu.slide(s,true)},t)}
        },
        slide:function(s,c){
            var cw=parseInt(s.style.width);
            if((cw<st && !c) || (cw>gw && c)){
                var owt=0; var i=0;
                for(i;i<l;i++){
                    if(sa[i]!=s){
                        var o,ow; var oi=0; o=sa[i]; ow=parseInt(o.style.width);
                        if(ow<gw && c){oi=Math.floor((gw-ow)/sp); oi=(oi>0)?oi:1; o.style.width=(ow+oi)+'px';
                        }else if(ow>ot && !c){oi=Math.floor((ow-ot)/sp); oi=(oi>0)?oi:1; o.style.width=(ow-oi)+'px'}
                        if(c){owt=owt+(ow+oi)}else{owt=owt+(ow-oi)}}}
                s.style.width=(w-owt)+'px';
            }else{clearInterval(m.timer);clearInterval(m.htimer)}
        }
    };
}();
--------------------------- PROBLEMA RESOLVIDO O erro estava aqui:
if(sl!=null){m.timer=setInterval(function(){slideMenu.slide(sa[sl-1])},t)}
        },
Solução: substituir por 6 o índice do último elemento
if(sl!=null){m.timer=setInterval(function(){slideMenu.slide(sa[6])},t)} 
        },
Código correto completo
var slideMenu=function(){
    var sp,st,t,m,sa,l,w,gw,ot;
    return{
        build:function(sm,sw,mt,s,sl,h){
            sp=s; st=sw; t=mt;
            m=document.getElementById(sm);
            sa=m.getElementsByTagName('li');
            l=sa.length; w=m.offsetWidth; gw=w/l;
            ot=Math.floor((w-st)/(l-1)); var i=0;
            for(i;i<l;i++){s=sa[i]; s.style.width=gw+'px'; this.timer(s)}
           if(sl!=null){m.timer=setInterval(function(){slideMenu.slide(sa[6])},t)} 
        },
        timer:function(s){
            s.onmouseover=function(){clearInterval(m.htimer);clearInterval(m.timer);m.timer=setInterval(function(){slideMenu.slide(s)},t)}
            s.onmouseout=function(){clearInterval(m.timer);clearInterval(m.htimer);m.htimer=setInterval(function(){slideMenu.slide(s,true)},t)}
        },
        slide:function(s,c){
            var cw=parseInt(s.style.width);
            if((cw<st && !c) || (cw>gw && c)){
                var owt=0; var i=0;
                for(i;i<l;i++){
                    if(sa[i]!=s){
                        var o,ow; var oi=0; o=sa[i]; ow=parseInt(o.style.width);
                        if(ow<gw && c){oi=Math.floor((gw-ow)/sp); oi=(oi>0)?oi:1; o.style.width=(ow+oi)+'px';
                        }else if(ow>ot && !c){oi=Math.floor((ow-ot)/sp); oi=(oi>0)?oi:1; o.style.width=(ow-oi)+'px'}
                        if(c){owt=owt+(ow+oi)}else{owt=owt+(ow-oi)}}}
                s.style.width=(w-owt)+'px';
            }else{clearInterval(m.timer);clearInterval(m.htimer)}
        }
    };
}();

Editado por JackChaz
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...