HTML5-SVG响应式路径过渡动画幻灯片特效

这是一款基于HTML5 SVG制作的路径过渡动画幻灯片特效。该幻灯片特效使用SVG路径来剪裁幻灯片中的图片,制作出幻灯片切换时不规则的图形变换效果。

使用方法

HTML结构

该幻灯片特效的HTML结构由包含幻灯片的无序列表ul.cd-slider和两个作为导航的有序列表元素ul.cd-slider-navigationol.cd-slider-controls组成。

ul.cd-slider元素中列表项由一个SVG <clipPath>元素(用于改变图片的裁剪区域)和一个<image>元素组成。

<div class="cd-slider-wrapper">
  <ul class="cd-slider" data-step1="M1402,800h-2V0.6c0-0.3,0-0.3,0-0.6h2v294V800z" data-step2="M1400,800H383L770.7,0.6c0.2-0.3,0.5-0.6,0.9-0.6H1400v294V800z" data-step3="M1400,800H0V0.6C0,0.4,0,0.3,0,0h1400v294V800z" data-step4="M-2,800h2L0,0.6C0,0.3,0,0.3,0,0l-2,0v294V800z" data-step5="M0,800h1017L629.3,0.6c-0.2-0.3-0.5-0.6-0.9-0.6L0,0l0,294L0,800z" data-step6="M0,800h1400V0.6c0-0.2,0-0.3,0-0.6L0,0l0,294L0,800z">
    <li class="visible">
      <div class="cd-svg-wrapper">
        <svg viewBox="0 0 1400 800">
                    <title>Aimated SVG</title>
          <defs>
            <clipPath id="cd-image-1">
              <path id="cd-changing-path-1" d="M1400,800H0V0.6C0,0.4,0,0.3,0,0h1400v294V800z"/>
            </clipPath>
          </defs>
          
          <image height='800px' width="1400px" clip-path="url(#cd-image-1)" xlink:href="img/img-1.jpg"></image>
        </svg>
      </div> <!-- .cd-svg-wrapper -->
    </li>
 
    <li>
      <div class="cd-svg-wrapper">
        <svg viewBox="0 0 1400 800">
          <!-- svg content here -->
        </svg>
      </div> <!-- .cd-svg-wrapper -->
    </li>
 
    <!-- other list items here -->
    
  </ul> <!-- .cd-slider -->
 
  <ul class="cd-slider-navigation">
    <li><a href="#0" class="next-slide">Next</a></li>
    <li><a href="#0" class="prev-slide">Prev</a></li>
  </ul> <!-- .cd-slider-navigation -->
 
  <ol class="cd-slider-controls">
    <li class="selected"><a href="#0"><em>Item 1</em></a></li>
    <li><a href="#0"><em>Item 2</em></a></li>
    <!-- other list items here -->
  </ol> <!-- .cd-slider-controls -->
</div> <!-- .cd-slider-wrapper -->
CSS样式

所有的幻灯片slide都设置透明度为0,使用绝对定位,使它们逐个堆叠在一起(使用top: 0 和 left:0)。当前被选择的幻灯片会被添加.visible class使其变为可见。在剪裁动画被执行的时候,列表项会被添加.is-animating class。

注意,特效中使用了Padding Hack来使SVG具有响应式效果(在IE中如果你不明确指定SVG的高度,它会被设置为150px)。在特效中设置div.cd-svg-wrapper的高度为0,padding-bottom为57.15%(为了保持SVG的比例,这里是800/1400),并设置SVG 的宽度和高度为100%。

.cd-slider > li.visible {
  position: relative;
  z-index: 2;
  opacity: 1;
}
.cd-slider > li.is-animating {
  z-index: 3;
  opacity: 1;
}
.cd-slider .cd-svg-wrapper {
  /* using padding Hack to fix bug on IE - svg height not properly calculated */
  height: 0;
  padding-bottom: 57.15%;
}
.cd-slider svg {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}               
JAVASCRIPT

为了制作幻灯片图片剪裁区域动画,特效中动画<clipPath>中的<path>元素的d属性

当路径定义完成后,特效中在.cd-slider元素上添加data-stepn属性,它等于d属性中定义的路径。

特效中使用Snap.svganimate()方法来制作SVG路径动画

clipPath.attr('d', path1).animate({'d': path2}, duration, firstCustomMinaAnimation, function(){
  clipPath.animate({'d': path3}, duration, secondCustomMinaAnimation, function(){
    oldSlide.removeClass('visible');
    newSlide.addClass('visible').removeClass('is-animating');
  });
});               

另外,这个幻灯片特效可以使用移动触摸或键盘来控制幻灯片的切换。

在线预览 网盘下载

网盘下载密码:quhx

郑重声明:

1 本资源来源于互联网,资源的版权归资源原作者所持有,受《中华人民共和国著作权法》等相关法律保护。

2 由于无法和原作者取得联系,所以上传的部分资源无法先通过原作者的同意就分享给大家了,如本资源侵犯了您(原作者)的权益,请联系我们(微信号 xiaohaimei1989),我们会立马删除您的资源,并向您表达诚挚的歉意!

3 本站是一个公益型网站,分享资源的目的在于传播知识,分享知识,收取一点点打赏的辛苦费是用于网站的日常运营开支,并非用于商业用途。

4 本站资源只提供学习和参考研究使用,使用过后请在第一时间内删除。本站不承担资源被单位或个人商用带来的法律责任。

发表评论