2012-02-09 7 views
4

問題は、テキストのブロックがあり、テキストと一列に並びたいと思う画像が少し大きすぎる場合です。たとえば、スマイリーです。段落の行の行の高さが増加し、テキストのブロックが醜いものになります。やや大きすぎるインライン画像(例:スマイリー)が、テキストブロックの行の高さに影響を与えないようにすることはできますか?

私は実際にはすでに解決策を考え出していますが、それは面倒です。私はそれが好きではありません...相対位置のdivにスマイリーをラップして、私は後になっている:

.holder{display:inline-block;position:relative;width:16px} 
.holder img{position:absolute;top:-16px} 

<span class="holder"><img src="/smiley.gif" height="16" width="16"></span> 

しかし、それは余分なマークアップを追加します。私は、オーバーフロー/垂直整列/フロート/ディスプレイなどのいくつかのアプリケーションを欠けているのだろうか純粋 CSSソリューション(なしジャバスクリプト!)

- 余分なHTML要素を追加することなく、これを達成する方法はありますか?

多くの感謝!

+0

'img'に対して' vertical-align:text-top'を設定します。何か違いはありますか? –

+0

奇妙なことに、 Chromeは少なくとも、画像をラインの下に流すことはできますが、それを上回らないようにします。それは画像を高すぎるように見せますが、私は位置を追加することができます:相対;上:2pxそしてそれは非常に幸せにそこに座って、下降者の下に突き抜けます。私は不平を言うことはありません:)ありがとう! – Codemonkey

+0

問題はありません - うまくいけばうれしいです –

答えて

2

所望の画像の位置に応じて、あなたはピクセル単位で固定された行の高さを持っているかどうか、あなたの行の高さに等しく、設定あなたのイメージの最大の高さを設定することができます画像上にvertical-align: bottomがあるので、あなたのラインに正確に収まります。

たとえば、fiddleを参照してください。

p { 
    line-height: 18px; 
} 

p img { 
    max-height: 18px; 
    vertical-align: bottom; 
} 

<p>Some text <img src="/smiley.gif"> more text.</p> 
+0

+1 - 事実上同じことを書いていた(ありがたいことにコメントとして) –

+0

残念ながら、イメージは線の高さを越えてパディングに伸びたい。 – Codemonkey

+0

@codemonkey要素が含まれている要素の通常の大きさを超えるようにするには、配置以外の選択肢がほとんどありません。画像が線の高さを既知の値で超えている場合は、それに負の 'margin-top'を適用することができます。これを参照してください[フィドル](http://jsfiddle.net/CZR6S/2/) – raphinesse

0

イメージをDIVのバックグラウンドとして設定し、DIVの固定サイズを指定します。

<div class="smiley"></div> 

CSS:

.smiley { 
    float:right; <-- or inline-block if you want. 
    background-image:url(../smiley.gif); 
    height:20px; 
    width:20px; 
} 
+0

あなたは私がやっていることを誤解しているのでしょうか、私はばかげていますか? – Codemonkey

+0

画像はDIVの寸法に反します。ラッピング要素、絶対配置またはオーバーフローの必要はありません。シンプル。 –

+0

divの境界線に画像をクリップしませんか? –

関連する問題