2010-12-07 6 views
1

この問題には数多くの質問がありますが、浮動画像またはブロックレベルの要素に比べて垂直方向の配置は扱いません。フローティングイメージを基準にテキストを縦に並べるにはどうすればよいですか?

... 
<td> 
    <span style="vertical-align: middle">This should be vertically centered relative to the image</span> 
    <img src="something" style="float: right" /> 
</td> 
... 

イメージがフローティングであるため、これは望ましい結果を生成しません。私は、タグの後ろに、ブロックレベルの要素としてスパンの表示を作り、それを浮かべることなくイメージを配置する他の方法を追加することを含め、多くのことを試みましたが、成功しませんでした。

更新日: 提案されているソリューションのいずれも動作させることができませんでした。これを行うことができないなら、そうすることができますが、私はそれができないと確信できるまで、これを開いたままにしておきます。私はjsFiddleをHTMLとともに作成しました。誰かが解決策を示すCSSを書くことを望んでいます。

+0

テキストの長さが十分であるか、またはテキストが画像に衝突して折り返す必要があるように容器が十分に小さいかどうかを確認します。 – Phrogz

答えて

0

デフォルトで< TD>タグであるALIGN中央、少なくとも所与CSS2.1 。誰かが提供できるなら、私はまだCSS3のソリューションを見たいと思うだろう。

0

スパンとイメージを同じ<div>にラップし、divにfloatを適用する必要があります。

... 
<td> 
    <div style="float: right;"> 
    <span style="vertical-align: middle">This should be vertically centered relative to the image</span> 
    <img src="something" /> 
    </div> 
</td> 
... 

OR

... 
<td style="vertical-align: middle;"> 
    <span>This should be vertically centered relative to the image</span> 
    <img src="something" style="float: right;" /> 
</td> 
... 
+0

これはテキストを右に浮かせるでしょう、正しいですか?テキストが本質的に左揃えになり、画像が右揃えになります。 –

+1

あなたの持っているものをそのまま残しておき、代わりに​​にvertical-align:middleを入れてください。 ORの下で私の答えをこのオプションで更新しました。 –

+0

また、
の下にあります。 –

2
... 
<td> 
    <table cellpadding="0" cellspacing="0"> 
    <tr> 
     <td>text here</td> 
     <td style="text-align: right">image here</td> 
    </tr> 
    </table> 
</td> 
... 

これは、所与の文書の構造を変更せずに行うことができない

+0

それははるかに簡単だろう。ちょうどあなたがこれらの上下の他のセルをcolspanする必要があることを覚えておいてください。少年は私がテーブル駆動デザインOを逃しますかO –

+0

あなたの解決策は​​を2つに分割します。これはテキストと同じテキストに同じ​​に動的に挿入されたイメージです。 –

+0

おそらくあなたはtdのテーブルを持つことができますか?あなたのダイナミックな挿入コードがどのように動作するのかわかりませんが、表示されているようなテーブルを使用できるのであれば、はるかに簡単です(信頼できる)でしょう。コードを更新しました。 –

関連する問題