Potrzebuję niektórych elementów DIV, które muszą być wyśrodkowane i jednocześnie dopasować szerokość zawartości .
Teraz robię to w ten sposób:
.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;
}
}
Teraz ostatnie polecenie "width: -moz-fit-content;" jest dokładnie tym , czego potrzebuję!
Problem w tym, że… działa tylko na Firefoksie.
Próbowałem też z "display: inline-block;" , ale potrzebuję tych elementów div, aby zachowywały się jak elementy div. Mianowicie, każdy następny element div powinien znajdować się pod poprzednim , a nie w wierszu .
Czy znasz jakieś możliwe rozwiązanie dla różnych przeglądarek?
firefox
css
cross-browser
DuArme
źródło
źródło
fit-content
teraz.Odpowiedzi:
W końcu naprawiłem to po prostu używając:
display: table;
źródło
display: table
imargin: auto
wyśrodkowaćform
. Świetny! : Dmax-width: 100%
.MDN Mozilli sugeruje coś takiego [ źródło ]:
p { width: intrinsic; /* Safari/WebKit uses a non-standard name */ width: -moz-max-content; /* Firefox/Gecko */ width: -webkit-max-content; /* Chrome */ }
źródło
-moz-max-content
jest tylko odpowiednikiem,-moz-fit-content
gdy element nadrzędny jest szerszy.-moz-fit-content
dopasuje zawartość i zawinie tekst, ale-moz-max-content
będzie wychodzić poza element nadrzędny. To samo dotyczy Chrome-webkit-max-content
ifit-content
.width: max-content;
.W podobnym przypadku użyłem:
white-space: nowrap;
źródło
Czy istnieje jedna deklaracja, która naprawia ten problem dla Webkit, Gecko i Blink? Nie. Istnieje jednak rozwiązanie dla różnych przeglądarek, określające wiele wartości właściwości szerokości, które odpowiadają konwencjom każdego aparatu układu.
.mydiv { ... width: intrinsic; /* Safari/WebKit uses a non-standard name */ width: -moz-max-content; /* Firefox/Gecko */ width: -webkit-max-content; /* Chrome */ ... }
Na podstawie: MDN
źródło
Używam tych:
.right {display:table; margin:-18px 0 0 auto;} .center {display:table; margin:-18px auto 0 auto;}
źródło
width: intrinsic; /* Safari/WebKit uses a non-standard name */ width: -moz-max-content; /* Firefox/Gecko */ width: -webkit-max-content; /* Chrome */
źródło
Dlaczego nie użyć niektórych
br
?<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; }
Przykład: http://jsfiddle.net/YZV25/
źródło
display: table;
zamiastdisplay: inline-block;
.