css - React 在鼠标悬停时添加图像,平滑过渡

标签 css reactjs css-transitions

问题描述

我试图找到一种方法,每当鼠标进入 div 时,图像就会逐渐出现,而当鼠标离开时,图像也会慢慢消失。

function App() {
    const imagePath = 'https://via.placeholder.com/100';
    const [showImage, setShowImage] = React.useState(false);

    return (
       <div className="container"
            onMouseEnter={() => setShowImage(true)}
            onMouseLeave={() => setShowImage(false)}
            style={ {backgroundImage: showImage ? `url(${imagePath})` : `none` }}>
        
       </div>
    )
}

ReactDOM.render(<App />, document.querySelector("#app"));
.container{
   background-color: orange;
   width: 100px;
   height: 100px;
   animation-duration: 0.75s;
   transition: all 0.5s;
}
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/17.0.1/umd/react.production.min.js"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/17.0.1/umd/react-dom.production.min.js"></script>
  <div id="app"></div>


我尝试过的

  • 我尝试将 all 前缀添加到 css 中的过渡属性中,但这不起作用。
  • 我尝试在网上寻找解决方案,但似乎找不到解决方法,这让我认为如果涉及图像出现/消失,则有一种特殊的方法可以实现此目的。

有人知道我该如何解决这个问题吗?

最佳答案

我刚刚更改了 div background-image要添加的属性<img> div 内的标签和标签上定义的过渡,默认状态为 false,因此在 mouseenter 状态后不透明度为 0(零) true然后opacity:1 .

希望下面的代码片段能够对您有所帮助。

function App() {
    const imagePath = 'https://via.placeholder.com/100';
    const [showImage, setShowImage] = React.useState(false);

    return (
        <div className="container"
            onMouseEnter={() => setShowImage(true)}
            onMouseLeave={() => setShowImage(false)}>
            <img src={imagePath} alt="hover image" style={{ opacity: showImage ? 1 : 0 }}/>
        </div>
    )
}

ReactDOM.render(<App />, document.querySelector("#app"));
.container{
   background-color: orange;
   width: 100px;
   height: 100px;
   position: relative;
}
.container img{
    position: absolute;
    width: 100%;
    height: 100%;
    object-fit: cover;
    left: 0;
    top: 0;
    transition: 0.5s;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/17.0.1/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/17.0.1/umd/react-dom.production.min.js"></script>
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>

<div id="app"></div>

关于css - React 在鼠标悬停时添加图像,平滑过渡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71963170/

相关文章:

html - 悬停时淡出动态内容

javascript - 如何在 React Native 中更改按钮的颜色?

css - 使用滚动条创建 iframe 区域

javascript : . css jquery 视频反转

html - 有没有办法修复导航选项卡的位置

javascript - 如何正确处理对的数据类型切换

javascript - 将变量从输入传递到 GraphQL 搜索调用

reactjs - 绕过 React 组件中的获取调用

html - 如何使用 CSS 过渡从导航栏下方滑出子菜单?

javascript - 如何为文本设置动画,使其在使用 SVG 的文本路径时不旋转?