首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用css在ReactJS中悬停另一个图像来隐藏图像

使用css在ReactJS中悬停另一个图像来隐藏图像
EN

Stack Overflow用户
提问于 2020-07-01 13:47:55
回答 2查看 429关注 0票数 1

我有下面的反应码。

我的代码

我想要的是,当我悬停第一张图像时,比其他图像应该隐藏(或者变得透明,这样定位就不会崩溃)。

А和其他图片也是如此,例如,如果你在第三张图片上悬停,那么第一张、第二张和第四张图片应该变得隐藏或透明。

我关注的其他主题如下:

在一个元素悬停时如何影响其他元素另一个元素悬停时隐藏元素,但是我不能修复我的代码。

也许用一些reactJS代码来修复会更容易呢?

请帮帮我。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-01 14:03:07

我会这样做:

跟踪悬停项的索引,并根据该悬停索引更改样式不透明度。

代码语言:javascript
复制
// SolutionBox.jsx

import React, { useState } from "react";
import SolutionItem from "./SolutionItem";
import Ecommerce from "../img/a.png";
import Middleware from "../img/b.png";
import SalesMarketing from "../img/c.png";
import Analytics from "../img/d.png";
import _ from "lodash";

function SolutionsSectionBox({ onBGChanged }) {
  const [focused, setFocused] = useState(0);

  let callBGChanged = menuName => {
    if (_.isFunction(onBGChanged)) {
      onBGChanged(menuName);
    }
  };

  return (
    <div className="solutions-section-box-box">
      <SolutionItem
        solutionIMG={Ecommerce}
        onHover={state => {
          setFocused(1);
          callBGChanged(state === true ? "Ecommerce" : "default");
        }}
        focused={focused}
        index={1}
        onLeave={() => setFocused(0)}
      />
      <SolutionItem
        solutionIMG={SalesMarketing}
        onHover={state => {
          setFocused(2);
          callBGChanged(state === true ? "SalesMarketing" : "default");
        }}
        focused={focused}
        index={2}
        onLeave={() => setFocused(0)}
      />
      <SolutionItem
        solutionIMG={Analytics}
        onHover={state => {
          setFocused(3);
          callBGChanged(state === true ? "Analytics" : "default");
        }}
        focused={focused}
        index={3}
        onLeave={() => setFocused(0)}
      />
      <SolutionItem
        solutionIMG={Middleware}
        onHover={state => {
          setFocused(4);
          callBGChanged(state === true ? "Middleware" : "default");
        }}
        focused={focused}
        index={4}
        onLeave={() => setFocused(0)}
      />
    </div>
  );
}
export default SolutionsSectionBox;

解决方案项目:

代码语言:javascript
复制
// Solution Item:

import React from "react";
import _ from "lodash";

function SolutionsSectionBoxItem({
  onLeave,
  solutionIMG,
  onHover,
  index = 0,
  focused = 0
}) {
  let callOnHover = state => {
    if (_.isFunction(onHover)) {
      onHover(state);
    }
  };

  return (
    <div className="solutions-section-item-box">
      <img
        style={{
          opacity: focused && focused !== index ? 0.5 : 1
        }}
        src={solutionIMG}
        alt=""
        onMouseEnter={() => {
          callOnHover(true);
        }}
        onMouseLeave={() => {
          callOnHover(false);
          onLeave();
        }}
        className="solutions-section-item-img"
      />
    </div>
  );
}
export default SolutionsSectionBoxItem;
票数 1
EN

Stack Overflow用户

发布于 2020-07-01 14:04:18

您可以使用现有的bgImg状态推断哪个是可见的。

如果你把它当作道具传递给SolutionBox,就像

代码语言:javascript
复制
<SolutionBox bgImage={bgImage} onBGChanged={onBGChanged} />

然后对每个SolutionItem

代码语言:javascript
复制
<SolutionItem
  solutionIMG={Ecommerce}
  visible={bgImage === Ecommerce}
  onHover={state => {
    callBGChanged(state === true ? "Ecommerce" : "default");
  }}
/>

并使用它在SolutionItem中进行样式设计。

代码语言:javascript
复制
<div className="solutions-section-item-box" style={{ opacity: visible ? 1 : 0.5}}>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62678321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档