Цель другой стилизованный компонент при наведении не работает

#reactjs #styled-components

Вопрос:

Мне нужна помощь с наведением курсора в стилизованных компонентах. Если наведение находится в компоненте и влияет на этот компонент, это работает. Но если наведение находится в компоненте и влияет на другой компонент, не работает.

Выпадающее содержимое не отображается при выпадающем списке:наведите курсор.

 export const DropDownLi = styled(StyledLi)`  display: inline-block;   amp;:hover {  color: red;  } `;  export const DropDownContent = styled.div`  display: none;  position: absolute;  min-width: 160px;  z-index: 1;   ${DropDownLi}:hover amp; {  display: block;  }   /* not show on hover */ `;  

Не работает в следующем примере.

 export const DropDownLi = styled(StyledLi)`  display: inline-block;   amp;:hover ${DropDownContent} {  color: red;  } `;  
 lt;StyledUlgt;  lt;DropDownLigt;$ Currencylt;/DropDownLigt;   lt;DropDownContentgt;dvsdvlt;/DropDownContentgt;  lt;DropDownLigt;Englishlt;/DropDownLigt;  lt;StyledLigt;Loginlt;/StyledLigt; lt;/StyledUlgt;  

Ответ №1:

Попробуйте удалить amp; :

 export const DropDownContent = styled.div`  display: none;  position: absolute;  min-width: 160px;  z-index: 1;   ${DropDownLi}:hover {  display: block;  }   /* not show on hover */ `;  

Комментарии:

1. Спасибо @Georgy за помощь, но без нее не обойтись amp; .

2. ах, я вижу, вы хотите показать родительский компонент, если наведете курсор на дочерний компонент, верно? Я не уверен, что вы могли бы сделать это с помощью CSS. Каскадирование работает с верхних уровней на нижние.

3. Я обновил вопрос, чтобы вы могли видеть. Я хочу показать дочерний компонент ( DropDownContent ) при наведении на другой дочерний компонент ( DropDownLi ). Мне нужен раскрывающийся список со стилизованными компонентами. Спасибо вам за помощь.

Ответ №2:

Я нашел решение этой проблемы. Код, который работает, приведен ниже.

 lt;StyledUlgt;  lt;DropDownLigt;  $ Currency  lt;DropDownContentgt;dvsdvlt;/DropDownContentgt;  lt;/DropDownLigt; lt;/StyledUlgt;  
 export const StyledLi = styled.li`  float: left;  cursor: pointer; `;  export const DropDownContent = styled.div`  display: none;  position: absolute;  min-width: 160px;  z-index: 1; `; export const DropDownLi = styled(StyledLi)`  display: inline-block; `;  export const StyledUl = styled.ul`  list-style-type: none;  margin: 0;  overflow: hidden;  color: black;   ${DropDownLi}:hover gt; ${DropDownContent} {  display: block;  } `;