【问题标题】:Velocity.js - triggering animationsVelocity.js - 触发动画
【发布时间】:2016-09-23 15:06:52
【问题描述】:

我目前正在尝试摆脱一堆 CSS 动画并替换为 Velocity.js(在构建新动画的过程中)。

目前我有一个网格Item:

<div class="video-thumbnail">
  <img src="http://placehold.it/1280x720" class="imgspacer" alt="{$info['title']}" />
  <div class="overlay">
    <a href="http://bbc.co.uk" class="thumbnail-link">
      <div class="title">
        <div class="title-display">
          <h5 class="SlideIn">Title One</h5>
          <h6 class="SlideIn">Title Two</h6>
        </div>
      </div>
    </a>
  </div>
</div>

这是通过 CSS 控制的,以淡入 .overlay 元素。然后我想做的是让h5h6 类滑入。

我写了以下代码:

$('.overlay').hover(function(){ 
    $(this).find('.SlideIn').velocity("transition.slideUpIn", {stagger: 100, duration: 500});
});

但似乎什么都没有发生。我对 Javascript 很陌生,所以我假设我在某个地方犯了一个愚蠢的错误,但无法弄清楚它是什么。

我在下面包含了完整的 sn-p,也可以在 here 找到它

$('.overlay').hover(function(){ 
	$(this).find('.SlideIn').velocity("transition.slideUpIn", {stagger: 100, duration: 500});
});
#thumbnail-array {
	width: 100%;
}

.gutter-sizer {
	width: 0.03%;
}

.video-thumbnail {
    position: relative;
    background-color: #777;
    overflow: hidden;
    line-height: 0px;
    margin: 0px;
}

.video {
   	position: absolute;
    margin-top: none;
    left: 0;
    right: 0;
    bottom: 0;
    padding: 0;
    width: 100%;
    height: 100%;
    z-index: 100;
    display: none;
}

.overlay {
    position: absolute;
    left: 0px;
    top: 0px;
    bottom: 0px;
    right: 0px;
    width: 100%;
    height: 100%;
    z-index: 50;
}


.thumbnail-link {
    display: table;
    width: 100%;
    height: 100%; /*important, forces to 100% height of parent*/
    opacity:0;
    -webkit-transition: opacity .5s ease;
    -moz-transition: opacity .25s ease;
    background: rgba(0, 0, 0, 0.5);
    color: #FFFFFF;
    text-decoration: none; 
}


.title {
    display: table-cell;
    vertical-align: middle;
    text-align: center;
    text-decoration: none;
    color: #FFFFFF;
    font-family: helvetica;
    width: 100%;
    line-height: 0px;
}

.title-display {
	display: block;
	width: 100%;
}

.video-thumbnail:hover .thumbnail-link {
    text-decoration: none;
    opacity:1;
}

.imgspacer {
	width: 100%;
    max-width:100%;
}

.picturehelper {
	display: inline-block;
}

.video-thumbnail:hover .video {
    display: inline;
}

h5 {
	display: inline-block;
	width: 100%;
    font-size: 2em;
    margin: 0px;
    padding: 0px;
    line-height: normal;
}

h6 {
	display: inline-block;
	width: 100%;
    font-size: 0.75em;
    letter-spacing: 0.3em;
    padding: 0px;
    margin: 0px;
    font-weight: 100;
    line-height: normal;
}
<script src="https://raw.githubusercontent.com/julianshapiro/velocity/master/velocity.min.js"></script>
<script src="https://raw.githubusercontent.com/julianshapiro/velocity/master/velocity.ui.js"></script>
<script src="https://raw.githubusercontent.com/julianshapiro/velocity/master/velocity.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="video-thumbnail">
  <img src="http://placehold.it/1280x720" class="imgspacer" alt="{$info['title']}" />
  <div class="overlay">
    <a href="http://bbc.co.uk" class="thumbnail-link">
      <div class="title">
        <div class="title-display">
          <h5 class="SlideIn">Title One</h5>
          <h6 class="SlideIn">Title Two</h6>
        </div>
      </div>
    </a>
  </div>
</div>

【问题讨论】:

  • 我想说你在find 声明中缺少一个句点,应该是$(this).find('.SlideIn')
  • 很好看。修复了这个问题,但脚本仍然没有乐趣
  • 看看错误控制台。您应该看到速度脚本没有加载。尝试在本地托管速度 javascript 文件,这些 githubusercontent 链接并不意味着被热链接到。我尝试通过将脚本直接复制并粘贴到脚本部分中来将脚本内联到代码 sn-p 中,并且它开始按预期工作。
  • 是的,你需要先加载 jquery,然后是速度,然后是 velocity.ui,如果你在 jsfidle 上的那个 orden 中添加它们,你将正常工作

标签: javascript jquery velocity.js


【解决方案1】:

正如@AldoRomo88 和@jmcgriz 所述,页面上脚本的加载顺序存在问题。

我通过简单地首先加载查询(并将脚本托管在我自己的服务器上!)解决了这个问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-26
    • 2018-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-08
    • 1970-01-01
    相关资源
    最近更新 更多