【发布时间】:2020-02-20 20:25:44
【问题描述】:
我的组件中有这个渲染代码(这会渲染一个由li 元素组成的无序列表,每个元素都有自己的图像):
<div className="thumbnail-photos-wrapper">
{spot.thumbnail_image_urls ? spot.thumbnail_image_urls.map(url =>
<div className="thumbnail-image-wrapper">
<img src={url} alt="Thumbnail photo" />
</div>) : ''}
</div>
当我将鼠标悬停在其中一张图片上时,我希望其他图片显示为灰色。我找到了关于使整个背景变灰/变黑的解决方案,但这并不是我所需要的;我只希望没有悬停的图像变灰。
我还了解到,在 JS/React 应用程序中使用状态与 HTML 元素进行交互会更好,但是,我认为这行不通。如果我在上面的渲染代码中有依赖于切换状态的动态 HTML 类,它将在重新渲染时切换所有类名(如果状态为真或假,则有效地更改图像包装器的所有类名;我只想要更改非悬停图像的外观!)。
我也想过做这样的事情:
<div className="thumbnail-photos-wrapper">
{spot.thumbnail_image_urls ? spot.thumbnail_image_urls.map(url =>
<div className="thumbnail-image-wrapper">
<div className="overlay-wrapper"></div>
<img src={url} alt="Thumbnail photo" />
</div>) : ''}
</div>
我有一个单独的 div 来保存叠加层。我在想我可以让这个overlay-wrapper 最初有一个display: none(或其他类似的东西),然后当用户将鼠标悬停在图像上时,它就会变得可见。但是,我相信这也会在悬停的图像上叠加,这不是我想要的。
感谢您的帮助!
【问题讨论】:
-
根据您对所需行为的描述,人们可能会得出结论,当指针不在任一图像顶部时,所有应该变灰出去。因此,公认的解决方案无法满足该部分。如果您对 React 解决方案感兴趣(这将不依赖于动态类并且非常接近您的尝试),您可以查看 following post。
标签: javascript html css reactjs