Angenommen, 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 anzeigen. Das <ul>
hat eine Bildlaufleiste am unteren Rand, obwohl ich sichtbare und versteckte Werte für Überlauf x / y angegeben habe.
(beobachtet auf Chrome 11 und Oper (?))
Ich vermute, es muss eine w3c-Spezifikation geben oder etwas, das dies sagt, aber für mein Leben kann ich nicht herausfinden, warum.
UPDATE: - Ich habe einen Weg gefunden, das gleiche Ergebnis zu erzielen, indem ich ein weiteres Element hinzugefügt habe, das um das Feld gewickelt ist ul
. Hör zu.
overflow-x hidden;
es setze, wird leider die Schriftrolle entfernt, aber da ich die li-Elemente brauche, um den Rand unten auszublenden, ergibt sich der gewünschte gestrichelte Effekt. Ich verstehe nicht, warumoverflow-x: visible
eine Bildlaufleiste erstellt wird. Es sollte nicht afaik.overflow: hidden;
und einem Kind, das um das<ul>
Wesen herum eingefügt wirdoverflow: visible
.Antworten:
Nach einigen ernsthaften Suchen scheint ich die Antwort auf meine Frage gefunden zu haben:
von: http://www.brunildo.org/test/Overflowxy2.html
auch die W3C-Spezifikation sagt:
Kurzfassung:
Wenn Sie
visible
für entwederoverflow-x
oderoverflow-y
und etwas anderes alsvisible
für das andere verwenden, wird dervisible
Wert als interpretiertauto
.quelle
overflow-x:visible
währendoverflow-y:hidden
ohne Eltern / Kind - Hack? Hübsche Koje, IMO.overflow-y: visible
. Boo CSS!ein weiterer billiger Hack, der den Trick zu tun scheint:
style="padding-bottom: 250px; margin-bottom: -250px;"
auf dem Element, bei dem der vertikale Überlauf250
abgeschnitten wird , wobei so viele Pixel dargestellt werden, wie Sie für Ihr Dropdown usw. benötigen.quelle
position: relative
oder Verwenden von Wrappern nicht möglich war, war dies die einzige Lösung, die funktionierte, obwohl es auch erforderlich war,overflow-x: hidden
untergeordneten Elementen innerhalb des Elements, auf die ich setzen wollte, um den Hacky zu kompensieren, viele hässliche Ränder hinzuzufügen Polsterung. Das hat mich aber gerettet, also danke!Ich habe ursprünglich eine CSS-Methode gefunden, um dies zu umgehen, wenn ich das Cycle jQuery-Plugin verwende. Cycle verwendet JavaScript, um meine Folie
overflow: hidden
so einzustellen , dass beim Festlegen meiner Bilder aufwidth: 100%
die Bilder vertikal geschnitten aussehen würde. Daher habe ich sie gezwungen, sichtbar zu sein!important
und zu vermeiden, dass die Folienanimation aus dem Feld angezeigt wird, das ichoverflow: hidden
auf den Container div des eingestellt habe rutschen. Hoffe es funktioniert für dich.UPDATE - Neue Lösung:
Ursprüngliches Problem -> http://jsfiddle.net/xMddf/1/ (Auch wenn ich es benutze
overflow-y: visible
, wird es "automatisch" und tatsächlich "scrollen".)Die neue Lösung -> http://jsfiddle.net/xMddf/2/ (Ich habe eine Problemumgehung gefunden, bei der ein Wrapper- Div zum Anwenden
overflow-x
undoverflow-y
auf verschiedene DOM-Elemente verwendet wurde, wie James Khoury zum Problem der Kombinationvisible
undhidden
eines einzelnen DOM-Elements empfohlen hat .)quelle
overflow-x:visible;
undoverflow-y:hidden
. Nicht umgekehrt.overflow-x
und-y
: aktualisierte Geige anwenden .Ich bin auf dieses Problem gestoßen, als ich versucht habe, eine fest positionierte Seitenleiste mit vertikal scrollbarem Inhalt und verschachtelten absolut positionierten untergeordneten Elementen zu erstellen, die außerhalb der Seitenleistengrenzen angezeigt werden sollen .
Mein Ansatz bestand darin, separat anzuwenden:
overflow: visible
Eigenschaft für das Seitenleistenelementoverflow-y: auto
Eigenschaft für den inneren Wrapper der SeitenleisteBitte überprüfen Sie das folgende Beispiel oder einen Online-Codepen .
quelle
auto
statthidden
.position
Ich habe den
content+wrapper
Ansatz verwendet ... aber ich habe etwas anderes getan als bisher erwähnt: Ich habe sichergestellt, dass die Grenzen meines Wrappers NICHT mit den Grenzen des Inhalts in der Richtung übereinstimmen, in der ich sichtbar sein wollte .Wichtiger Hinweis: Es war leicht genug , um das zu bekommen
content+wrapper, same-bounds
Ansatz zur Arbeit auf der einen Browser oder eine andere in Abhängigkeit von verschiedenen CSS - Kombinationenposition
,overflow-*
usw ... aber ich konnte nie diesen Ansatz verwenden , um sie zu erhalten alle korrekt (Edge, Chrome, Safari,. ..).Aber als ich so etwas hatte wie:
... alle Browser waren glücklich.
quelle
Es gibt jetzt eine neue Möglichkeit, dieses Problem zu beheben: Wenn Sie die Position entfernen: Relativ aus dem Container, bei dem der Überlauf y sichtbar sein muss, können Sie den Überlauf y sichtbar und den Überlauf x ausgeblendet haben und umgekehrt (Überlauf haben). x sichtbar und Überlauf-y ausgeblendet, stellen Sie einfach sicher, dass der Container mit der sichtbaren Eigenschaft nicht relativ positioniert ist.
Weitere Informationen finden Sie in diesem Beitrag von CSS Tricks - es hat bei mir funktioniert: https://css-tricks.com/popping-hidden-overflow/
quelle