【问题标题】:Animation offset动画偏移
【发布时间】:2015-06-25 19:51:24
【问题描述】:

我正在尝试使用Animate.css 提供的动画制作一个向上滑动到视图中的分隔线,特别是使用fadeInUp 动画。

但是,分隔线并没有真正“滑入”视图,而只是淡入。您可以在JSFiddle 中看到它的可视化效果。

有什么办法可以抵消分隔线动画,使其从较低点开始并实际向上滑动,而不是简单地淡入特定位置?

HTML:

<h1 class="animated fadeInUp">Text text text</h1>
<div class="divider animated fadeInUp"></div>

CSS:

h1 {
  text-align: center;
}

.divider {
  background-color: #808082;
  height: 2px;
  width: 80px;
  margin: 30px auto;
  -webkit-animation-delay: .5s;
  animation-delay: .5s;
}

.animated {
  -webkit-animation-duration: 1s;
  animation-duration: 1s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
}

@-webkit-keyframes fadeInUp {
  0% {
    opacity: 0;
    -webkit-transform: translate3d(0, 100%, 0);
            transform: translate3d(0, 100%, 0);
  }

  100% {
    opacity: 1;
    -webkit-transform: none;
    transform: none;
  }
}

@keyframes fadeInUp {
  0% {
    opacity: 0;
    -webkit-transform: translate3d(0, 100%, 0);
    transform: translate3d(0, 100%, 0);
  }

  100% {
    opacity: 1;
    -webkit-transform: none;
     transform: none;
  }
}

.fadeInUp {
  -webkit-animation-name: fadeInUp;
   animation-name: fadeInUp;
}

【问题讨论】:

    标签: html css animation css-animations


    【解决方案1】:

    另一种方法是使用:pseudo元素:after添加分隔符

    演示 - http://jsfiddle.net/victor_007/tq2qpgyp/4/

    h1:after {
        content:'';
        background-color: #808082;
        height: 2px;
        width: 80px;
        display:block;
        margin: 30px auto;
    }
    

    h1 {
      text-align: center;
    }
    h1:after {
      content: '';
      background-color: #808082;
      height: 2px;
      width: 80px;
      display: block;
      margin: 30px auto;
    }
    .animated {
      -webkit-animation-duration: 1s;
      animation-duration: 1s;
      -webkit-animation-fill-mode: both;
      animation-fill-mode: both;
    }
    @-webkit-keyframes fadeInUp {
      0% {
        opacity: 0;
        -webkit-transform: translate3d(0, 100%, 0);
        transform: translate3d(0, 100%, 0);
      }
      100% {
        opacity: 1;
        -webkit-transform: none;
        transform: none;
      }
    }
    @keyframes fadeInUp {
      0% {
        opacity: 0;
        -webkit-transform: translate3d(0, 100%, 0);
        transform: translate3d(0, 100%, 0);
      }
      100% {
        opacity: 1;
        -webkit-transform: none;
        transform: none;
      }
    }
    .fadeInUp {
      -webkit-animation-name: fadeInUp;
      animation-name: fadeInUp;
    }
    &lt;h1 class="animated fadeInUp"&gt;Text text text&lt;/h1&gt;

    【讨论】:

      【解决方案2】:

      一种方法:为分隔线添加边框

      Updated fiddle

      .divider {
        background-color: #808082;
        height: 2px;
        width: 80px;
        margin: 10px auto 30px;
        -webkit-animation-delay: .5s;
        animation-delay: .5s;
        border-top: 20px solid white; /* <--- added */
      }
      

      h1 {
        text-align: center;
      }
      .divider {
        background-color: #808082;
        height: 2px;
        width: 80px;
        margin: 10px auto 30px;
        -webkit-animation-delay: .5s;
        animation-delay: .5s;
        border-top: 20px solid white;
      }
      .animated {
        -webkit-animation-duration: 1s;
        animation-duration: 1s;
        -webkit-animation-fill-mode: both;
        animation-fill-mode: both;
      }
      @-webkit-keyframes fadeInUp {
        0% {
          opacity: 0;
          -webkit-transform: translate3d(0, 100%, 0);
          transform: translate3d(0, 100%, 0);
        }
        100% {
          opacity: 1;
          -webkit-transform: none;
          transform: none;
        }
      }
      @keyframes fadeInUp {
        0% {
          opacity: 0;
          -webkit-transform: translate3d(0, 100%, 0);
          transform: translate3d(0, 100%, 0);
        }
        100% {
          opacity: 1;
          -webkit-transform: none;
          transform: none;
        }
      }
      .fadeInUp {
        -webkit-animation-name: fadeInUp;
        animation-name: fadeInUp;
      }
      <h1 class="animated fadeInUp">Text text text</h1>
      <div class="divider animated fadeInUp"></div>

      【讨论】:

        【解决方案3】:

        尝试像这样使用 css 的:after 属性..

        你可以在content:'';写任何东西

        这是special character library

        h1 {
            display:inline-block;
            position:relative;
        }
        
        h1:after{
            content:'\2014\2014\2014';
            position:absolute;
            bottom:-25px;
            left:50px;
            word-spacing: 30px;
            
        }
        
        .animated {
          -webkit-animation-duration: 1s;
          animation-duration: 1s;
          -webkit-animation-fill-mode: both;
          animation-fill-mode: both;
        }
        
        @-webkit-keyframes fadeInUp {
          0% {
            opacity: 0;
            -webkit-transform: translate3d(0, 100%, 0);
                    transform: translate3d(0, 100%, 0);
          }
        
          100% {
            opacity: 1;
            -webkit-transform: none;
                    transform: none;
          }
        }
        
        @keyframes fadeInUp {
          0% {
            opacity: 0;
            -webkit-transform: translate3d(0, 100%, 0);
                    transform: translate3d(0, 100%, 0);
          }
        
          100% {
            opacity: 1;
            -webkit-transform: none;
                    transform: none;
          }
        }
        
        .fadeInUp {
          -webkit-animation-name: fadeInUp;
                  animation-name: fadeInUp;
        }
        &lt;h1 class="animated fadeInUp"&gt;Text text text&lt;/h1&gt;

        【讨论】:

          猜你喜欢
          • 2016-06-05
          • 2015-11-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-06-20
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多