2016-04-14 5 views
0
<section class="album" role="listitem" onmouseover="this.albumHeader.style.opacity = 0.6"> 
    <a href="@HrefHelper.ToAlbum(album.Title, 0)"> 
     <img src="@albumPreview.GenerateSrcHTML()" height="@albumPreview.PreviewHeight" width="@albumPreview.PreviewWidth" /> 
    </a> 
    <header id="albumHeader"> 
     <p>@album.Title</p> 
    </header> 
</section> 

これは、JS-コード: this.albumHeader.style.opacity = 0.6 somewhyが誤っている:「キャッチされない例外TypeError:プロパティを読み取ることができません未定義の 『スタイル』」。ユーザーが<section class="album"...<header>(デフォルトでは不透明度:0.0)を表示したときのアイデアが表示されます。どうすれば修正できますか?もちろん、彼の親をホバリング時に子要素の不透明度を変更する方法

.parent:hover .child { 
    opacity: 0.5; 
} 

あなたが所有してセレクタを置き換える:

答えて

1

@GMchrisの答えのコメントであなたの質問に基づいて、ここにアニメーションでの例です:

section.album header { 
    opacity: 0; 
    transition: opacity 0.25s ease-in-out; 
} 

section.album:hover > header { 
    opacity: 0.6; 
} 

Plunker例:click here

+0

thxたくさん!完璧に動作する – 52hertz

2

あなたは次のスタイルを設定することができます。

+0

素敵な、私はそのトリック – 52hertz

+0

を知らなかったかあなたがそれを行うことができます直接子孫タグセレクタ: '.album:hover> header {opacity:0.6; } ' – jdforsythe

+0

この特定のケースでは、クエリセレクタは次のようになります:' .album:hover#albumHeader' – Tomasito665

-1
onmouseover="document.getElementById('albumHeader').style.opacity = 0.6" 

あなたが同様にマウスうちに、それを変更しない限り、不透明度は0.6にとどまることに注意してください。cssの解決策は、おそらく維持しやすくなります。

+0

問題は、私は自動的に生成された "albumHeaders"のリストを得たことです。私が理解するように、.getElementByIdは最初のものを返します... – 52hertz

+0

潜在的に複数のヘッダーがある場合は、IDを使用せずにクラスを使用してください。そうすれば 'document.getElementsByClassName( 'albumHeader')'を実行できます。これは、そのクラスのすべての要素を含む配列を返します。 – Tomasito665

+0

Tomasito665によると、this.getElementsByClassName( 'albumHeader')[0] .style.opacity = 0.6を使用することができます。 id = 'albumHeader'をclass = 'albumHeader'に変更する必要があります –

関連する問題