Gibt es einen browserübergreifenden CSS-Wert für "width: -moz-fit-content;"?


84

Ich brauche einige Divs, um mittig positioniert zu sein und gleichzeitig ihre Inhaltsbreite anzupassen .

Ich mache es jetzt so:

.mydiv-centerer{

  text-align: center;

  .mydiv {
    background: none no-repeat scroll 0 0 rgba(1, 56, 110, 0.7);
    border-radius: 10px 10px 10px 10px;
    box-shadow: 0 0 5px #0099FF;
    color: white;
    margin: 10px auto;
    padding: 10px;
    text-align: justify;
    width: -moz-fit-content;
  }
}

Nun der letzte Befehl "width: -moz-fit-content;" ist genau das was ich brauche!

Das einzige Problem ist .. es funktioniert nur unter Firefox.

Ich habe es auch mit "display: inline-block" versucht. , aber ich brauche diese divs, um mich wie divs zu verhalten. Jeder nächste Div sollte nämlich unter dem vorherigen und nicht inline sein .

Kennen Sie eine mögliche browserübergreifende Lösung?


1
Versuchen Sie eine dieser Antworten: stackoverflow.com/questions/5803030/…
Matt H

3
Chome unterstützt fit-contentjetzt.
LinuxDisciple

Antworten:


161

Endlich habe ich es einfach behoben mit:

display: table;

4
Ich bin hierher gekommen, um genau nach den gleichen Begriffen Ihrer Frage zu suchen. Ich habe display: tableund margin: autozentrieren a form. Toll! : D
Leniel Maccaferri

Zusammen mit musste ich Leerzeichen verwenden: pre! Important;
Bimal Das

Respektiert einige Attribute nicht, z max-width: 100%.
Daniel

69

Mozillas MDN schlägt so etwas wie Folgendes vor [ Quelle ]:

 p {
  width: intrinsic;           /* Safari/WebKit uses a non-standard name */
  width: -moz-max-content;    /* Firefox/Gecko */
  width: -webkit-max-content; /* Chrome */
}

Können wir die Breite zweimal so angeben, wie Sie es für das Styling von p getan haben? wie Breite: intrinsisch; / * Safari / WebKit verwendet einen nicht standardmäßigen Namen / eine nicht standardmäßige Breite: -moz-max-content; / Firefox / Gecko * /
Sagar Bhosale

1
-moz-max-contentist nur äquivalent zu, -moz-fit-contentwährend das übergeordnete Element breiter ist. -moz-fit-contentpasst zum Inhalt und umschließt den Text, -moz-max-contenterstreckt sich jedoch außerhalb des übergeordneten Elements. Gleiches gilt für Chrome -webkit-max-contentund fit-content.
LinuxDisciple

Vergiss nicht hinzuzufügen width: max-content;.
Tobias Tengler

12

In einem ähnlichen Fall habe ich verwendet: white-space: nowrap;


1
Dies hat mein Problem mit dem Inhaltsüberlauf eines Dropdowns behoben. Vielen Dank!
Zach Leighton

7

Gibt es eine einzige Deklaration, die dies für Webkit, Gecko und Blink behebt? Nein. Es gibt jedoch eine browserübergreifende Lösung, bei der Eigenschaftswerte für mehrere Breiten angegeben werden, die der Konvention der einzelnen Layout-Engines entsprechen.

.mydiv {  
  ...
  width: intrinsic;           /* Safari/WebKit uses a non-standard name */
  width: -moz-max-content;    /* Firefox/Gecko */
  width: -webkit-max-content; /* Chrome */
  ...
}

Adaptiert von: MDN


2

Ich benutze diese:

.right {display:table; margin:-18px 0 0 auto;}
.center {display:table; margin:-18px auto 0 auto;}

2
width: intrinsic;           /* Safari/WebKit uses a non-standard name */
width: -moz-max-content;    /* Firefox/Gecko */
width: -webkit-max-content; /* Chrome */

-1

Warum nicht einige brs verwenden?

<div class="mydiv-centerer">
    <div class="mydiv">Some content</div><br />
    <div class="mydiv">More content than before</div><br />
    <div class="mydiv">Here is a lot of content that
                       I was not anticipating</div>    
</div>

CSS

.mydiv-centerer{
    text-align: center;
}

.mydiv{
    background: none no-repeat scroll 0 0 rgba(1, 56, 110, 0.7);
    border-radius: 10px 10px 10px 10px;
    box-shadow: 0 0 5px #0099FF;
    color: white;
    margin: 10px auto;
    padding: 10px;
    text-align: justify;
    display:inline-block;
}

Beispiel: http://jsfiddle.net/YZV25/


2
Vielen Dank, es funktioniert, aber es ist zu schwierig, den oberen und unteren Rand zwischen den Divs zu handhaben. Ich habe eine bessere Lösung gefunden, indem ich einfach display: table;statt display: inline-block;.
DuArme

-1

Unten arbeitete einer für mich sowohl in Chrom als auch in Firefox

div {
  max-width: max-content;
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.