TD内で相対位置/絶対位置を使用しますか?


108

私は次のコードを持っています:

<td style="position: relative; min-height: 60px; vertical-align: top;">
    Contents of table cell, variable height, could be more than 60px;

    <div style="position: absolute; bottom: 0px;">
        Notice
    </div>
</td>

これはまったく機能しません。何らかの理由で、position:relativeコマンドがTDで読み取られず、通知DIVが私のページの下部にあるコンテンツコンテナーの外側に配置されています。私はTDのすべてのコンテンツを次のようなDIVに入れようとしました:

<td>
    <div style="position: relative; min-height: 60px; vertical-align: top;">
        Contents of table cell, variable height, could be more than 60px;

        <div style="position: absolute; bottom: 0px;">
            Notice
        </div>
    </div>
</td>

ただし、これは新しい問題を作成します。表のセルの内容の高さは可変であるため、通知DIVが常にセルの下部にあるとは限りません。表のセルが60pxマーカーを超えて伸びているが、他のセルのどれも伸びていない場合、他のセルでは、DIVは下部ではなく60pxにあります。


テーブルを使用する理由はありますか?残りのテーブルの内容がこのセルの内容をシフトすると想定しています。テーブルが必要な場合は、valign = topでtopとvalign = bottomでbottomの2行を使用できます
Wayne

レイアウトの目的でテーブルを使用している場合は、それをお勧めしません。テーブルを使用してデータを表示することは問題ありませんが、レイアウトに最適ではありません。
カイル

5
カレンダー用...テーブルグリッドは必須です:8wayrun.com/events/monthly/1.2011
Jason Axelrod

回答:


189

これは、CSS 2.1によるとposition: relative、テーブル要素への影響が定義されていないためです。これを説明すると、position: relativeChrome 13では望ましい効果が得られますが、Firefox 4では効果がありません。ここでの解決策はdiv、コンテンツの周りにを追加position: relativeし、のdiv代わりにを配置することtdです。以下は、position: relative(1)div良品)、(2)td(不良品)、最後に(3)div内部td(再び良好品)で得られる結果を示しています。

Firefox 4の場合

<table>
  <tr>
    <td>
      <div style="position:relative;">
        <span style="position:absolute; left:150px;">
          Absolute span
        </span>
        Relative div
      </div>
    </td>
  </tr>
</table>


29
divの高さは100%にならないため、下への相対的な配置:0は効果がありません。
Softlion、2011年

1
この例の「絶対スパン」はtdの高さに影響を与えないことに注意してください。これにより、基本的にテーブルを使用できなくなります。
Dror

@Softlion:td内部のコンテンツ全体をラップしてdiv、に設定し、tdからdivにパディングを適用しwidth: 100%height: 100%、それをに設定しrelativeますか?アイデアは、のすぐ上に薄い包含層を作成することです。これtdは、tdそれ自体のように機能しますが、それはdivです。それは私のために働いた。
CamilB 2013

1
HTMLソースへのリンクは無効です。更新/更新できますか?
Peter VARGA、2018

1
2019年以降にこの答えを見つけた人のために:CSS2.1はposition:relative内部テーブルパーツへの影響は未定義であると実際に言っていましたが、それはテーブルパーツ自体の動作を意味していました(たとえば、td動作の境界がどのように動作するか不明でした)の場合にそれがシフトさposition:relativeれる場合border-collapse:collapse)。絶対配置された子孫の可能な包含ブロックからそれらを除外しませんでした。Firefoxのの行動は2014年に修正されたばかりのバグ、あることが判明して
イリヤStreltsyn

5

このトリックも適切ですが、この場合、alignプロパティ(中央、下など)は機能しません。

<td style="display: block; position: relative;">
</td>


1

2番目の試みに関して、垂直方向の配置を使用してみましたか?どちらか

<td valign="bottom">

またはCSSで

vertical-align:bottom

それは機能しません...私がそうした場合、表のセルの内容は下から60pxの間隔になります。上部ではなく。
Jason Axelrod 2010

-2

「display:block;」を実行した場合にも機能します。tdで、tdアイデンティティを破壊しますが、機能します!

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