2015-11-16 2 views
0

J'ai une bannière HTML ul qui a deux sous-barres li qui sont exposées en survol. Cependant, si vous le déplacez à partir d'une autre entrée principale, le survol est perdu.Style CSS de survol qui persiste après la souris

Je me demandais s'il y avait un moyen de maintenir facilement ce vol stationnaire après une souris. Ce n'est pas quelque chose que je peux jeter, je suis donc très intéressé à l'étendre pour pouvoir le garder même après une souris pendant quelques secondes, mais être capable de voir de nouvelles informations si je plante sur un élément li différent.

Voici mon jsFiddle avec une démonstration extrêmement simple avec mon HTML/CSS avec le strict minimum pour montrer la fonction: Je pense que JSFiddle

<body> 
<div class="nav-outer-repeat"> 
    <div class="nav"> 
     <div class="table"> 
      <ul class="select"> 
       <li style="color: white;"> <a><b>Hover Test</b></a> 

        <div class="select_sub"> 
         <ul class="sub"> 
          <li style="color: white;"><a href="">Test</a> 
          </li> 
          <li style="color: white;"><a href="">Test</a> 
          </li> 
          <li style="color: white;"><a href="">Test</a> 
          </li> 
         </ul> 
         <ul class="sub"> 
          <li style="color: white;"><a href="">Test</a> 
          </li> 
          <li style="color: white;"><a href="">Test</a> 
          </li> 
          <li style="color: white;"><a href="">Test</a> 
          </li> 
         </ul> 
        </div> 
       </li> 
      </ul> 
     </div> 
    </div> 
    <div class="clear"></div> 
    <div id="content-outer"> 
     <div id="content"></div> 
    </div> 

#content-outer { 
background: url(../../core/images/shared/content_repeat.jpg) repeat-x; 
} 
#content { 
    color: #333; 
    font-family: Arial, Helvetica, sans-serif; 
    font-size: 12px; 
    line-height: 18px; 
    margin: 0 auto 0 auto; 
    max-width: 100%; 
    min-width: 780px; 
    padding: 15px 0px 25px 0px; 
} 
.nav-outer-repeat { 
    background: url(../../core/images/shared/nav/repeat.jpg) repeat-x; 
    height: 77px; 
} 
.nav { 
    float: left; 
    font-family: Tahoma; 
    font-size: 13px; 
    height: 38px; 
    position: relative; 
    width: 1080px; 
    min-width: 600px; 
    z-index: 500; 
} 
.nav-divider { 
    background: url(../../core/images/shared/nav/divider.jpg) top no-repeat; 
    float: left; 
    height: 40px; 
    width: 15px; 
} 
.nav .select, 
.nav .current { 
    display: table-cell; 
    float: left; 
    list-style: none; 
    margin: 0 0px 0 0; 
    padding: 0; 
    white-space: nowrap; 
} 
.nav li { 
    float: left; 
    height: auto; 
    margin: 0; 
    padding: 0; 
} 
.nav .select a { 
    color: #fff; 
    display: block; 
    float: left; 
    height: 37px; 
    line-height: 35px; 
    padding: 0 0px 0 0px; 
    text-decoration: none; 
    white-space: nowrap; 
} 
.nav .select_sub { 
    display: none; 
    margin: 0 0 0 10px; 
} 
.nav .sub { 
    display: table; 
    list-style: none; 
    padding: 0; 
} 
.nav .select :hover .select_sub, 
.nav .current .show { 
    background: url(../../core/images/shared/nav/back_0.gif); 
    height: 75px; 
    display: block; 
    left: 0; 
    padding: 0; 
    position: absolute; 
    text-align: left; 
    top: 37px; 
    width: 1200px; 
    z-index: 100; 
    transition:0s 50s; 

} 
.nav .select :hover .sub li a, 
.nav .current .show .sub li a { 
    background: transparent; 
    border: 0; 
    color: #fff; 
    font-weight: bold; 
    font-size: 13px; 
    display: block; 
    float: left; 
    margin: 0; 
    padding: 0 10px 0 10px; 
    white-space: nowrap; 
} 
.clear { 
    clear: both; 
    font-size: 0px; 
    height: 0; 
    line-height: 0px; 
    margin: 0px; 
    padding: 0px; 
} 

Je suis plus intéressé dans un certain délai, cela peut rester à l'écran, mais toutes mes tentatives ont échoué. J'espère que quelqu'un peut me donner quelques conseils pour résoudre ce problème avec certains CSS que je pourrais manquer, ou peut-être un peu de jQuery?

+0

On dirait que cela a déjà été répondu ici: http://stackoverflow.com/questions/17100235/make-css-hover-state-remain-after-unhovering –

+0

Je n'ai tout simplement pas été capable de reproduire complètement cela avec transitions dans mes tests, il n'y a que quelques lignes CSS, même en passant la transition: 5s; après tout, je ne vois pas de différence. –

Répondre

1

Vous pouvez ajouter différentes transitions sur le vol stationnaire et normal. Assurez-vous de cacher votre menu avec une propriété animable! L'affichage ne fonctionnera pas et soyez prudent en essayant de passer par exemple de height: 0px; à height: auto;.

Voici une façon de le faire.

I've forked your fiddle. D'abord, je l'ai enlevé les :hover états et puis j'ajouté:

.nav .select_sub{ 
    display: block; 
} 
.nav .select:hover .select_sub, 
.nav .select:hover .sub li a{ 
    margin-top: 0%; 
    transition: all 0.2s; 
} 
.nav .select .select_sub, 
.nav .select .sub li a{ 
    margin-top: -100%; 
    transition: all 2s 3s; 
} 

Vous pouvez voir que j'ai caché votre menu avec une grande marge supérieure. Lorsque vous passez la souris sur .select, la marge devient nulle en 0.2s, ce qui devrait être assez rapide pour une bonne expérience utilisateur. Lorsque vous arrêtez le vol stationnaire, le sous-menu reste pendant trois secondes, puis remonte dix fois plus lentement.

+0

Wow, ça me semble très logique, ça marche aussi très bien avec les multiples éléments ul aussi avec le site complet.J'apprécie vraiment votre temps, et je vais peaufiner les minuteurs et voir comment tout cela fonctionne! –

0

Quelque chose comme ça .. mais bon j'ai essayé.

HTML:

 <div class="menu"> 
     <p>Hover</p> 
     <ul class="menu-content"> 
      <li> 
       <ul> 
        <li>Menu 1</li> 
        <li>Menu 1</li> 
        <li>Menu 1</li> 
        <li>Menu 1</li> 
       </ul> 
      </li> 
      <li> 
       <ul> 
        <li>Menu 2</li> 
        <li>Menu 2</li> 
        <li>Menu 2</li> 
        <li>Menu 2</li> 
       </ul> 
      </li> 
     </ul> 
    </div> 

CSS:

.menu { 
    width: 98%; 
    text-align: center; 
    padding: 20px 1%; 
    background-color: #eee; 
    overflow: hidden; 
} 

.menu p { 
    margin: 20px 0; 
    color: #096847; 
    font-size: 1.3em; 
} 

.menu:hover .menu-content { 
    margin-top: 0; 
} 

.menu-content { 
    margin-top: -100%; 
    overflow: hidden; 
    transition: all 1s ease-in; 
} 

.menu-content li { 
    list-style-type: none; 
} 

.menu-content > li > ul > li { 
    width: 25%; 
    float: left; 
    padding: 20px 0; 
    background-color: #2aa87c; 
    outline: 1px solid #ddd; 
    cursor: pointer; 
    color: #fff; 
} 

RÉSULTAT:

EXAMPLE

+0

Cela semble plutôt cool et je vais essayer de comprendre tout ce qu'il fait - merci! –