#javascript #html #reactjs #typescript
#javascript #HTML #reactjs #typescript
Вопрос:
У меня есть два абсолютно расположенных div
s, которые перекрываются, каждый с onClick
обработчиком. Мне нужно onClick
, чтобы обработчик запускался для каждого элемента, но это происходит только для того, что находится сверху. Я использую React 17.
Пример кода:
<div style={{ position: "absolute" }}>
<div
style={{
position: "absolute",
left: 0,
top: 0,
height: 100,
width: 100,
backgroundColor: "rgba(0, 200, 200, 0.2)",
}}
onClick={() => console.log("first")}
/>
<div
style={{
position: "absolute",
left: 50,
top: 50,
height: 100,
width: 100,
backgroundColor: "rgba(200, 200, 0, 0.2)",
}}
onClick={() => console.log("second")}
/>
</div>
Визуализация:
Щелчок либо по журналам неперекрывающейся 'first'
части, либо 'second'
по консоли, но щелчок по перекрывающейся части регистрирует только журналы 'second'
.
Как событие может быть распространено и на элемент позади?
(Это почти наверняка дубликат, но после тонны поиска я не нашел никаких похожих вопросов.)
Комментарии:
1. вы хотите, чтобы onclick работал с перекрывающейся частью или со всей частью?
2. @MohammadFaisal я хочу, чтобы оба обработчика запускали только перекрывающуюся часть
3. как это может быть возможно, учитывая, что холст нашего браузера является 2-мерным?
4. извините, но я не понимаю вопроса: браузер знает, что оба этих элемента отображаются в соответствии с координатами, по которым выполняется щелчок. вот как он знает, как смешивать цвета фона.
5. хорошо, скажи мне одну вещь. какой элемент вы хотите активировать, когда кто-то нажимает на перекрывающееся место? потому что технически они оба существуют. Вы хотите, чтобы они оба были запущены?
Ответ №1:
Я кое-что выяснил, что решило возникшую у меня проблему, хотя технически это не позволило решить поставленный вопрос. Мне действительно нужен был только один элемент для получения события, но иногда это было позади.
Я увеличил значение z-index;
целевой цели до высокого значения, чтобы она находилась сверху и получала щелчок. Это оказалось проблемой только потому, что я использую прозрачные элементы.