Как применить стиль к дочернему тегу дочернего тега?

<div class = "product">
 <div class = "image">
   <div class = "mainimage"></div>
   <div class = "secondimage"></div>
 </div>
 <div class = "productdescription"></div>
</div>

При наведении курсора мыши на класс productdescription я хочу применить дисплей: блок к классу secondimage. Как мне это сделать?

Вы не можете сделать это без javascript, потому что элемент триггера .productdescription должен быть родительским элементом элемента .secondimage.

thhan 10.08.2018 16:25
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
0
1
35
2

Ответы 2

Невозможно сделать это в чистом CSS с имеющейся у вас структурой, как правило, CSS избегает любых селекторов, которые «перемещаются вверх» по дереву узлов DOM, чтобы избежать сложности. Однако, если вы поменяете порядок так:

<div class = "product">
 <div class = "productdescription"></div>
 <div class = "image">
   <div class = "mainimage"></div>
   <div class = "secondimage"></div>
 </div>
</div>

Тогда вы сможете сделать следующее, используя Селектор смежных братьев и сестер

.productdescription:hover + .image .secondimage{
    display:block;
}

.productdescription:hover + .image .secondimage{
    display:block;
    color:red;
}
<div class = "product">
 <div class = "productdescription">Product Description</div>
 <div class = "image">
   <div class = "mainimage">Main Image</div>
   <div class = "secondimage">Second Image</div>
 </div>
</div>

В качестве альтернативы, если вам нужно сохранить структуру, потребуется немного JavaScript / jQuery.

$(".productdescription").hover(function(){
    $(this).parent().find(".image .secondimage").toggleClass("hoverActive")
});
.secondimage.hoverActive{
    display:block;
    color:red;
}
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class = "product">
 <div class = "image">
   <div class = "mainimage">Main Image</div>
   <div class = "secondimage">Second Image</div>
 </div>
  <div class = "productdescription">Product Description</div>
</div>

Думаю, для этого вам понадобится JavaScript и jQuery.

После ввода идентификатора в каждый div, с которым вы хотите взаимодействовать:

$('#productDescription').hover(function(){
    $('#secondImage').css("display","block");
});

Не знаю, ищете ли вы это, но это работает.

Другие вопросы по теме