2016-04-14 2 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 является ошибочным: «Uncaught TypeError: Не удается прочитать свойство„стиль“неопределенной». Идея заключается в том, что пользователь наводит <section class="album"... на <header> внутри (который по умолчанию непрозрачность: 0.0) становится видимым. Как я могу это исправить?Как изменить непрозрачность ребенка-элемента при наведении его родителя

ответ

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

Вы можете установить следующие стили:

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

Конечно, заменить селекторы с вами самостоятельно.

+0

хорошо, я не знаю, что трюк – 52hertz

+0

Или вы можете сделать это с прямой селектор тегов потомков: '.album: hover> header {opacity: 0.6; } ' – jdforsythe

+0

В этом конкретном случае селектором запросов будет:' .album: hover # albumHeader' – Tomasito665

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

Обратите внимание, что непрозрачность останется .6, если вы не измените ее и на мышь. Решение css, вероятно, будет проще поддерживать.

+0

проблема в том, что я получил список автоматически созданных «albumHeaders». как я понимаю, .getElementById возвращает первый ... – 52hertz

+0

В случае, если вы собираетесь иметь более одного заголовка, не используйте идентификатор, а используйте класс. Таким образом вы можете сделать 'document.getElementsByClassName ('albumHeader')'. Это вернет массив, содержащий все элементы этого класса. – Tomasito665

+0

Продолжая то, что сказал Tomasito665, вы можете использовать this.getElementsByClassName ('albumHeader') [0] .style.opacity = 0.6. Вы должны изменить id = 'albumHeader' в class = 'albumHeader' –

Смежные вопросы