Pergunta

Estou tentando resolver isso há uma semana - tenho certeza que é simples, mas estou realmente lutando com isso!

Estou tentando alterar minha navegação para que os usuários cliquem nela para que ela apareça.Acredito que o padrão do Magento é que eles simplesmente passem o mouse, pelo menos é o que está acontecendo no meu.Alguém me disse que acredita que isso é afetado pelas classes CSS, o que acho que pode estar certo.É importante notar que minha versão móvel (quando visualizada em um desktop) permite cliques, mas a área de trabalho é exibida ao passar o mouse.

Aqui está meu CSS para nav-primary:

.nav-primary a {
color:#9a9a9a;
font-family: Arial, Helvetica, sans-serif;
font-size: 11px;
text-transform: uppercase;
}

.nav-primary a:hover {
color:#000;
font-family: Arial, Helvetica, sans-serif;
font-size: 11px;
text-transform: uppercase;
}

#header-account li a,
.nav-primary a.level0 {
width: 200px;
text-align: left;
color: #636363;
text-transform: uppercase;
line-height: 20px;
padding-top: 0;
padding-right: 15px;
padding-bottom: 0;
margin-left: 300px;
}

#header-account li:last-child a,
.nav-primary li.level0:last-child a.level0 {
border-bottom: 0;
}

.no-touch #header-account a:hover,
.no-touch .nav-primary a:hover {
text-decoration: none;
}

.nav-primary {
display: block;
padding-top: 30px;
}

.nav-primary a {
text-decoration: none;
position: relative;
display: block;
color: #636363;
line-height: 30px;
font-family: "Raleway", "Helvetica Neue", Verdana, Arial, sans-serif;
}

.nav-primary li {
position: relative;
}

.nav-primary li.level1 a {
margin-left: 350px;
}

.nav-primary .menu-active > ul.level0,
.nav-primary li.level0 li.sub-menu-active > ul {
 display: block;
 }

.nav-primary li.level0 > a {
text-transform: uppercase;
}

/* ============================================ *
* Small Viewports - Accordion Style Menu
* ============================================ */
.nav-primary a.level0,
.nav-primary a {
 line-height: 25px;
 }
 .nav-primary li.level0 ul {
 display: none;
 }
.nav-primary li.level0 li {
 padding: 0 0 0 25px;
 }
 .nav-primary li.level1 a {
 padding: 0 15px 0 25px;
 }
.nav-primary li.parent > a:after {
 content: '';
 position: absolute;
 width: 0;
 height: 0;
 display: block;
 border-top: 5px solid transparent;
 border-bottom: 5px solid transparent;
 border-left: 5px solid #cccccc;
 border-right: none;
 top: 50%;
 left: 10px;
 right: auto;
 margin-top: -5px;
 }
 .nav-primary li.parent.sub-menu-active > a:after,
 .nav-primary li.parent.menu-active > a:after {
 content: '';
 position: absolute;
 width: 0;
 height: 0;
 display: block;
 border-right: 5px solid transparent;
 border-left: 5px solid transparent;
 border-top: 5px solid #cccccc;
 border-bottom: none;
 top: 50%;
 left: 10px;
 right: auto;
 margin-top: -5px;
 }
.nav-primary li.menu-active > a,
.nav-primary li.sub-menu-active > a {
 color: #000;
 }
/* ============================================ *
 * Large Viewports - Dropdown Menu
 * ============================================ */

 .nav-primary li.menu-active > ul {
 display: block;
 }

Este é o que os faz aparecer ao passar o mouse ou simplesmente estar lá:

.nav-primary li.level0 ul { display: none; } 

mas não tenho certeza de como alterá-lo para passar do mouse para o clique.

ATUALIZAR:

Alterei o código em meu /app.js para o seguinte e parece estar funcionando!

mouseClickAction: function(event, target) {
    if(this.useSmallScreenBehavior()) {
        return; // don't do mouse enter functionality on smaller screens
    }

    $j(target).addClass('menu-active'); //show current menu
},

/**
 * On large screens, hide menu.
 * On small screens, do nothing.
 *
 * @param event
 * @param target
 */
mouseClickAction: function(event, target) {
    if(this.useSmallScreenBehavior()) {
        return; // don't do mouse leave functionality on smaller screens
    }

    $j(target).removeClass('menu-active'); //hide all menus
},

/**
 * On large screens, don't interfere so that browser will follow link.
 * On small screens, toggle menu visibility.
 *
 * @param event
 * @param target
 */
mouseClickAction: function(event, target) {
    {
        event.preventDefault(); //don't follow link
        this.toggleMenuVisibility(target); //instead, toggle visibility
    }
},

Basicamente agora faço o mesmo que a versão para tela pequena;onde os usuários clicam para exibir a próxima categoria, o que é ótimo!Eu tenho algumas categorias destinadas a exibir um bloco estático em vez de desviar para a página que agora não está funcionando.Alguma ideia de como ainda permitir a exibição de blocos estáticos?

Foi útil?

Solução

O seletor que você especificou está adicionando display:none que oculta seus menus suspensos.Isso pode continuar igual, o que você precisa mudar é a parte que os mostra.Parece que isso é feito por esse seletor ".nav-primário .Menu-ativo> ul.level0", que faz com que o item de menu seja exibido: Block novamente.O que você realmente precisa mudar é o JavaScript que adiciona a classe "menu-active" ao ul de nível superior no menu, no tema rwd que seria skin/frontend/rwd/default/js/app.js.

Outras dicas

Você está procurando o evento onClick, que normalmente é feito com jQuery e não com CSS.Existe uma solução alternativa de CSS envolvendo o uso de caixa de seleção.Veja o responda a esta pergunta.

O questionador nesta pergunta pode ter o que você procura.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a magento.stackexchange
scroll top