如何实现悬停.product-wrapper容器时,内部元素持续触发动画?
解决悬停容器时内部元素动画失效的问题
问题核心是当前图片动画仅在自身被悬停时触发,且部分逻辑导致容器悬停状态下子元素悬停时动画异常,调整方案如下:
修改后的CSS代码
.product-wrapper{ width: 270px; height: auto; margin-bottom: 8px; overflow: hidden; position: relative; border: 1px solid #9999; } .product-wrapper>img{ width: 100%; height: 180px; margin: 0 auto; transition: transform .5s; /* 动画过渡 */ } /* 改为容器悬停时触发图片缩放 */ .product-wrapper:hover > img{ transform: scale(1.5); } .product-wrapper .title{ background-color: #9999; border-top: 1px solid #fff; border-bottom: 1px solid #fff; color: #fff; opacity: 0; position: absolute; top: 0; left: 0; width: 100%; padding: 8px; text-align: center; z-index: 1; font-size: 20px; transition: .3s ease; } .product-wrapper:hover .title{ opacity: 1; top: 10%; box-shadow:0 0 0 200vmax rgba(0,0,0,.2); } .product-wrapper>a { cursor: pointer; background-color: #9999; color: #fff; padding: 10px; border: 1px solid #fff; opacity: 0; position: absolute; bottom: 0; left: 50%; transform: translate(-50%, -50%); -ms-transform: translate(-50%, -50%); text-align: center; transition: .5s ease; z-index: 2; } .product-wrapper:hover a{ opacity: 1; bottom: 5%; } .product-wrapper>div { background-color: #9999; color: #fff; padding: 10px; text-align: center; z-index: 2; position: absolute; bottom: 0; left: 0px; width: 100%; border-top: 1px solid #fff; /* 添加初始过渡,确保恢复动画平滑 */ transition: .5s ease; } .product-wrapper:hover div{ opacity: 0; bottom: 30%; }
关键修改说明
- 将
product-wrapper>img:hover改为product-wrapper:hover > img:让图片缩放动画在容器整体悬停时触发,而非仅图片自身被悬停时。 - 给
.product-wrapper>div补充初始transition属性:保证该元素在容器退出悬停时的恢复过程有平滑动画。
修改完成后,只要鼠标悬停在.product-wrapper容器或其任意子元素上,所有内部元素的动画都会持续生效,不会出现悬停子元素时动画失效的问题。
内容的提问来源于stack exchange,提问作者Mohamed Abuelatta
相关产品推荐
相关产品推荐

