2017-05-30 3 views
-1

Donc, j'essaie de montrer le défilement div en vol stationnaire sans changer la largeur. Jusqu'à présent, le code que j'ai identifié les problèmes suivants:Superposition de la barre de défilement lorsque vous passez la souris et maintenez la position

  • Lorsque la barre de défilement est retirée après vol stationnaire, il remonte vers le haut MISE À JOUR:Ceci est fixé paroverflow-y:hidden
  • Lorsque vous utilisez overlay tous les images sont au-dessus de la barre de défilement (toujours un problème)

Existe-t-il une meilleure façon de le faire ou un moyen de résoudre ces problèmes en CSS? Je suis ouvert à tous les plugins JS s'il existe une solution plus simple.

Exemple:

.test{ 
 
    height:300px; 
 
    max-height:100px; 
 
    width:300px; 
 
    max-width:310px; 
 
} 
 

 
.test:hover{ 
 
    overflow-y:overlay; 
 
}
<div class="test"> 
 
<img src="https://unsplash.it/300/300"> 
 
<img src="https://unsplash.it/300/300"> 
 
<img src="https://unsplash.it/300/300"> 
 
<img src="https://unsplash.it/300/300"> 
 
<img src="https://unsplash.it/300/300"> 
 
</div>

+0

Pour votre deuxième problème: '.test img { largeur: calc (100% - 16px); height: auto;} '- le 16px est une estimation de la largeur de la barre de défilement. Pas sûr de votre premier problème ... – sol

+1

vous n'avez même pas besoin de - la largeur, si la largeur de l'image est définie, il ne va pas le redimensionner – krisph

+0

Je ne sais pas pourquoi j'ai été -1! Un mystère .. De toute façon je pense que je suis presque là, pas sûr que toutes les solutions abordent encore l'image sur la barre de défilement sans garder tous les éléments moins d'une largeur ou d'une combinaison. – Wickey312

Répondre

-1

Je sais que ce n'est pas exactement ce que vous êtes après, mais j'ai ajouté juste pour montrer ce que je pense que vous recherchez.

<div id="outer"> 
    <div id="top"> 
     <p>Content Here</p> 
     <p>Content Here</p> 
     <p>Content Here</p> 
     <p>Content Here</p> 
     <p>Content Here</p> 
     <p>Content Here</p> 
     <p>Content Here</p> 
     <p>Content Here</p> 
     <p>Content Here</p> 
     <p>10th P Tag</p> 
     <p>Content Here</p> 
     <p>Content Here</p> 
     <p>Content Here</p> 
     <p>Content Here</p> 
     <p>Content Here</p> 
     <p>Content Here</p> 
     <p>Content Here</p> 
     <p>Content Here</p> 
     <p>Content Here</p> 
     <p>20th P Tag</p> 
     <p>Content Here</p> 
     <p>Content Here</p> 
     <p>Content Here</p> 
     <p>Content Here</p> 
     <p>Content Here</p> 
     <p>Content Here</p> 
     <p>Content Here</p> 
     <p>Content Here</p> 
     <p>Content Here</p> 
     <p>30th P Tag</p> 
    </div> 
    <div id="bottom"> 
     <p>Content Here</p> 
     <p>Content Here</p> 
     <p>Content Here</p> 
     <p>Content Here</p> 
     <p>Content Here</p> 
     <p>Content Here</p> 
     <p>Content Here</p> 
     <p>Content Here</p> 
     <p>Content Here</p> 
     <p>10th P Tag</p> 
     <p>Content Here</p> 
     <p>Content Here</p> 
     <p>Content Here</p> 
     <p>Content Here</p> 
     <p>Content Here</p> 
     <p>Content Here</p> 
     <p>Content Here</p> 
     <p>Content Here</p> 
     <p>Content Here</p> 
     <p>20th P Tag</p> 
     <p>Content Here</p> 
     <p>Content Here</p> 
     <p>Content Here</p> 
     <p>Content Here</p> 
     <p>Content Here</p> 
     <p>Content Here</p> 
     <p>Content Here</p> 
     <p>Content Here</p> 
     <p>Content Here</p> 
     <p>30th P Tag</p> 
    </div> 
    </div> 
    <script> 
     $('#bottom').on('scroll', function() { 
      $('#top').scrollTop($(this).scrollTop()); 
     }); 
    </script> 
    <style> 
     div { 
    position : absolute; 
    top  : 0; 

} 
#outer { 
    width : 50%; 
    height : 300px; 
    overflow : hidden; 
} 
#top { 
    overflow : hidden; 
    left  : 0; 
    background-color: blue; 
    width : 100%; 
    height : 300px; 
} 
#bottom { 
    width:100%; 
    height:100%; 
    opacity: 0.5; 
    left  : 0; 
    overflow : auto; 
    overflow-x : hidden; 
    overflow-y : hidden; 
} 
#bottom:hover{ 
    overflow-y:scroll; 
} 
</style> 
+0

Je voudrais éviter! Important car il est presque impossible de l'enlever, et si vous avez des images de taille différente? –

+0

Je vais le mettre à 100%, l'important est un peu redondant ici mais il fait comme la question décrit – krisph

-1

Donc je l'ai eu pour ne pas faire défiler vers le haut, avec hidden. Il semble que auto (en tant que débordement par défaut) le force à revenir en haut.

Utilisez donc hidden lorsqu'il n'est pas plané.

Encore un problème d'images sur la barre de défilement. (Vous avez besoin de récupérer la taille de la barre de défilement et d'ajouter au plus grand img et le mettre à la taille de la div.test)

.test { 
 
    height: 300px; 
 
    inline-size: max-content; 
 
} 
 

 
.test img { 
 
    margin-top: 5px; 
 
    margin-bottom: 5px; 
 
    margin-right:17px /*asuuming it is the normal size*/ 
 
} 
 

 
.test:hover { 
 
    overflow-y: overlay; 
 
} 
 

 
.test:not(:hover) { 
 
    overflow-y: hidden; 
 
}
<div class="test"> 
 
    <img src="https://unsplash.it/300/300"><br/> 
 
    <img src="https://unsplash.it/300/300" style="width:350px"><br/> 
 
    <img src="https://unsplash.it/300/300"><br/> 
 
    <img src="https://unsplash.it/300/300"><br/> 
 
    <img src="https://unsplash.it/300/300"> 
 
</div>

+0

Qu'est-ce que je manque, ça marche? –

+0

Hey Zekrom_Vale (je n'ai pas -1) .. Je ne crois pas que cela fixe des images superposées sur le défilement? – Wickey312