「width:-moz-fit-content;」のcssクロスブラウザ値はありますか?


85

いくつかのdivを中央に配置し、同時にコンテンツの幅合わせる必要があります。

私は今それをこのようにやっています:

.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;
  }
}

さて、最後のコマンド「width:-moz-fit-content;」あるまさに私が必要なもの!

唯一の問題は..Firefoxでのみ動作します。

「display:inline-block;」も試してみました、しかし、これらのdivがdivのように動作する必要があります。つまり、次のすべてのdivは、前のdivのにあり、インラインではありません。

可能なクロスブラウザソリューションを知っていますか?


1
次のいずれかの回答をお試しください: stackoverflow.com/questions/5803030/…–
Matt H

3
Chomeはfit-content現在サポートしています。
LinuxDisciple 2017年

回答:


167

ついに私はそれを単に使用して修正しました:

display: table;

4
私はあなたの質問とまったく同じ用語を探してここに来ました。私がやったdisplay: tablemargin: auto中央にform。すごい!:D
Leniel Maccaferri 2012

それに加えて、空白を使用する必要がありました:pre!important;
Bimal Das 2018

2
いくつかの属性を尊重しませんmax-width: 100%
ダニエル

71

MozillaのMDNは、次のようなものを提案しています[ソース]:

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

pのスタイリングの場合と同じように幅プロパティを2回指定できますか?幅のように:固有; / * Safari / WebKitは非標準の名前/幅を使用します:-moz-max-content; / Firefox / Gecko * /
Sagar Bhosale 2014

1
-moz-max-content-moz-fit-content親要素の幅が広い間のみと同等です。 -moz-fit-contentコンテンツに合わせてテキストを折り返します-moz-max-contentが、親要素の外側に拡張されます。Chrome-webkit-max-contentとに同じことが当てはまりますfit-content
LinuxDisciple 2017年

を追加することを忘れないでくださいwidth: max-content;
TobiasTengler19年

13

同様のケースで私は使用しました: white-space: nowrap;


1
これにより、ドロップダウンのコンテンツオーバーフローに関する問題が修正されました。ありがとう!
ザックレイトン

7

Webkit、Gecko、およびBlinkに対してこれを修正する単一の宣言はありますか?いいえ。ただし、各レイアウトエンジンの規則に対応する複数の幅プロパティ値を指定することにより、クロスブラウザソリューションがあります。

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

適応元:MDN


2

私はこれらを使用します:

.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

いくつかを使用してみません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;
}

例: http //jsfiddle.net/YZV25/


2
どうもありがとうございました、それは動作しますが、div間の上下のマージンを処理するのが難しすぎます。のdisplay: table;代わりにを使用するだけで、より良い解決策を見つけましたdisplay: inline-block;
duArme 2011年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.