Как изменить свойство других компонентов с помощью стилизованных компонентов?

#javascript #html #css #reactjs #styled-components

#язык JavaScript #HTML #CSS #реагирует на #стиль-компоненты

Вопрос:

Я использую styled-components и пытаюсь изменить высоту Top «до 300px «, когда фокусируюсь на своем Input .

Я пробовал что-то подобное, но не получилось:

 amp;:focus ${Top} {  height: 500px; }  

Структура Dom:

 lt;Topgt;  lt;Avatar  src="./assets/person/1.jpeg"  alt=""  sx={{ width: "50px", height: "50px" }}  /gt;  lt;Input placeholder="What's in your mind?" /gt; lt;/Topgt;  

Мой код:

 export const Top = styled.div`  display: flex;  align-items: flex-start;  height: 150px; `;  export const Input = styled.textarea`  flex: 1;  height: 100%;  resize: none;  border: none;  outline: none;  font-size: 16px;  padding: 10px;   amp;:focus ${Top} {  height: 500px;  } `;  

Как я могу изменить реквизит других компонентов с помощью стилизованных компонентов?

Ответ №1:

Использовать ~ селектор:

 export const Top = styled.div`  display: flex;  align-items: flex-start;  height: 150px; `;  export const Input = styled.textarea`  flex: 1;  height: 100%;  resize: none;  border: none;  outline: none;  font-size: 16px;  padding: 10px;   amp;:focus ~ ${Top} {  height: 500px;  } `;  

Какова ваша структура dom?

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

1. Это не работает. Я обновил свой пост для структуры dom.

2. Эх, структура dom выглядит так, что не может использовать css для реализации. Вам нужно использовать событие фокусировки JavaScript.