Wie kann ich die <div> -Höhe automatisch an den Inhalt anpassen?

71

Ich habe eine, <div>die automatisch an den Inhalt angepasst werden muss. Wie kann ich das machen? Im Moment kommt mein Inhalt aus dem<div>

Die Klasse, die ich für das div verwendet habe, ist wie folgt

box-centerside  {
background:url("../images/greybox-center-bg1.jpg") repeat-x scroll center top transparent;
float:left;
height:100px;
width:260px;
}
OM Die Ewigkeit
quelle
1
Weder Größe: Auto funktioniert für mich noch
OM The Eternity

Antworten:

45

Versuchen Sie es mit dem folgenden Aufschlag, anstatt die Höhe direkt anzugeben:

.box-centerside {
  background: url("../images/greybox-center-bg1.jpg") repeat-x scroll center top transparent;
  float: left;
  min-height: 100px;
  width: 260px;
}
<div class="box-centerside">
  This is sample content<br>
  This is sample content<br>
  This is sample content<br>
  This is sample content<br>
  This is sample content<br>
  This is sample content<br>
  This is sample content<br>
  This is sample content<br>
  This is sample content<br>
  This is sample content<br>
  This is sample content<br>
  This is sample content<br>
</div>

Barrie Reader
quelle
15
Wenn jemand immer noch ie6 benutzt, ist es seine eigene Schuld, dass es kaputt ist ... << Ich mag es denken, aber ich muss diesen Müll immer noch unterstützen ... oder zumindest muss der Inhalt überleben ...
WalterJ89
6
Ich stimme Walterj89 zu, bin aber auch anderer Meinung - IE6 sollte mindestens so lange unterstützt werden, bis IE9 richtig herauskommt. Im Allgemeinen denke ich nicht, dass jemand IE unterstützen sollte.
Barrie Reader
1
Weder Größe: Auto funktioniert für mich noch Mindesthöhe: Ich arbeite für Mozilla Firefox, neueste Version
OM The Eternity
Dies funktioniert gut auf meinem FireFox 3.6 und IE8 - welche Version von FireFox verwenden Sie?
Barrie Reader
Ich weiß nicht warum, aber plötzlich gab es mir die Ausgabe, die ich brauchte .. Danke für deine Hilfe Knospe ...
OM The Eternity
82

Schreiben Sie einfach "min-height: XXX;" Und "Überlauf: versteckt;" & Sie werden aus diesem Problem heraus sein

min-height: 100px;
overflow: hidden;
Adi
quelle
Ordentlicher Trick, danke. Eine Nebenfrage. Würde dies immer noch funktionieren, wenn ich mit PHP oder AJAX mehr Inhalt auf die Seite bringe, wird die Seite dann erweitert, um der Höhe des Inhalts zu entsprechen?
Isuru
1
Ich habe diesen Job 10 Jahre lang gemacht und mich die ganze Zeit gefragt, ob ich das lösen / verhindern soll! Tausend Dank!
Oliver M Grech
Es ist mir ein Vergnügen, Freunde.
Adi
Ich würde gerne die Gründe für diese kontraintuitive Lösung verstehen. Wie rechtfertigt CSS overflow: hidden;es, mich mehr von etwas sehen zu lassen? (In meinem Fall schrumpft der enthaltende Block ohne ihn auf seine Höhe und der Inhalt wird unten abgeschnitten.)
Bob Stein
2
Auch das funktioniert bei mir nicht. Minimale Höhe und / oder Überlauf einstellen: versteckt funktioniert bei mir nicht. Das Div erweitert sich einfach nicht.
Anupam
19

Einfach schreiben:

min-height: xxx;
overflow: hidden;

dann divwird automatisch die Höhe des Inhalts genommen.

Winchester
quelle
14

Ich habe im DIV Folgendes verwendet, dessen Größe geändert werden muss:

overflow: hidden;
height: 1%;
Cleyton
quelle
9

Ich habe einige Möglichkeiten erreicht, um die Höhe für mein Projekt automatisch anzupassen, und ich denke, ich habe eine Lösung gefunden

[CSS]
    overflow: auto;
    overflow-x: hidden;
    overflow-y: hidden;

Dies kann an prime div(z. B. Warpper, aber nicht an bodyoder htmlbewirkt, dass die Seite nicht nach unten rollt ) in Ihrer CSS-Datei angehängt und von anderen untergeordneten Klassen geerbt und in dieses overflow: inherit;Attribut geschrieben werden.

Hinweis: Seltsam ist, dass meine Netbeans 7.2.1 IDE hervorheben, overflow: inherit;da Unexpected value token inheritaber alle modernen Browser dieses Attribut gut lesen.

Diese Lösung funktioniert sehr gut in

  • Firefox 18+
  • Chor 24+
  • dh 9+
  • Oper 12+

Ich teste es nicht auf früheren Versionen dieser Browser. Wenn jemand es überprüft, wird es schön sein.

Egel
quelle
3

benutze einfach folgendes

height:auto;
Salil
quelle
Eine gute Antwort heightbedeutet jedoch autostandardmäßig , es sei denn, es gibt eine widersprüchliche Deklaration höher im Baum .
Delan Azabani
Weder Größe: Auto funktioniert für mich noch
OM The Eternity
-ve das gibt mir vertikale Bildlaufleiste, die ich nicht will
OM The Eternity
3

Wenn Sie die Antwort noch nicht erhalten haben, wird Ihr "float: left" angezeigt. vermasselt was du willst. Erstellen Sie in Ihrem HTML-Code einen Container unter Ihren schließenden Tags, auf die Floating angewendet wurde. Geben Sie für diesen Container Folgendes als Ihren Stil an:

#container {
clear:both;
}

Getan.

Thomas
quelle
3

Nicht einstellen height. Verwenden Sie min-heightund max-heightstattdessen.

Delan Azabani
quelle
Weder Größe: Auto funktioniert für mich noch
OM The Eternity
3

Sie könnten versuchen, das div-Tag passt die Höhe automatisch an den Inhalt an:

height: fit-content;
Hoang
quelle
2

Stellen Sie einfach die Höhe auf auto ein, um das Problem zu beheben, da div Blockelemente sind, sodass sie sich auf die volle Breite und Höhe aller darin enthaltenen Elemente erstrecken. Wenn die Höhe auf "Automatisch" nicht funktioniert, fügen Sie einfach nicht die Höhe hinzu. Sie sollte angepasst werden und sicherstellen, dass das Div auch keine Höhe von seinem übergeordneten Element erbt.

Charmanter Prinz
quelle
2

Einfache Antwort ist zu verwenden overflow: hiddenundmin-height: x(any) px die Größe von div automatisch anzupassen.

Das height: autowird nicht funktionieren.

Mohammad Shahnawaz Alam
quelle
1

Stellen Sie eine Höhe auf den letzten Platzhalter div ein.

    <div class="row" style="height:30px;">
    <!--placeholder to make the whole block has valid auto height-->
Cullen SUN
quelle
1
Min- Height : (some Value) units  

---- Verwenden Sie nur diesen Fall von Elementen, bei denen Sie keinen Überlauf verwenden können, wie z. B. Tooltip

Andernfalls können Sie die Überlaufeigenschaft oder die Mindesthöhe je nach Bedarf verwenden.

Rudresh Ajgaonkar
quelle
1

Ich habe es gerade benutzt

overflow: hidden;

Und es hat bei mir richtig funktioniert. Diese Div hatte einige Float Lefted Divs.

Thejan Ranathunge
quelle
Hat auch für mich gearbeitet. Ich habe es mit Höhe kombiniert: auto; und Anzeige: Block;
Kintsukuroi
0

<div>sollte automatisch erweitert werden. Ich denke, dass das Problem ist, dass Sie behoben verwenden height:100px;, versuchen Sie es durch zu ersetzenmin-height:100px;

Tomasz Zieliński
quelle
Weder Größe: Auto funktioniert für mich noch
OM The Eternity
Wie Neurofluxation sagte, müssen Sie .oder #vorher haben box-centerside, um Klassen oder IDs abzugleichen . Im Moment stimmt Ihr Code mit Elementen des Knotennamens überein, box-centersidevon denen keines existiert.
Delan Azabani
Mir ist bekannt, dass dieser Code von Firebug kopiert wurde und daher nicht mit "." Angezeigt wird.
OM The Eternity
0

verwenden min-heightstattheight

Pawan
quelle
0

Ich habe mein Problem behoben, indem ich die Position des Elements innerhalb eines div auf relativ gesetzt habe.

MadeInDreams
quelle
0

Höhe: 59,55%; // Geben Sie zuerst Ihre Höhe an und lassen Sie dann den Überlauf automatisch überlaufen: auto;

Bilisuma Mekonnen
quelle
0

Für mich, nachdem ich alles ausprobiert hatte, funktionierte das folgende CSS:

float: left; width: 800px;

Versuchen Sie es in Chrome, indem Sie das Element überprüfen, bevor Sie es in die CSS-Datei einfügen.

Srihari Karanth
quelle
0

Die meisten davon sind großartige Antworten, aber ich bin der Meinung, dass sie einen unvermeidlichen Aspekt der Webentwicklung auslassen, nämlich das laufende Seiten-Update. Was ist, wenn Sie kommen und diesem Div Inhalte hinzufügen möchten? Sollten Sie immer kommen, um die Mindesthöhe des Div einzustellen? Nun, während ich versuchte, diese beiden Fragen zu beantworten, habe ich stattdessen den folgenden Code ausprobiert:

.box-centerside {
  background: url("../images/greybox-center-bg1.jpg") repeat-x scroll center top transparent;
  float: left;
  height: auto; /* adjusts height container element according to content */
  width: 260px;
}

Außerdem, nur für eine Art Bonus, wenn Sie Elemente um dieses Div mit Eigenschaften wie haben position: relative;, würden sie folglich über diesem Div stapeln, weil es eine Eigenschaft hat. float: left;Um ein solches Stapeln zu vermeiden, habe ich den folgenden Code versucht:

.parent {
  display: grid;
  grid-template-columns: repeat(3, 1fr); /* number depends on how many columns you want for a particular screen width. */
  height: auto; /* adjusts height container element according to content */
}

.box-centerside {
  background: url("../images/greybox-center-bg1.jpg") repeat-x scroll center top transparent;
  height: auto; /* adjusts height container element according to content */
  width: 100%;
}

.sibling 1 {
  /* Code here */
}

.sibling 2 {
  /* Code here */
}

Meiner Meinung nach passt diese Rastermethode besser zu einer reaktionsfähigen Website. Ansonsten gibt es viele Möglichkeiten, die gleichen Ziele zu erreichen. Einige der wichtigen Ziele der Programmierung sind jedoch, die Codierung einfacher und lesbarer sowie verständlicher zu machen.

Klem Lloyd Mwenya
quelle