2011-12-09 26 views
3

テキストとその隣にアイコンがあるボタンが必要です。 CSSの外観を変更するには、それぞれの:ホバー状態を指定することができますが、テキストをロールオーバーするとイメージのホバー状態も変更されるように、CSS/HTMLを配置するにはどうしたらいいですか?CSSで2つの要素を同じロールオーバー状態にするにはどうすればよいですか?

JSを避ける​​ことをおすすめします。

更新私の周りいじるの現在の状態...

<a class="close"><div class="closebutt"></div></a> 

a.close { 
    float:right; 
    font-size:12px; 
    color: #a7dbe6; 
    text-decoration:underline; 
} 
a.close:hover { 
    color: #fff; 
} 
a.vs_rewardClose:before { 
    content:"Close " 
} 
.closebutt { 
    background: url(images/close.gif) no-repeat; 
    display:inline-block; 
    width:14px; 
    height:14px; 
} 
.closebutt:hover { 
    background-position: 0px -14px; 
} 
+4

HTMLを表示します。あなたを助けるために私たちを助けてください。 –

答えて

4

あなたのHTMLの場合:この要素にカーソルを移動divbackground-positionを変更することは、単なる問題です。

.close:hover > .closebutt { 
    background-position: 0px -14px; 
} 

このように、background-positionは、その親がホバリングされたときにのみ変化します。


これは、あなたの質問を更新する前に、私は投稿元の答えです: 私は通常、このように私のHTMLを整理するには、

<a href="#" class="button"> 
    <div class="glyph"></div> 
    <div class="text">Button text</div> 
</a> 

EDIT:@Paul D.ウェイトは、コメントで指摘してaにはインライン要素のみを含めることができるため、このHTML構造はHTML4では無効です。したがって、これを修正するには、spanaの子として持つこのように構造を変更することができます。 CSSは同じままで、必要に応じて最終的にdisplay: blockを追加します。あなたもこのような方法で、ボタンに新しいクラスを追加するスタイルを変更することができます。このように

.button { 
    /* .. general style */ 
} 

    .button > .glyph { 
    /* .. general style for the glyph, like size or display: block */ 
    background-image: url('..'); 
    background-repeat: no-repeat; 
    background-position: left top; 
    } 

    .button > .text { 
    /* .. general style for the text, like font-size or display: block */ 
    text-decoration: none; 
    } 

    .button:hover > .glyph { 
    /* .. change the glyph style when the button is hovered */ 
    background-position: left bottom; 
    } 

    .button:hover > .text { 
    /* .. change the text style when the button is hovered */ 
    text-decoration: underline; 
    } 

<a href="#" class="button"> 
    <span class="glyph"></span> 
    <span class="text">Button text</span> 
</a> 

と、このようにあなたのCSS

<a href="#" class="button red"> 
    <div class="glyph"></div> 
    <div class="text">Button text</div> 
</a> 
<a href="#" class="button gray"> 
    <div class="glyph"></div> 
    <div class="text">Button text</div> 
</a> 

そして、 CSS

.button.red { 
    background-color: red; 
} 

    .button.red > .text { 
    color: black; 
    } 

.button.gray { 
    background-color: darkgray; 
} 

    .button.gray > .text { 
    color: white; 
    } 
+2

HTMLはHTML 4では無効ですが、HTML5では問題ないことに注意してください。 –

+0

完璧、ありがとう:) – izb

3

の両方で一つの要素を囲み、追加:

.parent:hover > .text { your hover state} 
.parent:hover > .icon { your hover state} 
+0

親要素がリンクでない場合、IE6にはJavaScriptベースのヘルプ(IE7.js(http://code.google.com/p/ie7-js/)など)が必要です。それはそれを行う唯一の方法です、それは他のすべてのブラウザで動作します。 –

+0

私はそれで遊ぶためにie6を持っていません。私の頭の上に私はイメージ要素を複製し、隣接する兄弟セレクタ(+)を使用すると言うだろうが、私は事ie6はどちらかをサポートしていません。私がie6のために開発しなければならない場合(私は非常に幸せです:)私はちょうどその1つをスキップしたいと思います: – Litek

+0

ああ、まったく - CSSのみのIE 6の解決策はありませんこの機能をIE 6に残すことには何か問題があります。OPのHTMLでは、親要素はリンクなので、IE 6では問題なく動作するはずです。 –

関連する問題