我正在制作这个圆形向下滚动按钮,里面有一个箭头.在hover上,我想应用一个动画,使箭头从圆形div的上方移动到下方,当它位于div之外时,应该将其隐藏.

代码:https://codepen.io/RaphaelleD/pen/vYpqxpm

@keyframes tipUp {
  0% {
    transform: translateY(-10px) rotateZ(225deg);
  }
  100% {
    transform: translateY(100px) rotateZ(225deg);
  }
}

@keyframes lineUp {
  0% {
    transform: translateY(-10px);
  }
  100% {
    transform: translateY(100px);
  }
}

.scrolldown {
  position: relative;
  margin: 0 auto;
 }
  
.scrolldown p {
    font-size: 1rem;
    font-weight: 600;
    padding-bottom: 0.8rem;
    text-align: center;
  }
 
 .scrolldown__arrow {
    width: 6rem;
    height: 6rem;
    border: 6px solid black;
    border-radius: 50%;
    margin: 0 auto;
    overflow: hidden;
  }
  
 .scrolldown__arrow:before {
    position: absolute;
    display: inline-block;
    content: "";
    background: black;
    width: 10px;
    height: 45px;
    top: 50%;
    left: 50%;
    margin-top: -50px;
    margin-left: -5px;
    transform: translateY(50px);
  }
 
 .scrolldown__arrow:after {
    position: absolute;
    display: inline-block;
    content: "";
    width: 22px;
    height: 22px;
    color: black;
    border-top: 9px solid;
    border-left: 9px solid;
    transform: rotateZ(45deg);
    top: 50%;
    left: 50%;
    margin-top: -30px;
    margin-left: -15.5px;
    transform: translateY(50px) rotateZ(225deg);
  }
 
.scrolldown__arrow:hover:before {
      animation: lineUp 1s cubic-bezier(0, 0.6, 1, 0.4) infinite 0.5s;
    }

.scrolldown__arrow:hover:after {
      animation: tipUp 1s cubic-bezier(0, 0.6, 1, 0.4) infinite 0.5s;
    }
  }
}
<body>

  <div class="scrolldown">
    <p>SCROLL DOWN</p>
    <div class="scrolldown__arrow"></div> 
  </div>

</body>

推荐答案

我相信这是因为position: absolute,它使箭头脱离了正常的流动.为了在流程中保留它,我在arrow父级中添加了position: relative,并且还必须调整顶部位置,似乎按照预期工作:

@keyframes tipUp {
  0% {
    transform: translateY(-10px) rotateZ(225deg);
  }
  100% {
    transform: translateY(100px) rotateZ(225deg);
  }
}

@keyframes lineUp {
  0% {
    transform: translateY(-10px);
  }
  100% {
    transform: translateY(100px);
  }
}

.scrolldown {
  position: relative;
  margin: 0 auto;
 }
  
.scrolldown p {
    font-size: 1rem;
    font-weight: 600;
    padding-bottom: 0.8rem;
    text-align: center;
  }
 
 .scrolldown__arrow {
    width: 6rem;
    height: 6rem;
    border: 6px solid black;
    border-radius: 50%;
    margin: 0 auto;
    overflow: hidden;
    position: relative;
  }
  
 .scrolldown__arrow:before {
    position: absolute;
    display: inline-block;
    content: "";
    background: black;
    width: 10px;
    height: 45px;
    top: 25%;
    left: 50%;
    margin-top: -50px;
    margin-left: -5px;
    transform: translateY(50px);
  }
 
 .scrolldown__arrow:after {
    position: absolute;
    display: inline-block;
    content: "";
    width: 22px;
    height: 22px;
    color: black;
    border-top: 9px solid;
    border-left: 9px solid;
    transform: rotateZ(45deg);
    top: 25%;
    left: 50%;
    margin-top: -30px;
    margin-left: -15.5px;
    transform: translateY(50px) rotateZ(225deg);
  }
 
.scrolldown__arrow:hover:before {
      animation: lineUp 1s cubic-bezier(0, 0.6, 1, 0.4) infinite 0.5s;
    }

.scrolldown__arrow:hover:after {
      animation: tipUp 1s cubic-bezier(0, 0.6, 1, 0.4) infinite 0.5s;
    }
  }
}
<body>

  <div class="scrolldown">
    <p>SCROLL DOWN</p>
    <div class="scrolldown__arrow"></div> 
  </div>

</body>

Html相关问答推荐

HTML横幅未正确对齐页面顶部

一次悬停可触发同一分区中的另一次悬停

html中背景色的全单元格R中的Rmarkdown表

仅包含名为X的子元素的元素的XPath?

为什么前端框架可以创建自定义属性,而我却被期望在挖掘之前添加数据

水平卷轴的内容保持堆叠

使用单个粗体字符串向段落添加页边空白

在移动屏幕上显示时分支树视图的响应能力问题

如何在悬停时使用 CSS 更改许多同级元素

使用 Thymeleaf 将图像水平居中

Tailwind:父母动态适应子元素的身高

如何在 Flex 对齐内容框下显示隐藏按钮和文本

如何将某些 div 的高度限制为具有 display flex 行的同一父 div 中的其他 div?

如何让 backdrop-filter: blur() 效果在 iOS 上运行?

font awesome 的 CDN/CSS 如何工作?

项目的水平列表:倒数第二个项目居中,而最后一个项目占据所有剩余空间

使用 bootstrap-icons 的未排序图标堆栈

沿文本对齐双引号

将固定/绝对伪元素放置在相对 div(具有滚动条)内,始终位于底部

在 html css 选项卡的顶部显示图像