<td>の固定幅を設定する方法は?


514

単純なスキーム:

  <tr class="something">
    <td>A</td>
    <td>B</td>
    <td>C</td>
    <td>D</td>
  </tr>

の固定幅を設定する必要があり<td>ます。私はもう試した:

tr.something {
  td {
    width: 90px;
  }
}

また

td.something {
  width: 90px;
}

ために

<td class="something">B</td>

そして、

<td style="width: 90px;">B</td>

ただし、幅は<td>同じです。


1
私は試してみましたがうまくいきました-多分問題はどこか違うのです。Firebugはその要素について何を伝えますか?
ロックボット2013

このサイトでは、男性がこのトピックについて動画で語っています。それはとても明確です。
egemen 2014年

style="width: 1% !important;"幅を列の最長ワードと同じくらい狭くするために使用します。これは、最初のID /#列に役立ちます。chrome(desktop&mobile)、opera(desktop)、IE(desktop)、edge(desktop)、firefox(desktop)でテスト済み
vinsa

回答:


1084

Bootstrap 4.0の場合:

Bootstrap 4.0.0では、col-*クラスを確実に使用できません(Firefoxでは機能しますが、Chromeでは機能しません)。OhadRの回答を使用する必要があります

<tr>
  <th style="width: 16.66%">Col 1</th>
  <th style="width: 25%">Col 2</th>
  <th style="width: 50%">Col 4</th>
  <th style="width:  8.33%">Col 5</th>
</tr>

Bootstrap 3.0の場合:

Twitterブートストラップ3を使用する場合:class="col-md-*"*は幅の列数です。

<tr class="something">
    <td class="col-md-2">A</td>
    <td class="col-md-3">B</td>
    <td class="col-md-6">C</td>
    <td class="col-md-1">D</td>
</tr>

Bootstrap 2.0の場合:

Twitterブートストラップ2を使用する場合:class="span*"*は幅の列数です。

<tr class="something">
    <td class="span2">A</td>
    <td class="span3">B</td>
    <td class="span6">C</td>
    <td class="span1">D</td>
</tr>

** <th>要素がある場合は、<td>要素ではなく、そこで幅を設定します。


79
12列を超える場合はどうなりますか?
ClearCloud8 2014

33
これは、各<th>タグの<head>でのみ適用でき、すべての行が一致します
Diego Fernando Murillo Valenci

7
Bootstrapウェブサイトにこれに関するドキュメントはありますか?
Luis Perez

26
これは機能しますが、これらのcol- *クラスはこの方法で使用するためのものではないため、ブートストラップサイトにはありません。これらは、レスポンシブブートストラップグリッドで使用するためのものです。これらの機能が気に入った場合は、CSSを確認してコピーし、独自のCSSを作成してください。
DustinA 2015

1
また、リーチ行のクラスを設定する代わりに、ヘッダー<th>に一度設定するだけで、残りは自動的に処理されます。
dopplesoldner 2015年

133

私は同じ問題を抱えていました、私はテーブルを修正してから私のtd幅を指定しました。あなたが持っているなら、あなたもそれらを行うことができます。

table {
    table-layout: fixed;
    word-wrap: break-word;
}

テンプレート:

<td style="width:10%">content</td>

レイアウトの構成にはCSSを使用してください。



これはすばらしいですが、追加として、スタイルを直接適用する代わりにタグでa classを使用しますtd
Ramses

1
これは、like の幅を増やすのに十分なほどうまく機能し ますth<th style="width: 25%;"></th>これは他の列の幅に影響します
shaijut

ありがとうございました!Bootstrap 3のcol-md-xクラスを設定しましたが、機能しませんでした。テーブルレイアウトを「固定」に設定すると、問題が解決します。
maurisrx 2018年

これは機能します。キーはtable-layout: fixedです。BS4で構築された多くのテンプレートは、テーブルを含むすべてにflexを適用するため、これが必要です。
Ivan

73

col-md-*クラスをtd行のそれぞれに適用する代わりに、クラスを作成colgroupしてcolタグに適用できます。

    <table class="table table-striped">
        <colgroup>
            <col class="col-md-4">
            <col class="col-md-7">
        </colgroup>
        <tbody>
        <tr>
            <td>Title</td>
            <td>Long Value</td>
        </tr>
        </tbody>
    </table>

デモはこちら


1
私はこれを好みますが、私のケースには影響しないようです、列幅はcol-md- *によって拡張されません
Osify

ところで、私はこのソリューションが好きです。なぜcol-lg- *、col-sm- *、またはcol-xs- *ではなくcol-md- *クラスを使用する必要があるのですか?
LucioB 2016

1
@LucioBは、どちらでも使用でき、列ごとにいくつか使用することもできます(例で<col class="col-md-4 col-sm-6">は、中程度の画面サイズでは33%、小さな画面サイズでは50%の幅になります)
VDarricau

1
ColgroupがChromeで動作していません。(Bootstrap v4.1)。ブラウザ全体で統一するために、<td>要素には%幅を使用します。
AnkitK 2018

57

うまくいけば、これは誰かを助けるでしょう:

<table class="table">
  <thead>
    <tr>
      <th style="width: 30%">Col 1</th>
      <th style="width: 20%">Col 2</th>
      <th style="width: 10%">Col 3</th>
      <th style="width: 30%">Col 4</th>
      <th style="width: 10%">Col 5</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Val 1</td>
      <td>Val 2</td>
      <td>Val 3</td>
      <td>Val 4</td>
      <td>Val 5</td>
    </tr>
  </tbody>
</table>

https://github.com/twbs/bootstrap/issues/863


1
使用する最も簡単な答え
GavinBelson

54

<table class="table">テーブルで使用している場合、Bootstrapのテーブルクラスはテーブルに100%の幅を追加します。幅を自動に変更する必要があります。

また、テーブルの最初の行がヘッダー行である場合、幅をtdではなくthに追加する必要がある場合があります。


1
Bootstrap 3の追加機能として、現在のようにnowrapであるため、のwhite-spaceプロパティthを通常に設定する必要があります。このようなヘッダーは壊れないためです。
Sammaye

41

私の場合、セルまたはのmin-width: 100px代わりにwidth: 100pxを使用してその問題を修正することができました。thtd

.table td, .table th {
    min-width: 100px;
}

13
これは私の正気の残りを保存したかもしれません。
ジョエル

はい!これにより、レスポンシブテーブルの列の最小幅が設定されます。ありがとう。
O.ジョーンズ

1
これは回答した​​質問よりもうまくいきました、ありがとう!
イスラエル2018年

38

Bootstrap 4の場合は、クラスヘルパーを使用するだけです。

<table class="table">
  <thead>
    <tr>
      <td class="w-25">Col 1</td>
      <td class="w-25">Col 2</td>
      <td class="w-25">Col 3</td>
      <td class="w-25">Col 4</td>
    </tr>
  </thead>
  <tbody>
    <tr>
      ...

5
これは私のユースケースに適しています。ありがとう!
tonny

16
w- *オプションは次のとおりである.w-25, .w-50, .w-75, .w-100, .w-autoことに注意してください。他に何かw-10が必要な場合は.w-10 { width: 10% !important; }、ローカライズされたcssファイルに追加する必要があります。
Abela 2018

10

これを試して -

<style>
 table { table-layout: fixed; }
 table th, table td { overflow: hidden; }
</style>

3
これは、他のすべての答えからうまくいく唯一のものです。
0bserver07 2016

私も追加text-overflow: ellipsisしてくださいカットオフテキストが明確であることを確認するために
weeksdevは

@ Observer07確かに
TheRandomGuy 2017年

9

ブートストラップ4.0

Bootstrap 4.0では、クラスd-flexを追加してテーブル行をフレックスボックスとして宣言する必要があります。また、Bootstrapがビューポートから自動的に派生できるように、xs、md、サフィックスをドロップする必要があります。

したがって、次のようになります。

<table class="table">
    <thead>
        <tr class="d-flex">
            <th class="col-2"> Student No. </th>
            <th class="col-7"> Description </th>
            <th class="col-3"> Amount </th>
        </tr>
    </thead>

    <tbody>
        <tr class="d-flex">
            <td class="col-2">test</td>
            <td class="col-7">Name here</td>
            <td class="col-3">Amount Here </td>
        </tr>
</table>

これが他の誰かに役立つことを願っています!

乾杯!


7

この組み合わせのソリューションは私のために働きました、私は同じ幅の列が欲しかったです

<style type="text/css">

    table {
        table-layout: fixed;
        word-wrap: break-word;
    }

        table th, table td {
            overflow: hidden;
        }

</style>

結果:-

ここに画像の説明を入力してください


3

問題があった場所[OK]を、私はちょうど考え出した-ブートストラップにデフォルト値として設定されるwidthためselectの要素、したがって、解決策は以下のとおりです。

tr. something {
  td {
    select {
      width: 90px;
    }
  }
}

他には何もうまくいきません。


2

ページhtmlのコンテキストやCSSの残りの部分がないと判断が難しい。CSSルールがtd要素に影響を与えない理由はたくさんあります。

次のようなより具体的なCSSセレクターを試しましたか?

tr.somethingontrlevel td.something {
  width: 90px;
}

これは、ブートストラップcssからのより具体的なルールによってCSSが上書きされるのを防ぐためです。

(ちなみに、style属性を使用したインラインcssサンプルでは、​​幅のスペルを間違えています。これが、失敗した理由を説明している可能性があります。)


2

私はしばらくの間この問題に取り組んできました。そのため、誰かが私と同じ愚かな間違いをした場合に備えて... スタイル<td>の要素をwhite-space:pre適用しました。これにより、私のtable / tr / tdトリックはすべて破棄されました。そのスタイルを削除すると、突然、すべてのテキストが内で適切にフォーマットされましたtd

したがって、常にメインコンテナ(tableまたはのようなtd)をチェックしますが、美しいコードをより深いところにキャンセルしないかどうかも常にチェックします:)


1

Bootstrap 4で「tr」に行の代わりにd-flexを使用する

問題は、「行」クラスは親コンテナよりも幅が広く、問題が発生することです。

<table class="table">
  <tbody>
    <tr class="d-flex">
      <td class="col-sm-8">Hello</td>
      <td class="col-sm-4">World</td>
    </tr>
    <tr class="d-flex">
      <td class="col-sm-8">8 columns</td>
      <td class="col-sm-4">4 columns</td>
    </tr>
  </tbody>
</table>


「tr」ではなく「row」を意味しました。行クラスには両端に樋が付いています。または、「行」クラスを使用したくない場合は、「溝なし」クラスを追加してください。
Usman Anwar

1

bootstarp 4で使用することができますrowし、col-*テーブルに、私は以下のようにそれを使用します

<table class="table">
    <thead>
        <tr class="row">
            <th class="col-sm-3">3 row</th>
            <th class="col-sm-4">4 row</th>
            <th class="col-sm-5">5 row</th>
        </tr>
    </thead>
    <tbody>
        <tr class="row">
            <td class="col-sm-3">some text</td>
            <td class="col-sm-4">some text</td>
            <td class="col-sm-5">some text</td>
        </tr>
    </tbody>
</table>

1

これは、IEを扱う必要がないときによく行うことです

    <tr>
      <th scope="col" style="width: calc(1 * 100% / 12)">#</th>
      <th scope="col" style="width: calc(4 * 100% / 12)">Website</th>
      <th scope="col" style="width: calc(3 * 100% / 12)">Username</th>
      <th scope="col" style="width: calc(3 * 100% / 12)">Password</th>
      <th scope="col" style="width: calc(1 * 100% / 12)">Action</th>
    </tr>

そうすれば、おなじみの12列グリッドを作成できます。


0

これは私にはうまくいきませんし、データテーブルに多くのcolsがあり、%またはsmクラスをブートストラップの12要素のレイアウトに等しくします。

私はデータテーブルAngular 5とBootstrap 4で作業しており、テーブルに多くのcolsがあります。私のための解決策は、特定の幅の要素THを追加することDIVでした。たとえば、cols "Person Name"と "Event date"の場合、特定の幅が必要です。次にdiv、colヘッダーにa を入れます。その後、colの幅全体が、divから指定された幅にサイズ変更されますTH

<table datatable [dtOptions]="dtOptions" *ngIf="listData" class="table table-hover table-sm table-bordered text-center display" width="100%">
    <thead class="thead-dark">
        <tr>
            <th scope="col">ID </th>
            <th scope="col">Value</th>
            <th scope="col"><div style="width: 600px;">Person Name</div></th>
            <th scope="col"><div style="width: 800px;">Event date</div></th> ...

-1

tdまたはthなしで.somethingを使用する

<!DOCTYPE html>
<html lang="en">
<head>
  <title>Bootstrap Example</title> 
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">  
  <style>
    .something {
      width: 90px;
      background: red;
    }
  </style>
</head>
<body>

<div class="container">
  <h2>Fixed width column</h2>            
  <table class="table table-bordered">
    <thead>
      <tr>
        <th class="something">Firstname</th>
        <th>Lastname</th>
        <th>Email</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>John</td>
        <td>Doe</td>
        <td>john@example.com</td>
      </tr>
      <tr>
        <td>Mary</td>
        <td>Moe</td>
        <td>mary@example.com</td>
      </tr>
      <tr>
        <td>July</td>
        <td>Dooley</td>
        <td>july@example.com</td>
      </tr>
    </tbody>
  </table>
</div>

</body>
</html>


-2

<div class="row" id="divcashgap" style="display:none">
                <div class="col-md-12">
                    <div class="table-responsive">
                        <table class="table table-default" id="gvcashgapp">
                            <thead>
                                <tr>
                                    <th class="1">BranchCode</th>
                                    <th class="2"><a>TC</a></th>
                                    <th class="3">VourNo</th>
                                    <th class="4"  style="min-width:120px;">VourDate</th>
                                    <th class="5" style="min-width:120px;">RCPT Date</th>
                                    <th class="6">RCPT No</th>
                                    <th class="7"><a>PIS No</a></th>
                                    <th class="8" style="min-width:160px;">RCPT Ammount</th>
                                    <th class="9">Agging</th>
                                    <th class="10" style="min-width:160px;">DesPosition Days</th>
                                    <th class="11" style="min-width:150px;">Bank Credit Date</th>
                                    <th class="12">Comments</th>
                                    <th class="13" style="min-width:150px;">BAC Comment</th>
                                    <th class="14">BAC Ramark</th>
                                    <th class="15" style="min-width:150px;">RAC Comment</th>
                                    <th class="16">RAC Ramark</th>
                                    <th class="17" style="min-width:120px;">Update Status</th>
                                </tr>
                            </thead>
                            <tbody id="tbdCashGapp"></tbody>
                        </table>
                    </div>
                </div>
            </div>


説明も追加してください。
Akash Dubey

この答えはよくても混乱します。クラスは奇妙な非必須IDであり、説明はありません。
GotBatteries
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.