Einstellung der div-Breite auf 100% abzüglich einer bestimmten px-Menge

8

Ich habe die letzten Stunden im Internet gesucht, um eine Lösung dafür zu finden, aber ich konnte es nicht finden, also bin ich hier.

Ich brauche die Breite von div als 100% minus die Breite von left div .

Damit das div links davon die gleiche Breite (390 px) hat, passt das andere div seine Größe in Abhängigkeit von der Auflösung an. Ich habe die Lösung gefunden, wo es eine feste Breite div auf beiden Seiten hat, aber kann es nicht herausfinden.

    
Jay Mcquire 06.07.2011, 18:19
quelle

5 Antworten

10

Einfache Lösung:

%Vor%

CSS:

%Vor%

Dies ermöglicht Ihnen, eine feste Seitenleistenbreite und einen Inhaltsbereich mit voller Breite zu haben. Ich habe es oft benutzt und es funktioniert wie ein Zauber.

    
brenjt 06.07.2011, 19:01
quelle
8

Diese Art der Berechnung wird derzeit in CSS nicht unterstützt (sicherlich nicht in Chromium 12 / Ubuntu 11.04), aber in CSS 3 ist eine calc() -Funktion definiert, die diese Art von Verhalten mit einfachen mathematischen Methoden ermöglicht Funktionen:

%Vor%

(Das obige Beispiel stammt direkt aus dem W3.org .)

Meine eigenen (erschöpfenden) Tests zeigen:

%Vor%

Die obigen Ergebnisse wurden mit den genannten Browsern und einer css calc() -Demo erzielt, deren Code unten steht:

HTML:

%Vor%

CSS:

%Vor%

(Wenn jemand den obigen Test in den Browsern auf seiner Plattform ausführen und die Ergebnisse bereitstellen oder in dieser Antwort bearbeiten möchte, wäre das viel geschätzt.)

Wie bereits erwähnt, clairesuzy , in Kommentaren:

  

[Take] ein Blick auf caniuse funktioniert es in Firefox wenn Sie width: -moz-calc() verwenden, aber das ist darüber;)

Und in der Tat, in Firefox 5 (Ubuntu 11.04) funktioniert es (die anderen Hersteller-Präfixe scheinen jedoch nichts für Opera oder Webkit zu tun; leider): Überarbeitete, vom Hersteller vorgestellte Demo .

Referenz:

David Thomas 06.07.2011 18:51
quelle
4
%Vor%

verschiebe das linke div und mache einen neuen Blockformatierungskontext aus dem rechten div (Überlauf: versteckt ist eine Möglichkeit, dies zu tun), auf diese Weise wird der verbleibende Platz benötigt

Beispiel Fiddle

    
clairesuzy 06.07.2011 19:13
quelle
0

Es gibt wirklich keine Möglichkeit, dies mit geradlinigem CSS in Browsern anderer FireFox zu tun (siehe die MDN-Dokumente ). Sie könnten Javascript verwenden, um das gleiche zu tun, aber ich würde vorschlagen, Ihr Layout zu überdenken.

EDIT: eigentlich kann IE 9 auch damit umgehen, siehe MSDN-Dokumentation . Yay für IE?

    
Walter Cameron 06.07.2011 18:34
quelle
0

Vielleicht hängt das nicht direkt mit der Frage zusammen, aber ich hatte ein ähnliches Problem, um Elemente in einer Liste anzuordnen. Das Element mit fester Breite befindet sich rechts von jedem Element. Ich habe es geschafft, dies mit dem folgenden Ansatz zu lösen. Die Idee ist, ein positives padding-left mit einem negativen margin-left auszugleichen, während die Breite auf 100% gesetzt wird:

%Vor%     
Vladius 21.06.2014 11:51
quelle

Tags und Links