javascript - 鼠标输入时显示标题

标签 javascript reactjs react-hooks styled-components

我正在构建一个简单的作品集网站。

在登陆页面上,我显示了不同项目的图像。 我正在绘制所有项目 {projects.map(({ id, title, 路线, src }, index) => ())} 我想要的是当鼠标进入图像时在图像下方显示项目名称。 当您输入图像时,它会显示所有图像下方的所有名称。

(因为 displayTitle 设置为 true {displayTitle ? title : null})

OnmouseEnter 它应该只显示悬停图像的标题。

关于如何解决这个问题有什么建议或创造性的解决方案吗?

这是整个组件

export const Main = () => {
  const [projects, projectsSet] = useState([]);
  const [displayTitle, setDisplayTitle] = useState(false);

  useEffect(() => {
    const projects = projectsLoader();
    projectsSet(projects);
  }, []);


  return (
    <>
      <NavWrapper>
        {projects.map(({ id, title, route, src }, index) => (
          <ImageWrapper id={id} key={id}>
            <NavLink
              activeClassName="active"
              className="Nav_link"
              exact={true}
              to={`/${route}`}
            >
              <div
                onMouseEnter={() => {
                    setDisplayTitle(true);
                }}
                onMouseLeave={() => setDisplayTitle(false)}
                style={flexStyle}
              >
                <ProjectImage src={src} alt={title} />
                {displayTitle ? title : null}
              </div>
            </NavLink>
          </ImageWrapper>
        ))}
      </NavWrapper>
    </>
  );
};

我也尝试过这个 OnMouseEnter

                  if (index + 1 === id && document.getElementById(id).id) {
                    if (title.toLowerCase().replace(/\s/g, "") === route) {
                      setDisplayTitle(true);
                    }
                  }
                }}

但是可以理解,这具有相同的效果。

解决方案

我正在使用样式组件

 export const ProjectWrapper = styled.div`
  position: relative;
`;

export const ProjectImage = styled.img`
  max-width: 15rem;
  max-height: 15rem;
  margin: 3rem;
`;

export const Title = styled.div`
  display: none;
  ${ProjectWrapper}:hover & {
    display: block;
  }
`;

最佳答案

最好使用 CSS 来实现这一点。始终呈现您想要显示的标题,但默认情况下在样式表中隐藏它。在图像上使用 :hover 伪选择器在悬停时显示标题。

关于javascript - 鼠标输入时显示标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59911052/

相关文章:

javascript - Angular 7 上相同的 url 导航问题?

javascript - 我可以在 Node.js 和 Express 中运行单个 .js 文件吗?

javascript - 无法在 JSON 字符串上使用 .indexof,因为它没有方法 'indexof' javascript

javascript - 选择tr时如何排除第一个td? CSS, 查询

css - FlatList 的最后一项从底部修剪掉

JavaScript匿名函数参数及调用安排

reactjs - 如何在 React 中使用 map 输出嵌套对象的内容?

reactjs - react : Is it okay if useCallback returns a value, 还是这是一个不好的模式?

javascript - 在 useEffect 内部或外部定义函数?

css - 如何使用 webpack 在 React 应用程序中包含 "leaflet.css"?