Letzte Woche kam in den Kommentaren eines unserer Beiträge, Considerations for Styling a Modal, eine interessante Unterhaltung auf.
Sie möchten vielleicht die Breite eines Modals begrenzen, richtig? Das verleiht ihm auf größeren Bildschirmen diesen "modalen" Look. Nehmen wir an, 600 Pixel erscheinen richtig. Aber Sie möchten sicherstellen, dass es nicht aus seinem übergeordneten Element herausragt. Vermeiden Sie zum Beispiel, dass auf einem mobilen Bildschirm eine horizontale Scrollleiste entsteht.
Wie würden Sie das tun?
width: 600px; max-width: 100%;width: 100%; max-width: 600px;
Die Antwort: Es spielt eigentlich keine Rolle, es ist dasselbe.
Einige Reaktionen einiger Leute
- Die zweite ist „korrekter“
- Tatsächlich ein sehr großer Unterschied
- Die zweite wäre freundlicher für eine schmalere Elternbreite
- Die erste ist Müll
- Die zweite beschreibt das Verhalten logischer
Ich stimme zu, es ist irgendwie verwirrend. Sie scheinen unterschiedlich zu sein. Ein reduzierter Testfall ist immer ein guter Plan.

Das könnte eine nützliche Denkweise sein: Wenn das Element breiter gerendert würde, als max-width erlaubt, gewinnt max-width.
Szenarien
- Übergeordnetes Element ist 1000 Pixel breit
- Width sagt, dass das Element 600 Pixel breit sein soll. Das verstößt nicht gegen die max-width-Regel, also sind es 600 Pixel!
- Width sagt, dass das Element 1000 Pixel breit sein soll. Das verstößt gegen die max-width-Regel, daher wird das Element auf 600 Pixel gezwungen.
- Übergeordnetes Element ist 320 Pixel breit
- Width sagt, dass das Element 600 Pixel breit sein soll. Das verstößt gegen die max-width-Regel, die besagt, dass das Element höchstens 320 Pixel breit sein darf, also sind es 320 Pixel!
- Width sagt, dass das Element 320 Pixel breit sein soll. Das verstößt nicht gegen die max-width-Regel, also sind es 320 Pixel!
Ob das übergeordnete Element breiter oder schmaler ist, diese unterschiedlichen Regelwerke stimmen überein. (Es gibt jedoch einen Unterschied, wenn es sich um Flex-Elemente handelt.)
Ich würde eine Anmerkung hinzufügen: Wenn dasselbe auf zwei verschiedene Arten erreicht werden kann, dokumentieren Sie die Standardmethode für Ihre Codebasis und halten Sie sich daran. Einheitlichkeit übertrifft Flexibilität in diesen Situationen und reduziert zukünftige Fehler.
Das mache ich jeden Tag, aber ich habe es nie bemerkt. Ich denke wahrscheinlich an ‚max-width‘ als eine Einschränkung. Sei width:90%, aber nicht größer als 1200px (max-width).
Ich habe immer max-width: 700px; width: 100%; verwendet, weil es intuitiver erscheint, dann habe ich herausgefunden, warum Bilder in Firefox so seltsam reagieren und es scheint, dass Firefox Bilder nur mit max-width: 100%; und z.B. width: 700px; korrekt rendert.
Es scheint also einen Unterschied zu machen.
Und wie gesagt, die erste Methode scheint intuitiver zu sein. Trotzdem ist es schön, dass max-width: 100%; funktioniert, so dass man auf alten Websites, auf denen es viele feste Breiten gibt, versucht sein könnte, eine globale max-width: 100% Regel anzuwenden, um sie responsiv zu machen ;)
Ich finde, der letzte Satz dieses Artikels sollte mehr betont werden. Das ist zwar interessant zum Nachdenken, aber es ist schlechter Rat zu sagen, sie seien austauschbar.
Das ist ein schöner Beitrag. Danke!
Ich denke eher an "Mobile First", daher ist es für mich intuitiver, die Breite zuerst auf kleineren Auflösungen zu betrachten und sie für größere Auflösungen zu begrenzen. Daher würde ich mit
width: 100%;beginnen undmax-width: 600px;festlegen.Schön. Danke fürs Aufklären
Wie Sie oben schrieben, spielt es eigentlich keine Rolle, aber für mich fühlt sich die zweite Variante intuitiver an – "Behalte die Breite des Elements 100% mit einem Maximum von 600px". Trotzdem danke für diesen Artikel.
Schön gemacht.
Ich muss den meisten anderen Kommentatoren zustimmen – der 2. Punkt scheint der bessere Weg zu sein, um Ihren Code zu schreiben (und zu verstehen)!
Thoman
Solange es um Elemente mit display: block geht, benötigt das zweite Szenario nicht unbedingt die width: 100%.
Schreiben Sie weniger Code ;)
Das ist eine großartige Einführung, danke. Wenn Sie an einigen wirklich interessanten Breiten-Deklarationsinteraktionen interessiert sind, schauen Sie sich Rémi Parmentiers Fab Four-Technik für responsives Design ohne Media-Queries an: https://medium.freecodecamp.com/the-fab-four-technique-to-create-responsive-emails-without-media-queries-baf11fdfa848.
Normalerweise verwirrt mich so etwas
Danke für die Erklärung und das Video-Beispiel, es wird vielen Nerds helfen :)
Lev Boer weist auf eine Merkwürdigkeit bei Textareas hin, bei der das Vertauschen der Werte von max-width und width nicht zum gleichen Ergebnis führt