CSS div element - wie werden nur horizontale Bildlaufleisten angezeigt?

200

Ich habe einen Div-Container und habe seinen Stil wie folgt definiert:

div#tbl-container 
{
    width: 600px;   
    overflow: auto;    
    scrollbar-base-color:#ffeaff
}

Dies gibt mir automatisch sowohl horizontale als auch vertikale Bildlaufleisten, sobald ich meine Tabelle auffülle, die in diesem Div enthalten ist. Ich möchte nur, dass nur horizontale Bildlaufleisten automatisch angezeigt werden. Ich werde die Höhe der Tabelle programmgesteuert ändern.

Wie mache ich das?

Julius A.
quelle

Antworten:

277

Sie sollten keine horizontalen und vertikalen Bildlaufleisten erhalten, es sei denn, Sie machen den Inhalt groß genug, um sie zu benötigen.

Allerdings tun Sie dies normalerweise im IE aufgrund eines Fehlers. Überprüfen Sie in anderen Browsern (Firefox usw.), ob tatsächlich nur der IE dies tut.

IE6-7 (unter anderen Browsern) unterstützt die vorgeschlagene CSS3-Erweiterung zum unabhängigen Festlegen von Bildlaufleisten, mit der Sie die vertikale Bildlaufleiste unterdrücken können:

overflow: auto;
overflow-y: hidden;

Möglicherweise müssen Sie auch für IE8 hinzufügen:

-ms-overflow-y: hidden;

Microsoft droht, alle Eigenschaften vor dem CR-Standard im IE8-Standardmodus in ein eigenes Feld "-ms" zu verschieben. (Dies hätte Sinn gemacht, wenn sie es immer so gemacht hätten, ist aber jetzt eher eine Unannehmlichkeit für alle.)

Andererseits ist es durchaus möglich, dass IE8 den Fehler trotzdem behoben hat.

Bobince
quelle
Oh Gott, du hast meinen Tag gerettet! Obwohl ich die ie-8-Spezifikation nicht ausprobiert habe. Es ist jetzt OK FF & IE-7. Das ist alles was ich brauche. Danke noch einmal !
Satya Kalluri
76

Ich musste auch white-space: nowrap;den Stil erweitern, sonst würden Elemente in den Bereich eingefügt, in den wir nicht mehr scrollen können.

Hoby
quelle
8
white-space: nowrap;ist der Schlüssel, ohne ihn werden Ihre Elemente gestapelt / verpackt.
Ricardo Zea
Leerraum: Nowrap scheint auf Firefox-Safari oder Chrome nicht zu funktionieren, selbst mit den Bildern, die ich in der Div-Anzeige habe: Inline oder als Blöcke
27

Diese Lösung ist ohne Höhe / Breite - Spezifikation für den Vater div so wird es sein , als Reaktion auf Änderungen der Fenstergröße und nützlichsten Ursache horizontale Scrollbalken erscheinen nur , wenn nötig.

.container{
    padding:20px;
    border:dotted 1px;
    white-space:nowrap;
    overflow-x:auto;
}

.box{
    width:100px;
    height:180px;
    background-color: red;
    margin:10px;
    display:inline-block
}

Schauen Sie sich DEMO an

Marco Allori
quelle
25

Um beides zu zeigen:

<div style="height:250px; width:550px; overflow-x:scroll ; overflow-y: scroll; padding-bottom:10px;">      </div>

X-Achse ausblenden:

<div style="height:250px; width:550px; overflow-x:hidden; overflow-y: scroll; padding-bottom:10px;">      </div>

Y-Achse ausblenden:

<div style="height:250px; width:550px; overflow-x:scroll ; overflow-y: hidden; padding-bottom:10px;">      </div>
Dinesh Appuhamy
quelle
14

Sie können es auch erstellen overflow: autound auf diese Weise eine maximale feste Höhe und Breite festlegen. Wenn der Text oder was auch immer darin überläuft, wird nur die erforderliche Bildlaufleiste angezeigt

Tsundoku
quelle
5

Ich benutze die CSS-Eigenschaften: 1) " overflow-x: auto"; 2) " overflow-y: hidden"; 3) " white-space: nowrap";

Vergessen Sie nicht, eine Breite sowohl für den Container als auch für die inneren DIVS-Komponenten festzulegen. Die Eigenschaft "white-space: nowrap" ermöglicht es dem inneren DIVS, nicht in eine andere Zeile zu fallen.

Unter Berücksichtigung des folgenden HTML:

<div class="container"> 
  <div class="inner-1"></div>
  <div class="inner-2"></div>
  <div class="inner-3"></div>
</div>

Ich verwende das folgende CSS, um nur einen horizontalen Bildlauf durchzuführen:

.container {
  height: 80px;
  width: 600px;
  overflow-x: auto;
  overflow-y: hidden; 
  white-space: nowrap;
}
.inner-1,.inner-2,.inner-3 {
  height: 60px;
  max-width: 250px;
 display: inline-block; /* this should fix it */
}

Geige: https://jsfiddle.net/qrjh93x8/ (funktioniert nicht mit dem obigen Code)

Amélie Medem
quelle
Ich habe Leerzeichen hinzugefügt, aber meins funktioniert nicht: jsfiddle.net/jjq4xgz5/1 . Vielen Dank.
Si8
3

Verwenden Sie Folgendes

<div style="max-width:980px; overflow-x: scroll; white-space: nowrap;">
<table border="1" style="cellpadding:0; cellspacing:0; border:0; width=:100%;" >
Anudeep Sharma
quelle
1
.box-author-txt {width:596px; float:left; padding:5px 0px 10px 10px;  border:1px #dddddd solid; -moz-border-radius: 0 0 5px 5px; -webkit-border-radius: 0 0 5px 5px; -o-border-radius: 0 0 5px 5px; border-radius: 0 0 5px 5px; overflow-x: scroll; white-space: nowrap; overflow-y: hidden;}


.box-author-txt ul{ vertical-align:top; height:auto; display: inline-block; white-space: nowrap; margin:0 9px 0 0; padding:0px;}
.box-author-txt ul li{ list-style-type:none;  width:140px; }
Joginder
quelle
3
Bitte erläutern Sie Ihre Antwort.
hims056
1

CSS3 hat die overflow-xEigenschaft, aber ich würde keine große Unterstützung dafür erwarten. In CSS2 alles , was Sie tun können , eine allgemeine gesetzte scrollPolitik und arbeiten Sie widthsund heightsnicht zu verwirren sie.

Gareth
quelle
0

Wir sollten overflow: autoeine Bildlaufleiste aktivieren und ausblenden, die wir nicht für die Arbeit an nicht unterstützten CSS3-Browsern verwenden. Sehen Sie sich diesen CSS-Überlauf an. XME.im

Gast
quelle