transform—切割轮播图

代码链接:https://pan.baidu.com/s/1f_Fyv9xykKXtEL7rGx1QlQ 密码:bn39

效果演示:

1、结构分析

第一步:在一个div里面有显示图片的ul标签(1个)和左右切换的a标签(2个);

第二步:ul标签中有5个li标签,li标签浮动,每个li标签的宽度占ul宽度的五分之一,高度为100%,每一个li标签都有4个span标签,span和li的宽高相等,span标签代表li标签的上下前后4个面,设置每一个span的背景图片,每个span标签都显示图片的五分之一。

每一个li的样式:

5个li标签浮动组成的样式(我只画了一个右边完全的li标签样式):

第三步:给a标签设置宽高并且定位到合适的位置,

第四步:js注册给a标签注册点击事件:先在点击事件外设置索引值,例如:index=0;

然后在点击事件里面,通过jQuery插件,获取li标签$(‘ul li‘),给li标签添加过渡效果{‘transition‘:‘all 1s‘};其中all代表:{‘transform‘:‘rotateX( ‘+ angel +‘deg)‘},并且调用each(function(i,e){})函数,设置从左到右的每一个li标签的过渡效果延时0.5 * i s。

each(function(i,e){
        var delay = 0.5 * i;
        $(this).css({‘transition‘:delay + ‘s‘});
});

2、代码实现

第一步,创建标签

  <div class="box">
    <ul>
      <li><span></span><span></span><span></span><span></span></li>
      <li><span></span><span></span><span></span><span></span></li>
      <li><span></span><span></span><span></span><span></span></li>
      <li><span></span><span></span><span></span><span></span></li>
      <li><span></span><span></span><span></span><span></span></li>
    </ul>
    <a href="javascript:;" class="prev"> &lt; </a>
    <a href="javascript:;" class="next"> &gt; </a>
  </div>

第二步,设置CSS样式

  <style>
     // 设置盒子居中,并且定位
    .box {
      margin: 100px auto;
      width: 600px;
      height: 380px;
      position: relative;
    }
    // 清除ul,li默认值
    ul,li {
      margin: 0;
      padding: 0;
    }
    // 设置ul绝对定位
    .box ul {
      position: absolute;
      width: 100%;
      height: 100%;
    }
    // 设置li标签的宽高,浮动标签在一行上显示,设置转换为立体效果transform-style: preserve-3d;
    .box ul li {
      float: left;
      list-style: none;
      width: 120px;
      height: 100%;
      position: relative;
      transform-style: preserve-3d;
    }
    // 设置左右a标签的样式,并且定位和合适位置
    .box>a {
      width: 30px;
      height: 50px;
      line-height: 50px;
      display: block;
      color: aliceblue;
      font-size: 30px;
      text-align: center;
      text-decoration: none;
      position: absolute;
      top: 160px;
      background-color: rgba(0, 0, 0, 0.6);
    }
    .box>a.prev {
      left: 0;
    }
    .box>a.next {
      right: 0;
    }
    // 设置每一个li标签里的span的大小和li标签一样大,
    .box li span {
      width: 100%;
      height: 100%;
      display: block;
      position: absolute;
      left: 0;
      top: 0px;
      background-repeat: no-repeat;
    }
    // 设置每一列span的背景图片的显示位置(每一个span占图片大小的五分之一,在每一列显示图片的不同位置,从而达到显示完整图片的作用)
    .box ul li:nth-child(1) span {
      background-position: 0 0;
    }
    .box ul li:nth-child(2) span {
      background-position: -120PX 0;
    }
    .box ul li:nth-child(3) span {
      background-position: -240px 0;
    }
    .box ul li:nth-child(4) span {
      background-position: -360px 0;
    }
    .box ul li:nth-child(5) span {
      background-position: -480px 0;
    }
    // 设置每一个li的第几个span为相同的背景图片
    // 注意:背景图片的尺寸必须和.box盒子一样大
    .box li span:nth-child(1) {
      background-image: url(‘./images/A.jpg‘);
      transform: rotateZ(190px);
    }
    .box li span:nth-child(2) {
      background-image: url(‘./images/N.jpg‘);
      transform: rotateX(90deg) translateZ(190px);
    }
    .box li span:nth-child(3) {
      background-image: url(‘./images/Q.jpg‘);
      transform: rotateX(180deg) translateZ(190px);
    }
    .box li span:nth-child(4) {
      background-image: url(‘./images/S.jpg‘);
      transform: rotateX(-90deg) translateZ(190px);
    }
  </style>

第三步:JS代码实现

  <script>
      // 自定义索引【轮播图的核心】
    var index = 0;
     // 设置锁,防止频繁点击出现轮播混乱
    var flag = true;
    $(‘.prev‘).on(‘click‘,function(){
        // 如果为false,中止程序执行
      if(!flag) return;
        // 如果为true把锁锁住,变成false
      flag = false;
        // 索引减一
      index--;
        // 点击一下设置旋转90度
      var angel = -index * 90;
        // 设置旋转的css样式
        // each:回调函数拥有两个参数:第一个为对象的成员或数组的索引,第二个为对应变量或内容。
      $(‘ul li‘).css({‘transition‘:‘all 1s‘}).css({‘transform‘:‘rotateX( ‘+ angel +‘deg)‘}).each(function(i,e){        // 设置每一个li的延迟时间
        var delay = 0.5 * i;
        $(this).css({‘transition‘:delay + ‘s‘});
      });
    });
    $(‘.next‘).on(‘click‘,function(){
      if(!flag) return;
      flag = false;
      index++;
      var angel = -index * 90;
      $(‘ul li‘).css({‘transition‘:‘all 1s‘}).css({‘transform‘:‘rotateX( ‘+ angel +‘deg)‘}).each(function(i,e){
        var delay = 0.5 * i;
        $(this).css({‘transition‘:delay + ‘s‘});
      });
    });
    // 执行完一次轮播把锁打开
    $(‘ul li:last‘).on(‘transitionend‘, function () {
        /*开锁*/
        flag = true;
    });
  </script>

原文地址:https://www.cnblogs.com/houfee/p/9246838.html

时间: 2024-10-13 22:48:29

transform—切割轮播图的相关文章

css3实现3D切割轮播图案例

<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>CSS3 3D切割轮播图</title> <style> body { margin: 0; padding: 0; } ul { margin: 0; padding: 0; list-style: none; height: 100%; wi

带锁的3D切割轮播图

3D切割轮播图. 加入锁,限制点击太快次数 <!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title></title> <style> body{ margin: 0; padding: 0; } .view{ width: 560px; height: 300px; border: 1px solid #

jquery 实现3d切割轮播图

总结: 1.布局时4张图片分别为一个立体长方体的4个侧面,屏幕为该长方体的几何中心. 2.注意点击左按钮,显示上一张图片,沿X轴旋转的是 90deg,  右按钮,则为 90deg   3.切割效果通过li过渡延时来实现,通过节流阀控制过渡完成的时间点,也就是下次点击事件可以触发的时间点.  效果图:       1.html: <!--3d立体轮播图--><section class="box"> <ul class="imageBox"

3D切割轮播图

预览图: 实现原理:将图片切割构建一个和ul(电脑屏幕)同一个轴的立方体,利用延时旋转实现切割效果 知识点:transform-style属性(必须搭配transform属性使用) 值 描述 flat 子元素将不保留其 3D 位置. preserve-3d 子元素将保留其 3D 位置. 节流阀,transitionend 空间布局: 将一张图片分成五份li,每份li放4个span折叠成正方体 轴:轴是整个立方体左右面中心的连线 代码: 1 <!DOCTYPE html> 2 <html

jQuery----无缝轮播图

1.效果 2.html代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <link rel="stylesheet" type="text/css" href="css/iconfont.css"> <link rel="stylesh

升级版的全屏轮播图

具备的功能: 1.左右自动轮播 2.鼠标悬停在图片上时,停止轮播,移除时,开始轮播 3,点击导航圆点,移到响应位置图片,同时导航圆点有0.3秒的显示特效 4.鼠标移到屏幕左右时,出现线性渐变特效,点击,会左右移到图片 最终结果图: 完整代码: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title>

仿网易阴阳师官网轮播图效果

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>阴阳师轮播图</title> <style> body{ width: 1200px; height: 1000px; background: url(http://cdn.attach.qdfuns.com/notes/pics/201611/

js实现轮播图

1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>轮播图</title> 6 <style type="text/css"> 7 *{ 8 margin: 0; 9 padding:0; 10 } 11 .carousel{ 12 margin:0 aut

移动端原生js,css3实现轮播图

一.功能需求 1.自动播放2.滑动切换3.点击切换 二.思路分析 html代码: <div class="container"> <ul class="list clearfix"> <li class="item fl item5">图5</li> <li class="item fl item1">图1</li> <li class="