Div avec défilement horizontal uniquement


88

J'ai un DIV de largeur fixe contenant une table avec de nombreuses colonnes et je dois permettre à l'utilisateur de faire défiler le tableau horizontalement dans le DIV.

Cela doit fonctionner uniquement sur IE6 et IE7 (application client interne).

Les travaux suivants dans IE7:

overflow-x: scroll;

Quelqu'un peut-il vous aider avec une solution qui fonctionne également dans IE6?


La propriété overflow-x devrait fonctionner correctement dans IE6; vous pouvez avoir des facteurs de complication. Pouvez-vous publier un cas de test qui présente le problème?
Ben Blank

Il semble que mon problème soit ailleurs - mon DIV contenant déborde dans son conteneur.
Richard Ev

Réponses:


189

La solution est assez simple. Pour nous assurer que nous n'affectons pas la largeur des cellules du tableau, nous désactiverons les espaces blancs . Pour nous assurer d'avoir une barre de défilement horizontale, nous allons activer overflow-x . Et c'est à peu près tout:

.container {
    width: 30em;
    overflow-x: auto;
    white-space: nowrap;
}

Vous pouvez voir le résultat final ici , ou dans l'animation ci-dessous. Si la table détermine la hauteur de votre conteneur, vous ne devriez pas avoir besoin de définir explicitement overflow-ysur hidden. Mais comprenez que c'est aussi une option.

entrez la description de l'image ici


3
Je manquais le white-space: nowrap;. Fonctionne comme un charme!
AndreFeijo

4
Si une image vaut mille mots, un gif vaut un million.
HoldOffHunger

Tu es le champion, mon ami.
Spencer Williams

Et si j'ai également besoin d'un défilement vertical individuel sur chaque colonne et pas de défilement vertical sur le conteneur principal? J'essaie de faire cela avec white-space: nowrap;le conteneur principal et le réglage heightet overflow-y: scrollles colonnes individuelles, mais cela ne fonctionne pas.
Sachin

espace blanc: nowrap; Je tombe toujours dedans! merci réponse géniale!
talsibony

68

Je n'ai pas pu faire fonctionner la réponse sélectionnée, mais après quelques recherches , j'ai trouvé que le div de défilement horizontal doit avoir white-space: nowrapdans le css.

Voici le code de travail complet:

<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Something</title>
    <style type="text/css">
        #scrolly{
            width: 1000px;
            height: 190px;
            overflow: auto;
            overflow-y: hidden;
            margin: 0 auto;
            white-space: nowrap
        }

        img{
            width: 300px;
            height: 150px;
            margin: 20px 10px;
            display: inline;
        }
    </style>
</head>
<body>
    <div id='scrolly'>
        <img src='img/car.jpg'></img>
        <img src='img/car.jpg'></img>
        <img src='img/car.jpg'></img>
        <img src='img/car.jpg'></img>
        <img src='img/car.jpg'></img>
        <img src='img/car.jpg'></img>
    </div>
</body>
</html>

2
La suggestion de "white-space: nowrap" ici semble avoir été mélangée dans la bonne réponse. +1 pour l'amélioration de la réponse acceptée.
HoldOffHunger

21
overflow-x: scroll;
overflow-y: hidden;

ÉDITER:

Ça marche pour moi:

<div style='overflow-x:scroll;overflow-y:hidden;width:250px;height:200px'>
    <div style='width:400px;height:250px'></div>
</div>

17

Pour le défilement horizontal, gardez ces deux propriétés à l'esprit:

overflow-x:scroll;
white-space: nowrap;

Voir le lien de travail: cliquez sur moi

HTML

<p>overflow:scroll</p>
<div class="scroll">You can use the overflow property when you want to have better   control of the layout. The default value is visible.You can use the overflow property when you want     to have better control of the layout. The default value is visible.</div>

CSS

div.scroll
{
background-color:#00FFFF;
height:40px;
overflow-x:scroll;
white-space: nowrap;
}

3

essaye ça:

HTML:

<div class="container">
  <div class="item">1</div>
  <div class="item">2</div>
  <div class="item">3</div>
  <div class="item">4</div>
  <div class="item">5</div>
</div>

CSS:

.container {
  width: 200px;
  height: 100px;
  display: flex;
  overflow-x: auto;
}

.item {
  width: 100px;
  flex-shrink: 0;
  height: 100px;
}

L'espace blanc: nowrap; propriété ne vous laisse pas envelopper le texte. Voir juste ici pour un exemple: https://codepen.io/oezkany/pen/YoVgYK

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.