2011-01-07 14 views
0

アイコンがあります。問題は、他のすべてのもの(テキスト、入力)のように、中央に垂直に配置しないことです。チェックボックスとテキストが真ん中にありながら、アイコンを垂直に整列する

<div class="i_contain_things"> 
    <div class="i_float_left"><checkbox/></div>some text 
    <div class="i_float_right"> 
    <span class="sprite icn1">my sprite</span> 
    <span class="sprite icn2">my sprite</span> 
    </div> 
</div> 

.i_contain_things 
{ 
clear:both; 
margin-bottom:10px; 
vertical-align:middle; 
} 

.i_float_left 
{ 
padding:0 3px 0 3px; 
float:left; 
display:inline-block; 
} 

.i_float_right 
{ 
padding:0 3px 0 3px; 
float:right; 
display:inline-block; 
vertical-align:middle; 
} 

.sprite 
{ 
display:inline-block; 
background: url(../img/icn_sprite_1.png); 
width: 16px; 
height: 16px; 
vertical-align: middle; 
} 
.icn1{background-position:0,0} 
.icn2{background-position:0,16px} 

私のスプライトが常に下に整列されています。私のHTML構造は、このようなものです。

+1

テストするための実際のマークアップはありますか?基本的には、ちょうど画像にボトルマージンを少し追加するか、ラインハイトcss垂直アラインメントテクニックをお勧めします。 http://www.brunildo.org/test/va_lineheight.html – Loktar

+3

通常のHTML構文を使用できますか?それは見やすくなります。また、いくつかのCSSを含めることができますか? – JakeParis

+0

line-heightは何もしませんでした。高さが可変なので、私は下のマージンを追加できません。 – aepheus

答えて

0

background-positionプロパティを指定する必要があります。そうのような第一の数は、軸X及び第二の数あなたが背景画像の位置を宣言するためにパーセント、ピクセル、またはキーワード(右、上部、中央)を使用することができる軸Yである

sprite { background: url(../img/icn_sprite_1.png) 50% 50% no-repeat; 

http://www.w3schools.com/css/css_background.asp

+0

backgound-positionは、中心ではなくキーワードとして中心をとります。 – DanMan

+0

ありがとう@DanMan。 – JakeParis

+1

CSSのスプライトを行うには、背景の位置を使用する必要があります。もちろん、ニックは –

1

これが仕事に行くのではありません、スパンはそうとすぐにテキストを削除すると、インライン要素である、それが崩壊します。 heightwidthは何もしません。

あなたは正確に何を達成したいのかよく分かりませんが、スプライトを既に持っている要素の1つ(たとえば.i_contain_things)の背景に置く必要があります。別の要素。

あなたは別の要素でそれを配置する必要がある場合、あなたは確かit'sブロックレベル要素(display:blockに設定しています例えばdivまたはspan)を作成する必要があります。その要素は、必要な場所に配置する必要があります。

+0

不足している 'display:block'をキャッチするために+1 – JakeParis

+0

別の要素に置かないと、CSSスプライトを使用できなくなります。 –

+0

@Nick - これは真実ではありません。display:blockがあれば、スプライトとして機能します。同じ背景と背景の位置を使用して他のスプライト要素を定義することができます。添加元素は必要ない。 – aepheus

関連する問題