【问题标题】:How to add style on a particular image when hovering in ReactJS?在 ReactJS 中悬停时如何在特定图像上添加样式?
【发布时间】:2021-05-29 21:56:50
【问题描述】:

问题是我想为图像添加边框并显示一个卡片,其中包含悬停时的信息,但它显示在所有图像上。

从电影 API 获取数据后,我将响应存储在 state 中:

const [movies, setMovies] = useState([])

useEffect(() => {
    /**side-effects**/
    setMovies(response.data)
 
},[])

然后

let style = {
    display: 'none'
  };
let imgStyle = {};

if(hover){
    style = {
      display: 'block'
    }
    imgStyle = {
      border: 1px solid white
    }
  }
  if(movies.length > 1) {
    display = (
      <div className="MovieContainer">
        <h2>Trending this week</h2>
        <Carousel>
          {movies.map((movie) => {
            return (
              <>
                <img
                  style={imgStyle}
                  onMouseEnter={() => setHover(true)}
                  onMouseLeave={() => setHover(false)}
                  className="Images"
                  key={movie.id}
                  src={movie.image}
                  alt={movie.title}
                />
                <Card style={style}>{movie.title}</Card>
              </>
            );
          })}
        </Carousel>
      </div>
    );
  }

but instead of adding a style to the *hovered* image, it also adds the style to all images.

I also tried using css for the border and it works the way I wanted but I couldn't think of any way for the Cards to show up when hovering 


【问题讨论】:

    标签: css reactjs react-hooks


    【解决方案1】:

    你为什么不直接在css文件中做这个修改,你可以添加到你的css中

    img:hover { "2px solid black" }
    

    而不是做内联样式和使用onMouseEnteronMouseLeave

    【讨论】:

    • 是的,我已经尝试过这样做,它可以按照我想要的方式工作。但是,除了添加边框之外,我还想在悬停在某个图像上时添加一张卡片。该卡片包含有关电影的一些信息......
    • 你能否分享你的那部分代码,因为它不在你的代码和问题中
    • 当然,我很抱歉不清楚,感谢您抽出宝贵时间帮助我解决这个问题
    • 我现在明白了。您可以做的不是将图像和卡片包装在 > 中,而是将它们包装在 div 中,并在 div 上而不是图像上添加悬停效果。对于卡片组件,在没有悬停时显示:无,然后在 div 上悬停时显示 flex 或 block。您可以像 div:hover cardClassName { display:block } 一样控制它。当然,您必须取消所有内联样式才能看到效果
    猜你喜欢
    • 1970-01-01
    • 2020-02-14
    • 2015-02-11
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-17
    相关资源
    最近更新 更多