フィールドセットの幅をその中のコントロールと同じ幅にする方法はありますか?


80

フィールドセットのデフォルトはコンテナの幅100%のようです。フィールドセットをフィールドセット内の最も広いコントロールと同じ大きさにする方法はありますか?

回答:


128

を使用しdisplay: inline-blockますが、実際にインラインで表示されないようにするには、DIV内でラップする必要があります。Safariでテスト済み。

<style type="text/css">
    .fieldset-auto-width {
         display: inline-block;
    }
</style>
<div>
  <fieldset class="fieldset-auto-width">
      <legend>Blah</legend>
      ...
  </fieldset>
</div>

4
これは相対的なn00bの最も明確な答えであり、私の同じ問題を解決しました。ありがとう。
モーグは、モニカを2010

ええ、これは、気になるすべてのブラウザで機能する場合、私の答えよりも優れた/単純なアイデアです。
トム

3
display: inline-block;参考:iE6とIE7では動作しません。あなたがそれらを気にする必要がなければあなたを幸せにします。:)
Diemo 2011

IE8とFirefox10でうまく機能します!
Ed Bayiates 2012

divのブードゥーとは何ですか。必要なようですが、なぜですか?
スーパールミナリー2017年

14

fieldset {display:inline} または fieldset {display:inline-block}

2つのフィールドセットを垂直方向に分離する場合は<br/>、それらの間に1つを使用します。これは意味的に正しく、必要以上に難しいことではありません。


IE 11の場合、display:inlineは機能しましたが、display:inline-blockは機能しませんでした
Gabe Halsmer 2014年

8

あなたはそれを浮かせることができます、そしてそれはその中身と同じくらいの幅になるでしょう、しかしあなたはそれらの浮きを確実に取り除く必要があるでしょう。


1

これも機能します。 

fieldset {
  width:0px;
}

1
同じ行に表示されるフィールドセット内に複数の要素がある場合、これは機能しません。
Matthew Schinckel 2011

ブロック要素を使用してそれらをラップするか、nowrapと明示的なブレークの組み合わせを使用する場合は、確かにそうです。
dan.s.ward 2011

1

残念ながら、バージョン8までのInternet Explorerdisplay:inline-blockでもwidth:0px動作しません。私は、Internet Explorer 9を試していません。InternetExplorerを無視したいのですが、できません。

FirefoxとInternetExplorer8で機能する唯一のオプションはfloat:leftです。唯一のわずかな欠点はclear:both、フォームに続く要素で使用することを忘れないでください。もちろん、忘れると非常に明白になります;-)


0

いつでもCSSを使用してフィールドセットの幅を制限できます。これにより、内部のコントロールも制限されます。

selectコントロールの幅を制限しなければならないことがよくあります。そうしないと、オプションのテキストが非常に長くなり、完全に管理できなくなります。


しかし、フィールドセットが「自動サイズ設定」され、所定の幅にならないように動的にしたい
leora 2010

0
 fieldset {

    min-width: 0;

    max-width: 100%;

    width: 100%;
 }

3
説明を追加してください
Rarblack 2018

ティム・バーナーズ=リーでさえ、なぜこの作品が機能するのかを教えてくれませんでしたが、たわごとはうまくいきました。
lucasjohnson


-1

凡例スタイルを以下のようにオーバーライドして問題を修正しました

.ui-fieldset-legend
{
  font-size: 1.2em;
  font-weight: bold;
  display: inline-block;
  width: auto;`enter code here`
}

-2

Mihaiソリューションをさらに進めて、クロスブラウザを左揃えにします。

<TABLE>
  <TR>
    <TD>
      <FORM>
        <FIELDSET>
          ...
        </FIELDSET>
      </FORM>
    </TD>
  </TR>
</TABLE>

クロスブラウザは右揃え:

<TABLE>
  <TR>
    <TD WIDTH=100%></TD>
    <TD>
      <FORM>
        <FIELDSET>
          ...
        </FIELDSET>
      </FORM>
    </TD>
  </TR>
</TABLE>

2
レイアウトのこのかもしれない作業が、テーブルは通常考慮されていない良い練習... stackoverflow.com/questions/83073/...
StackExchangeどうザ・ヘック

1
5つのフィールドセットに対してこれを行うことを想像しますか?10?15 ??!やらないで!
テイラーブラウン

1
ここに来る新しい開発者のために。これをしないでください。必要なコードの10倍のコードを使用します。
スーパールミナリー2017年

-2
            <table style="position: relative; top: -0px; left: 0px;">
                <tr>
                    <td>
                        <div>   
                            <fieldset style="width:0px">
                                <legend>A legend</legend>
                                <br/>
                                <table cellspacing="0" align="left">
                                    <tbody>
                                        <tr>
                                            <td align='left' style="white-space: nowrap;">
                                            </td>
                                        </tr>
                                    </tbody>
                                </table>
                            </fieldset>
                        </div>
                    </td>
                </tr>
            </table>

-3

次のように、フィールドセットをテーブル内に配置することもできます。

<table>
    <tr>
       <td>
           <fieldset>
           .......
           </fieldset>
       </td>
    </tr>
</table>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.