【问题标题】:CSS animation relative to current screen position相对于当前屏幕位置的 CSS 动画
【发布时间】:2020-05-11 09:08:03
【问题描述】:

我正在尝试在我的应用程序上实现一些 CSS 关键帧动画,这些动画会在不同的事件上触发。
动画包括一只独角兽从屏幕底部飞起来,在中间停了一秒钟,然后向上移出屏幕。
当不同用户在页面上的内容数量不同时,就会出现问题,从而使页面高度变大。

我希望动画相对于用户的位置停止一秒钟,在用户视图的中间,而不是相对于页面高度。

这是我目前的代码:

 <img src="../***" v-if="aCounter === 1" class="unicornUp" alt="Unicorn"> 

.unicornUp {
  position:absolute;

  width:50%;
  height:50%;
  right:20%;
  opacity: 0;
  z-index:99;
  animation-name: unicornMoveUp;
  animation-duration: 3s;
   -webkit-animation-timing-function: linear;
  animation-timing-function: linear;
  animation-iteration-count: 1;
  animation-delay: 0.5s;
}
@keyframes unicornMoveUp {
  from { bottom: 0; opacity: 1;}
  20% {bottom:20%;opacity: 1;transform: rotate(5deg);}
  40% {bottom: 50%;opacity: 1;}
  60% {bottom: 50%;opacity: 1; transform: rotate(-5deg);}
  80% {bottom: 60%; opacity: 1;}
  100% {bottom: 90%; opacity: 0;}
}

我一直在考虑一个粘性父 div,但我不确定这是否正确以及从哪里开始。
任何帮助将不胜感激!

【问题讨论】:

  • 尝试使用 'vh' 和 'vw' css 单位而不是 '%'
  • 那是我尝试的最后一件事,没有得到更好的结果。我会以某种方式需要让动画 svg 从我认为的滚动位置开始?

标签: javascript html css css-animations keyframe


【解决方案1】:

试试position: fixed,而不是position: absolute,它是相对于整个文档,fixed是相对于视口,即屏幕

【讨论】:

  • 很高兴能帮上忙!!我们都是一群菜鸟,我们越是意识到这一点,我们就越擅长学习,这就是邓宁-克鲁格效应!
猜你喜欢
  • 1970-01-01
  • 2017-01-30
  • 2014-11-20
  • 2018-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-23
  • 2019-04-26
相关资源
最近更新 更多