js CSS3实现卡牌旋转切换效果


Posted in Javascript onJuly 04, 2017

我们经常会在游戏里看到一些几张卡牌左右切换的效果,中间的一张最突出醒目,向左或向右滑动可切换到另一张,今天我们就用CSS3来实现下这种效果。

我们先来看个demo,具体的样式各位可以自己调整:

js CSS3实现卡牌旋转切换效果

(PC下可点击按钮切换,移动端可左右滑动切换)

从效果上我们可以看到,这5个div可以左右的切换,每次切换时总会有一个在中间显眼的位置进行展示。在切换时,看起来是div进行了移动,进行了DOM的增删操作。但是如果审查下元素,就能看到,DOM元素没有变换位置,它依然在那个位置,我们只是切换了每个元素上的class,于是页面上的位置看起来是发生了变化。

其实原理就是这样的: 不进行DOM的增删,为每个位置上的div都写上特定的样式,每个div都进行绝对定位,然后进行样式的轮播。 每次切换都有个0.6s过渡过程:

-webkit-transition: all 0.6s;
transition: all 0.6s;

比如从左往右的class分别为:item_0, item_1, item_cur, item_3, item_4,每个class都是当前所在div的定位,向左滑动时,右边的div会切换到中间,这样class从左往右就变成了item_1, item_cur, item_3, item_4, item_0。

var egg_change = function(type){
 var $demo = $('.demo'),
  index = parseInt( $demo.attr('index_cur')||2 ),
  $item = $('.demo .item'),
  len = $item.length;

 if( type=='left' ){
  index = (index+1)%len;
 }else{
  index = (index-1+len)%len;
 }
 $demo.attr('index_cur', index);

 $item.removeClass('item_0 item_1 item_3 item_4 item_cur');
 
 $item.eq( (index-2+len)%len ).addClass('item_0');
 $item.eq( (index-1+len)%len ).addClass('item_1');
 $item.eq(index).addClass('item_cur');
 $item.eq( (index+1)%len ).addClass('item_3');
 $item.eq( (index+2)%len ).addClass('item_4');
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript加载速度慢的解决方案
Mar 11 Javascript
Jquery常用的方法汇总
Sep 01 Javascript
jquery实现横向图片轮播特效代码分享
Nov 19 Javascript
jQuery基于muipicker实现仿ios时间选择
Feb 22 Javascript
JavaScript事件学习小结(三)js事件对象
Jun 09 Javascript
微信小程序 开发指南详解
Sep 27 Javascript
微信小程序request出现400的问题解决办法
May 23 Javascript
AngularJS实现select的ng-options功能示例
Jul 12 Javascript
Vue兼容ie9的问题全面解决方案
Jun 19 Javascript
antd 表格列宽自适应方法以及错误处理操作
Oct 27 Javascript
JavaScript实现刮刮乐效果
Nov 01 Javascript
Vue实现图书管理案例
Jan 20 Vue.js
JavaScript中三个等号和两个等号你了解多少
Jul 04 #Javascript
原生js实现简单的链式操作
Jul 04 #Javascript
详解用vue编写弹出框组件
Jul 04 #Javascript
使用vue构建一个上传图片表单
Jul 04 #Javascript
vue-resource 拦截器(interceptor)的使用详解
Jul 04 #Javascript
JavaScript在控件上添加倒计时功能的实现代码
Jul 04 #Javascript
JavaScript异步上传图片文件的实例代码
Jul 04 #Javascript
You might like
php下几个常用的去空、分组、调试数组函数
2009/02/22 PHP
php 抽象类的简单应用
2011/09/06 PHP
Symfony2获取web目录绝对路径、相对路径、网址的方法
2016/11/14 PHP
PHP设计模式之适配器模式原理与用法分析
2018/04/25 PHP
VSCode+PHPstudy配置PHP开发环境的步骤详解
2020/08/20 PHP
基于jquery的simpleValidate简易验证插件
2014/01/31 Javascript
javascript实现控制div颜色
2015/07/07 Javascript
Eclipse引入jquery报错如何解决
2015/12/01 Javascript
JavaScript和jquery获取父级元素、子级元素、兄弟元素的方法
2016/06/05 Javascript
AngularJS控制器之间的通信方式详解
2016/11/03 Javascript
nodejs使用express获取get和post传值及session验证的方法
2017/11/09 NodeJs
Bootstrap popover 实现鼠标移入移除显示隐藏功能方法
2018/01/24 Javascript
vue devtools的安装与使用教程
2018/08/08 Javascript
小程序关于请求同步的总结
2019/05/05 Javascript
JavaScript利用键盘码控制div移动
2020/03/19 Javascript
[07:03]显微镜下的DOTA2第九期——430圣堂刺客杀戮秀
2014/06/20 DOTA
Python2.7读取PDF文件的方法示例
2017/07/13 Python
对Python生成汉字字库文字,以及转换为文字图片的实例详解
2019/01/29 Python
Python脚本操作Excel实现批量替换功能
2019/11/20 Python
python中的线程threading.Thread()使用详解
2019/12/17 Python
python 计算方位角实例(根据两点的坐标计算)
2020/01/17 Python
PyQt5+python3+pycharm开发环境配置教程
2020/03/24 Python
更新升级python和pip版本后不生效的问题解决
2020/04/17 Python
Python根据URL地址下载文件并保存至对应目录的实现
2020/11/15 Python
使用python画出逻辑斯蒂映射(logistic map)中的分叉图案例
2020/12/11 Python
HTML5样式控制示例代码
2013/11/27 HTML / CSS
倩碧美国官网:Clinique美国
2016/07/20 全球购物
为什么要用EJB
2014/04/17 面试题
商场消防管理制度
2014/01/12 职场文书
无子女夫妻离婚协议书(4篇)
2014/10/20 职场文书
大学运动会通讯稿
2015/07/18 职场文书
《扇形统计图》教学反思
2016/02/17 职场文书
Python之基础函数案例详解
2021/08/30 Python
Nginx进程调度问题详解
2021/09/25 Servers
vue的项目如何打包上线
2022/04/13 Vue.js
Tomcat项目启动失败的原因和解决办法
2022/04/20 Servers