纯CSS实现3D图像轮转

52 篇文章 0 订阅
44 篇文章 73 订阅

CSS演武场今天继续,今天看一个纯css实现的3D图像轮转效果,请大家猛戳研究效果先,也可下载收藏先。

首先看html文件,div.billboard为效果的容器,利用10个div.poster分割图像,每个poster中有三个face,分别用来承载三个图像。

<div class="billboard">
    <div class="poster">
        <div class="face panel1 p1"></div>
        <div class="face panel2 p1"></div>
        <div class="face panel3 p1"></div>
    </div>
    <div class="poster">
        <div class="face panel1 p2"></div>
        <div class="face panel2 p2"></div>
        <div class="face panel3 p2"></div>
    </div>
    <div class="poster">
        <div class="face panel1 p3"></div>
        <div class="face panel2 p3"></div>
        <div class="face panel3 p3"></div>
    </div>
    <div class="poster">
        <div class="face panel1 p4"></div>
        <div class="face panel2 p4"></div>
        <div class="face panel3 p4"></div>
    </div>
    <div class="poster">
        <div class="face panel1 p5"></div>
        <div class="face panel2 p5"></div>
        <div class="face panel3 p5"></div>
    </div>
    <div class="poster">
        <div class="face panel1 p6"></div>
        <div class="face panel2 p6"></div>
        <div class="face panel3 p6"></div>
    </div>
    <div class="poster">
        <div class="face panel1 p7"></div>
        <div class="face panel2 p7"></div>
        <div class="face panel3 p7"></div>
    </div>
    <div class="poster">
        <div class="face panel1 p8"></div>
        <div class="face panel2 p8"></div>
        <div class="face panel3 p8"></div>
    </div>
    <div class="poster">
        <div class="face panel1 p9"></div>
        <div class="face panel2 p9"></div>
        <div class="face panel3 p9"></div>
    </div>
    <div class="poster">
        <div class="face panel1 p10"></div>
        <div class="face panel2 p10"></div>
        <div class="face panel3 p10"></div>
    </div>
</div>
CSS文件这里我们用到了sass,用的是scss语法。

//变量初始化
//图像分块个数,如要更改,html需要进行相应的修改
$numPoster:10; 

//轮换图像个数,如要更改,html需要进行相应的修改
$numFace:3; 

//图像宽度 
$width:600px; 

//图像高度 
$height:320px; 

//盒子的设置
.billboard {  
    width:$width;  
    margin:100px auto;  
} 

//图像条左浮动 
.poster {  
    float:left;  
    width:$width/$numPoster;  
    height:$height;  
}

//图像条面的统一设置,绝对定位、3d动画设置  
.face {  
    position:absolute;  
    height:$height;  
    width:$width/$numPoster;  
    transform-origin:50% 50% -17px;  
    backface-visibility: hidden;  
    transform-style:preserve-3d;  
    perspective:350px;  
}  

//图像条面分别设置背景图像、动画
@for $i from 1 through $numFace{  
  .poster .panel#{$i} {  
    background:url(http://gx.zptc.cn/whqet/img/#{$i}.jpg);  
    transform:transformY(360deg/$numFace*($i - 1));  
    animation: rotateMe#{$i} 10s infinite;  
  }  
  @keyframes rotateMe#{$i} {  
    0% {  
        transform:rotateY(360deg/$numFace*($i - 1));  
    }  
    9% {  
        transform:rotateY(360deg/$numFace*($i - 1));  
    }  
    24% {  
        transform:rotateY(360deg/$numFace*($i));  
    }  
    42% {  
        transform:rotateY(360deg/$numFace*($i));  
    }  
    57% {  
        transform:rotateY(360deg/$numFace*($i + 1));  
    }  
    75% {  
        transform:rotateY(360deg/$numFace*($i + 1));  
    }  
    90% {  
        transform:rotateY(360deg/$numFace*($i + 2));  
    }  
    100% {  
        transform:rotateY(360deg/$numFace*($i + 2));  
    }  
  }  
} 

//图像条面的背景偏移
@for $i from 1 through $numPoster {  
  .poster .p#{$i} {background-position:-($width/$numPoster*($i - 1)) top;}  
}  
使用sass可以使得代码结构清晰,逻辑性强,请大家研读提升!

---------------------------------------------------------------

前端开发whqet,关注web前端开发技术,分享网页相关资源。
---------------------------------------------------------------

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值