gpt4 book ai didi

javascript - 放大图像同时保持鼠标悬停尺寸的 React 组件 - React + Bootstrap

转载 作者:行者123 更新时间:2023-12-05 00:36:44 33 4
gpt4 key购买 nike

因此,过去几天我一直在寻找所有地方,但找不到任何有效的方法。我正在将 React 与 Bootstrap 一起使用。我想要一个无状态的功能组件,它采用图像路径并返回一个 img 元素,当鼠标悬停在该元素上时,它会放大图像,同时保持元素的尺寸相同。
我努力了:

  • 像这样更改 onMouseOver 和 onMouseOut 事件中的样式属性
  • import React from "react";

    const ImageHoverZoom = ({ imagePath }) => {
    return (
    <img
    src={imagePath}
    alt=""
    style={{ overflow: "hidden" }}
    onMouseOver={(e) => (e.currentTarget.style = { transform: "scale(1.25)", overflow: "hidden" })}
    onMouseOut={(e) => (e.currentTarget.style = { transform: "scale(1)", overflow: "hidden" })}
    />
    );
    };

    export default ImageHoverZoom;
  • 创建一个自定义 css 类并将其应用于 img 元素。

  • 索引.css:
    .hover-zoom {
    overflow: hidden;
    }

    .hover-zoom img {
    transition: all 0.3s ease 0s;
    width: 100%;
    }

    .hover-zoom img:hover {
    transform: scale(1.25);
    }
    imageHoverZoom.jsx:
    import React from "react";

    const ImageHoverZoom = ({ imagePath }) => {
    return (
    <img
    src={imagePath}
    alt=""
    className="hover-zoom"
    />
    );
    };

    export default ImageHoverZoom;
  • 我还尝试了一个状态为
  • 的类组件
    import React, { Component } from "react";

    class ImageHoverZoom extends Component {
    state = {
    path: this.props.imagePath,
    mouseOver: false,
    };

    render() {
    const { path, mouseOver } = this.state;
    return (
    <img
    className={`img-fluid w-100`}
    src={path}
    onMouseOver={() => this.setState({ mouseOver: true })}
    onMouseOut={() => this.setState({ mouseOver: false })}
    style={
    mouseOver
    ? { transform: "scale(1.25)", overflow: "hidden"}
    : { transform: "scale(1)", overflow: "hidden"}
    }
    alt=""
    />
    );
    }
    }
    理想情况下,我不喜欢使用状态,因为我知道它是异步更新的,我觉得当鼠标悬停在图像上时,这会导致客户端出现一些滞后。非常感谢您的任何帮助,在此先感谢您!
    编辑:
    我在我的元素以及一个全新的元素中尝试了 Rahul 的回答。这是相关的(我认为)文件。和以前一样。鼠标悬停没有变化。
    应用程序.js
    import "./App.css";
    import ImageHoverZoom from "./common/imageHoverZoom";

    function App() {
    return <ImageHoverZoom imagePath="http://picsum.photos/400/600" />;
    }

    export default App;
    imageHoverZoom.jsx
    import React from "react";

    const ImageHoverZoom = ({ imagePath }) => {
    return (
    <div className="img-wrapper">
    <img src={imagePath} alt="" className="hover-zoom" />
    </div>
    );
    };
    export default ImageHoverZoom;
    索引.css
    .img-wrapper {
    overflow: hidden;
    }
    .hover-zoom img:hover {
    transform: scale(1.25);
    }

    最佳答案

    将 img 标签包裹在一个 div 中,然后从 div overflow hidden :

    const ImageHoverZoom = ({ imagePath }) => {
    return (
    <div className="img-wrapper">
    <img
    src={imagePath}
    alt=""
    className="hover-zoom"
    />
    </div>
    );
    };
    export default ImageHoverZoom;
    将样式添加到 img-wrapper:
    .img-wrapper{
    overflow:hidden;
    }
    img.hover-zoom:hover {
    transform: scale(1.25);
    }

    关于javascript - 放大图像同时保持鼠标悬停尺寸的 React 组件 - React + Bootstrap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63174257/

    33 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com