css - 如何动画CSS伪类

标签 css

<分区>


想改进这个问题吗? 通过 editing this post 添加细节并澄清问题.

关闭 4 年前

你能告诉我如何为伪类设置动画:after 和:before,所以第一个是:after 和然后:before。我正在尝试使用动画延迟,但它无法正常工作。

代码:

   .front {
      transform-style: preserve-3d;
      width: 108px;
      height: 100px;
      background: blue;
      position: absolute;
      left: 180px;
      top: 160px;
      margin: 4px 0 0 12px;
      cursor: pointer;
    }                  
    .front:before {
      content: "";

      position: absolute;
      top: 15px;
      bottom: 0;
      left: 18px;
      right: 0;
      z-index: 2;
      background: url("https://appspowerplaymanager.vshcdn.net/images/biathlonmania/events/akropolis/lucky-pick/bg-lucky-pick-cancel-before.png") left top no-repeat;
      animation: crossHeight 0.5s;
     // animation-delay: 1s;
    }
    .front:after {
      content: "";

      position: absolute;
      top: 15px;
      bottom: 0;
      left: 18px;
      right: 0;
      z-index: 2;
      background: url("https://appspowerplaymanager.vshcdn.net/images/biathlonmania/events/akropolis/lucky-pick/bg-lucky-pick-cancel-after.png") left top no-repeat;
      animation: crossHeight 0.5s;
      //animation-delay: 2s;
    }

    @keyframes crossHeight {
      @for $x from 1 through 100 {
        #{$x * 1%} {
          height: ($x) * 1%;
        } 
      }
    }

https://jsfiddle.net/jdk14vh5/2/

最佳答案

您正在设置高度动画,并且您还定义了 bottom:0,这是造成问题的原因。改为为底部设置动画,并使用带动画的前进来保持最后的状态:

.front {
  transform-style: preserve-3d;
  width: 108px;
  height: 100px;
  background: blue;
  position: absolute;
  left: 180px;
  top: 30px;
  margin: 4px 0 0 12px;
  cursor: pointer;
}				   
.front:before {
  content: "";
  position: absolute;
  top: 15px;
  left: 18px;
  right: 0;
  z-index: 2;
  background: url("https://appspowerplaymanager.vshcdn.net/images/biathlonmania/events/akropolis/lucky-pick/bg-lucky-pick-cancel-before.png") left top no-repeat;
  animation: crossHeight 0.5s forwards;
  animation-delay: 2s;
}
.front:after {
  content: ""; 
  position: absolute;
  top: 15px;
  left: 18px;
  right: 0;
  z-index: 2;
  background: url("https://appspowerplaymanager.vshcdn.net/images/biathlonmania/events/akropolis/lucky-pick/bg-lucky-pick-cancel-after.png") left top no-repeat;
  animation: crossHeight 0.5s forwards;
  animation-delay: 1s;
}

@keyframes crossHeight {
  from {
    bottom:100%;
  }
  to {
    bottom:0;
  }
}
<div class="front"></div>

关于css - 如何动画CSS伪类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51397056/

上一篇:html - 为什么添加 border-radius 会将图片向左推?

下一篇:javascript - 菜单打开后H1不隐藏

相关文章:

html - 如何使用响应式 CSS 更改 HTML div 的顺序?

CSS Perspective 不适用于 body

javascript - 创建全屏弹出窗口并更新滚动条

html - 如何使网站上的文字看起来是手写的,但不可读

css - CSS解析错误会不会导致生产环境出现问题?

html - anchor 标签可点击区域大于图像内部

CSS Chrome 问题

css - 是否有针对 IE8 的 calc() 的纯 CSS 回退

html - 如何使用CSS恢复溢出滚动行为

html - Bootstrap 下拉菜单出现在其他 DIV 的后面