You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在hover父容器folder-div时触发folder图标动画?

解决方案

要实现鼠标悬停在父容器.folder-div上时触发子元素.folder的动画,只需要在现有CSS中添加针对父容器hover状态下子元素的样式规则,和原有的.folder:hover效果保持一致即可:

:root {
    --folder-size: 80px;
    --folder-color: lightblue;
    --folder-radius: 8px;
    --folder-shadow: 3px 5px 5px 0px rgb(37 37 37 / 75%);
}
.folder {
    width: var(--folder-size);
    height: calc(var(--folder-size) * 0.6);
    background-color: var(--folder-color);
    border-radius: var(--folder-radius);
    position: relative;
    border-top-left-radius: 0;
    cursor: pointer;
    transition: width .3s .3s, height .3s .3s;
    margin-top: 10px;
}
.folder, .folder::before{
    box-shadow: var(--folder-shadow);
    -webkit-box-shadow: var(--folder-shadow);
    -moz-box-shadow: var(--folder-shadow);
}
.folder::before, .folder::after {
    position: absolute;
    content: '';
    background-color: var(--folder-color);
}
.folder::before {
    width: calc(var(--folder-size) / 3);
    height: calc(var(--folder-size) / 10);
    top: calc(0px - (var(--folder-size) / 10 / 1.5));
    border-top-left-radius: var(--folder-radius);
    border-top-right-radius: var(--folder-radius);
    z-index: -1;
    transition: width .3s .3s, height .3s .3s, top .3s .3s;
}
.folder::after {
    background-color: lightblue;
    width: 100%;
    height: 100%;
    border-radius: var(--folder-radius);
    transform-origin: bottom right;
    transition: transform .3s;
}
/* 保留原有的hover效果 + 添加父容器hover时的效果 */
.folder:hover::after,
.folder-div:hover .folder::after {
    transform: skew(-10deg) scaleY(.85);
}
.feuille {
    width: 100%;
    height: 100%;
    background-color: white;
    position: absolute;
    border-radius: var(--folder-radius);
    transform: scaleX(.95) scaleY(.8);
    transform-origin: bottom;
    transition: transform .3s;
    opacity: 0;
}
/* 保留原有的hover效果 + 添加父容器hover时的效果 */
.folder:hover > .feuille,
.folder-div:hover .folder > .feuille {
    transform: scaleX(.95) scaleY(.95);
    opacity: 1;
}
.folder-div {
    background: lightgreen;
    height: 100px;
    width: 130px;
}

对应的HTML代码无需修改:

<div class="folder-div" style="">
    <div class="folder">
        <div class="feuille"></div>
    </div>
    <a href="#">Sample Link </a>
</div>
<div class="folder-div">
    <div class="folder">
        <div class="feuille"></div>
    </div>
    <a href="#">Sample Link </a>
</div>
<div class="folder-div">
    <div class="folder">
        <div class="feuille"></div>
    </div>
    <a href="#">Sample Link </a>
</div>
<div class="folder-div">
    <div class="folder">
        <div class="feuille"></div>
    </div>
    <a href="#">Sample Link </a>
</div>

原理说明

通过CSS的后代选择器,当.folder-div处于hover状态时,选中其内部的.folder元素,为它的伪元素::after和子元素.feuille应用和直接hover.folder时完全相同的样式,从而实现鼠标悬停在整个容器上时触发文件夹动画的效果。

内容的提问来源于stack exchange,提问作者Sunjid Shibly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 00:27:49