Max-Höhe auf border-Box div mit padding ist nicht gesetzt
Verwenden wir den Prozentsatz trick auf Polstern "Seitenverhältnis beibehalten", um ein div-Element, wenn die user-Skalen seinem Fenster. Wie diese:
.div {
background: red;
width: 80%;
margin: 0 auto 10px;
-webkit-box-sizing: border-box;
box-sizing: border-box;
padding-bottom: 20%;
}
Nun würden wir gerne in der Lage sein, eine maximale Höhe für das div. Denn die Höhe des div wird bestimmt durch das padding für die div-wir müssten das div zu sein border-Box. So weit So gut. Bei dem Versuch, eine min-height auf das div, das funktioniert. Die max-height auf das div jedoch nicht aus irgendeinem Grund arbeiten.
.div {
max-height: 60px;
}
Erstellte ich ein Turnschuh, Ihnen zu zeigen, was ich meine: http://jsfiddle.net/UxuEB/3/.
Getestet auf Chrome, FF und IE. Kann jemand mir sagen, was ich falsch mache oder warum das nicht funktioniert wie erwartet?
- Doppelte Frage. Doctype ist das problem -- du benötigst eine. Finden Sie in diesem Artikel stackoverflow.com/questions/520710/css-max-height-not-working
- Dieser doctype gesetzt ist. Sowohl in meiner Seite und in der Geige, so dass ich nicht denke, dass ist das problem.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eigentum
max-height
arbeitet auf derheight
des Elements und möchten Sie es verwenden, auf dieheight
undpadding-bottom
.Ich denke, Sie sind verwirrt durch die
box-sizing
Eigenschaft, dass es änderungen der element-Höhe der overal Höhe einschließlich der Polsterung, oben und unten (auch mir). Aber dies ist nicht der Fall, wie Sie sehen werden, in der jsFiddle-Beispiel.Beispiel:
100px
in der Höhe.max-height
eingestellt ist50px
(element ist nun50px
in der Höhe).padding-bottom
von100px
(mehr als die Höhe des Elements). Die Polsterung von100px
ist Hinzugefügt, um die Gesamthöhe des Elements, so dass es150px
.JsFiddle Beispiel: clicky
Merke ich, dass diese Antwort kommt unglaublich spät, um die Partei aber ich habe versucht, dies zu lösen, genau die gleiche Sache heute, und diese Frage ist das erste Ergebnis in Google. Landete ich die Lösung mit dem untenstehenden code so hoffentlich hilft jemand in der Zukunft.
Ersten, fügen Sie eine zusätzliche innere div:
Und legen Sie die Polsterung auf, die beim verstecken der überlauf auf dem äußeren div:
Dies natürlich vorausgesetzt, Sie sind gut versteckt, ein Teil der das innere element, wenn es überläuft. In meinem Fall war dies kein problem, weil das innere element ist nur ein leerer link-element, um das ganze anklickbar ist und das äußere element hat nur eine zentriert das Hintergrundbild und einen Rahmen gesetzt.
Sehen fiddle: http://jsfiddle.net/UxuEB/7/
overflow: hidden;
war meine fehlende Stück. Danke!Sich von Mike ' s Antwort, das gleiche kann erreicht werden mit einer einzigen DOM-element & ein pseudo-element, zB.
html:
css: