2017-12-08 5 views
1

Ich habe einige Suchen Immobilien zum Überlauf in CSS- prüfen dies unter Code-Schnipsel,Wie Überlauf-Eigenschaft in CSS tatsächlich funktioniert?

.outer-div { 
 
    display: flex; 
 
    position: relative; 
 
    height: 3.5em; 
 
    width: 20%; 
 
    border: 2px solid #000000a3; 
 
    margin-left: 300px; 
 
    align-items: center; 
 
    border: 1px solid green; 
 
} 
 
.inner-div { 
 
\t border: 1px solid blue; 
 
    position: absolute; 
 
    right: 1%; 
 
    font-size: 40px; 
 
}
<html> 
 
<head> 
 
</head> 
 
<body> 
 
    <div class = "outer-div"> 
 
    <div class = "inner-div">HelloWorld</div> 
 
    </div> 
 
</body>

In dem obigen Code-Schnipsel, die Innen div Behälter überläuft in die x-Richtung und nicht in y-Richtung. Aber wenn ich overflow: scroll hinzufüge, dann fügt es eine Bildlaufleiste in beide Richtungen hinzu (gut bis hier), aber Ich bin in der Lage, die Bildlaufleiste von Y-Richtung und nicht X-Richtung zu verwenden, trotz der Tatsache, dass der Inner-Div-Container ist in der x-Richtung übergelaufen. Wieso ist es so? prüft diese Schnipsel,

.outer-div { 
 
    display: flex; 
 
    position: relative; 
 
    height: 3.5em; 
 
    width: 20%; 
 
    border: 2px solid #000000a3; 
 
    margin-left: 300px; 
 
    align-items: center; 
 
    border: 1px solid green; 
 
    overflow: scroll; 
 
} 
 
.inner-div { 
 
\t border: 1px solid blue; 
 
    position: absolute; 
 
    right: 1%; 
 
    font-size: 40px; 
 
}
<html> 
 
<head> 
 
</head> 
 
<body> 
 
    <div class = "outer-div"> 
 
    <div class = "inner-div">HelloWorld</div> 
 
    </div> 
 
</body> 
 
</html>

Meine letzte Frage ist, wenn ich den Text mit einem Bindestrich trennen (-) oder einen Raum, , warum es in zwei Linien bricht und nicht weiter in der gleichen Zeile? Ich weiß, dass es wegen der Größe meines äußeren Behälters sein kann, aber Warum teilt es sich nicht, wenn ich Text ohne Leerzeichen gebe? prüfen unten,

.outer-div { 
 
    display: flex; 
 
    position: relative; 
 
    height: 3.5em; 
 
    width: 20%; 
 
    border: 2px solid #000000a3; 
 
    margin-left: 300px; 
 
    align-items: center; 
 
    border: 1px solid green; 
 
} 
 
.inner-div { 
 
\t border: 1px solid blue; 
 
    position: absolute; 
 
    right: 1%; 
 
    font-size: 40px; 
 
}
<html> 
 
<head> 
 
</head> 
 
<body> 
 
    <div class = "outer-div"> 
 
    <div class = "inner-div">Hello World</div> 
 
    </div> 
 
</body> 
 
</html>

Vielen Dank für Ihre Zeit und für Ihre Hilfe zu geben!

+0

Die absolute Position berücksichtigt nicht die Größe des Containers in Richtung der Anker (in Ihrem Fall "rechts"). – Yashas

Antwort

1

Die inner-div Klasse gibt die position: absolute Eigenschaft an die div. Dies macht das innere div unabhängig von der Größe des übergeordneten div und wird immer überlaufen, bis Sie explizit die Höhe und Breite des übergeordneten Containers angeben und auch das innere div zu verankern (mit right, top, left und bottom). Indem das Inner-Div nicht verankert wird, werden die Zwecke der absolut positionierten Elemente besiegt. Sie können die horizontale Bildlaufleiste wiederherstellen, indem Sie right entfernen, aber wahrscheinlich möchten Sie das nicht.

Kurz gesagt, absolut positionierte Elemente sind kein Teil des Flusses und leben in einer anderen Dimension (sie sind für das Elternteil nicht sichtbar).


So funktioniert die Umbruchfunktion. Wenn die Wörter einer Zeile nicht in die Breite passen, werden die Wörter in die nächste Zeile verschoben, nachdem sie auf einen Leerraum gestoßen sind. Wenn Sie nicht möchten, dass die Wörter nach einem Leerzeichen verzogen werden, sollten Sie entweder geschützte Leerzeichen (z. B. &nbsp;) oder white-space: nowrap; verwenden.

+0

Vielen Dank .... –

0

Die div hat keine horizontalen Bildlaufleisten, da sie absolut positioniert ist. Setzen Sie die Positionseigenschaft .inner-div auf etwas anderes als absolute oder fixed und Ihre div wird die gewünschte Bildlauffunktion haben.

Wie bei der Zeilenaufteilung, das ist wegen der automatischen Zeilenumbruch, die die Zeile am Ende eines Wortes oder Bindestrichs bricht.

Verwandte Themen