670 Stimmen

CSS overflow-x: visible; und overflow-y: hidden; verursachen Probleme mit der Bildlaufleiste

Nehmen wir an, Sie haben einen Stil und das Markup:

ul
{
  white-space: nowrap;
  overflow-x: visible;
  overflow-y: hidden;
/* added width so it would work in the snippet */
  width: 100px; 
}
li
{
  display: inline-block;
}

<div>
  <ul>
    <li>1</li> <li>2</li> <li>3</li>
    <li>4</li> <li>5</li> <li>6</li>
    <li>7</li> <li>8</li> <li>9</li>
    <li>1</li> <li>2</li> <li>3</li>
    <li>4</li> <li>5</li> <li>6</li>
    <li>7</li> <li>8</li> <li>9</li>
    <li>1</li> <li>2</li> <li>3</li>
    <li>4</li> <li>5</li> <li>6</li>
    <li>7</li> <li>8</li> <li>9</li>
  </ul>
</div>

Wenn Sie dies sehen. Die <ul> hat eine Bildlaufleiste am unteren Rand, obwohl ich sichtbare und verborgene Werte für Überlauf x/y angegeben habe.

(beobachtet auf Chrome 11 und Opera (?))

Ich vermute, dass es eine w3c-Spezifikation oder etwas anderes gibt, das dies vorschreibt, aber ich kann beim besten Willen nicht herausfinden, warum.

JSFiddle

UPDATE:- Ich habe eine Möglichkeit gefunden, dasselbe Ergebnis zu erzielen, indem ich ein weiteres Element um das ul . Sehen Sie sich das an.

0 Stimmen

Was ist Ihr gewünschtes Ergebnis? jsfiddle.net/Kyle_Sevenoaks/3xv6A/2

0 Stimmen

@kyle es sollte ein wenig mehr wie aussehen: jsfiddle.net/3xv6A/5 Wenn ich jedoch die overflow-x hidden; es entfernt den Bildlauf, aber wie ich die li-Elemente benötigen, um den Rahmen am unteren Rand zu verstecken, so dass es den gewünschten gestrichelten Effekt gibt. Ich weiß nicht uderstand warum overflow-x: visible erzeugt eine Bildlaufleiste. Es sollte nicht afaik.

0 Stimmen

@JamesKhoury können Sie Ihre Lösung ein wenig näher erläutern? Ich kann es nicht wirklich zum Laufen bringen

19voto

Victor Punkte 135

Ich stand vor dem gleichen Problem, die folgende Lösung funktionierte (Stile werden auf den übergeordneten Block angewendet)

overflow-y: visible;
overflow-x: clip;

18voto

Alexandra Punkte 393

Es gibt jetzt einen neuen Weg, dieses Problem zu lösen - wenn Sie die position: relative aus dem Container, in dem overflow-y sichtbar sein muss, können Sie overflow-y sichtbar und overflow-x ausgeblendet haben und umgekehrt (overflow-x sichtbar und overflow-y ausgeblendet haben, stellen Sie nur sicher, dass der Container mit der Eigenschaft visible nicht relativ positioniert ist).

In diesem Beitrag von CSS Tricks finden Sie weitere Einzelheiten - bei mir hat es funktioniert: https://css-tricks.com/popping-hidden-overflow/

10voto

dsdsdsdsd Punkte 2710

Ich habe den Ansatz Inhalt + Wrapper verwendet... sondern Ich habe etwas anderes gemacht als bisher erwähnt: Ich habe dafür gesorgt, dass die Grenzen meines Wrappers NICHT mit den Grenzen des Inhalts übereinstimmen in die Richtung, in der ich sichtbar sein wollte .

Wichtiger HINWEIS: Es war einfach genug, den Ansatz "Inhalt + Wrapper, gleiche Grenzen" auf dem einen oder anderen Browser in Abhängigkeit von verschiedenen CSS-Kombinationen zu realisieren position , overflow-* usw., aber ich konnte sie mit diesem Ansatz nie erreichen. alle korrekt (Edge, Chrome, Safari usw.).

Aber wenn ich etwas hatte wie:

#hack_wrapper {
    position:absolute; 
    width:100%; 
    height:100%; 
    overflow-x:hidden;
}

#content_wrapper {
    position:absolute; 
    width:100%; 
    height:15%; 
    overflow:visible;
}

<!-- #hack_wrapper div created solely for this purpose --> 
<div id="hack_wrapper">
    <div id="content_wrapper">         
          ... this is an example of some content with far too much horizontal content... like, way, way, way too much content.
    </div>
</div>

... alle Browser waren zufrieden.

-6voto

Lars Ejaas Punkte 99

Ein kleiner "Hack", der sehr gut funktioniert, wenn nur die erste Zeile sichtbar sein soll (aber trotzdem Überlauf benötigt wird):

Stellen Sie den Abstand sehr hoch ein, so dass Sie sicher sind, dass die zweite Reihe aus dem Bildschirm herausgeschoben wird - z. B:

gap: 10000rem;

Es ist wirklich hacky, aber funktioniert gut für so etwas wie ein Desktop-Nav mit Menüs, die überlaufen müssen ...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X