css3翻牌翻数字的示例代码


Posted in HTML / CSS onFebruary 07, 2020

今天接到公司一任务,效果图如下:

css3翻牌翻数字的示例代码

没有具体说做什么效果,但是想着纯数字转换太简单了,然后就顺手做了一个翻牌的效果。

css3翻牌翻数字的示例代码

效果预览,新窗口打开:https://codepen.io/andy-js/pen/ExaGxaL

首先做一些页面布局:

<ul></ul>
body{background: #000;}
     ul{
         list-style: none;
         margin:100px 0;
         display: flex;
         justify-content:center;
         line-height: 56px;
         height:56px;
         font-size: 39.6px;
         color: #FFFFFF;
         transform-style:preserve-3d;
         perspective:1000px;
     }
     li{
        height:56px;
        margin:0 10px;
        background:none;
        width:16px;
        position: relative;
     }
     .num{
        width:46px;
        transform-style:preserve-3d;
        perspective:1000px;
        transform:rotateY(0deg);
        transition: 1s all ease;
    }
    p{
        height:56px;
        width:46px;
        text-align: center;
        background: #EC2C5C;
        border-radius: 2.57px;
        position: absolute;
    }
    
    p:nth-child(2){
        transform: scalex(-1) translateZ(-1px);
    }

然后通过动态插入,模拟了这么一个效果
利用了transition来做的动画
利用transform:rotateY来做的翻转
在翻转之前先将另一个数字scalex左右镜像之后translateZ(-1px)移动到另一个数字的后面,这样翻转过来就能看到镜像的数字
不是很完善,还有很多可以改进的地方
全部代码如下:

<script>
var number=9999993,
    numArr=addComma(number),
    aNum=[],
    oUl=document.getElementsByTagName('ul')[0];
for(let i=0;i<numArr.length;i++){
    let li=document.createElement('li');
    oUl.appendChild(li);
    if(numArr[i]==',')
    li.innerHTML=',';
    else
    li.innerHTML='<p>'+numArr[i]+'</p><p></p>',
    li.className='num',
    li.deg=0,
    aNum.push(li);
};

setInterval(function(){
    let changeNum=number+1+'';
    let changeArr=addComma(changeNum),
        difference=changeArr.length-numArr.length;
    if(difference){
        for(let i=0;i<difference;i++){
            let li=document.createElement('li');
            oUl.insertBefore(li,oUl.children[0]);
            if(changeArr[i]==',')
            li.innerHTML=',';
            else
            li.innerHTML='<p>'+changeArr[i]+'</p><p></p>',
            li.className='num',
            li.deg=0,
            aNum.unshift(li);
        };
    };
    number+='';
    for(let i=changeNum.length-number.length;i<changeNum.length;i++){
        if(changeNum[i]==number[i])continue;
        let deg=aNum[i].deg;
        aNum[i].deg=deg=deg+180;
        let index=(deg/180)%2;
        aNum[i].children[index].innerHTML=changeNum[i];
        aNum[i].style.transform='rotateY('+deg+'deg)';
    };
    number=Number(changeNum);
    numArr=changeArr;
},2000);


function addComma(num){    //每隔三位数加一个豆号
    return (num || 0).toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,');
};
</script>

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

HTML / CSS 相关文章推荐
一款利用html5和css3实现的3D立方体旋转效果教程
Apr 26 HTML / CSS
关于CSS Tooltips(鼠标经过时显示)的效果
Apr 10 HTML / CSS
CSS3 实用技巧:实现黑白图像效果示例代码
Jul 11 HTML / CSS
详解CSS3原生支持div铺满浏览器的方法
Aug 30 HTML / CSS
使用css如何制作时间ICON方法实践
Nov 12 HTML / CSS
HTML5 CSS3打造相册效果附源码下载
Jun 16 HTML / CSS
浅谈Html5多线程开发之WebWorkers
May 02 HTML / CSS
详解Canvas实用库Fabric.js使用手册
Jan 07 HTML / CSS
video下autoplay属性无效的解决方法(添加muted属性)
May 19 HTML / CSS
css实现文章分割线样式的多种方法总结
Apr 21 HTML / CSS
分享CSS盒子模型隐藏的几种方式
Feb 28 HTML / CSS
CSS SandBox应用场景及常见问题
Jun 25 HTML / CSS
css3使用animation属性实现炫酷效果(推荐)
Feb 04 #HTML / CSS
CSS3中新增的对文本和字体的设置
Feb 03 #HTML / CSS
CSS3动画特效在活动页中的应用
Jan 21 #HTML / CSS
如何用border-image实现文字气泡边框的示例代码
Jan 21 #HTML / CSS
CSS3实现网站商品展示效果图
Jan 18 #HTML / CSS
2分钟教你实现环形/扇形菜单(基础版)
Jan 15 #HTML / CSS
css3一个简易的 LED 数字时钟实现方法
Jan 15 #HTML / CSS
You might like
PHP安装攻略:常见问题解答(三)
2006/10/09 PHP
php curl post 时出现的问题解决
2014/01/30 PHP
ThinkPHP模板Switch标签用法示例
2014/06/30 PHP
php通过递归方式复制目录和子目录的方法
2015/03/13 PHP
php实现异步数据调用的方法
2015/12/24 PHP
PHP中的密码加密的解决方案总结
2016/10/26 PHP
实例:尽可能写友好的Javascript代码
2006/10/09 Javascript
IE与Firefox下javascript getyear年份的兼容性写法
2007/12/20 Javascript
浅析$(function) ready和onload 的区别
2016/09/03 Javascript
解决同一页面中两个iframe互相调用jquery,js函数的方法
2016/12/12 Javascript
详解如何使用vue-cli脚手架搭建Vue.js项目
2017/05/19 Javascript
编写React组件项目实践分析
2018/03/04 Javascript
JavaScript设计模式之原型模式分析【ES5与ES6】
2018/07/26 Javascript
关于单文件组件.vue的使用
2018/09/20 Javascript
jQuery实现点击图标div循环放大缩小功能
2018/09/30 jQuery
Vue项目部署在Spring Boot出现页面空白问题的解决方案
2018/11/26 Javascript
浅谈对于react-thunk中间件的简单理解
2019/05/01 Javascript
[51:53]DOTA2-DPC中国联赛 正赛 RNG vs Dragon BO3 第二场 1月24日
2021/03/11 DOTA
Python删除指定目录下过期文件的2个脚本分享
2014/04/10 Python
Python入门篇之面向对象
2014/10/20 Python
python实现的守护进程(Daemon)用法实例
2015/06/02 Python
python strip() 函数和 split() 函数的详解及实例
2017/02/03 Python
python3读取MySQL-Front的MYSQL密码
2017/05/03 Python
Python实现数据结构线性链表(单链表)算法示例
2019/05/04 Python
python中设置超时跳过,超时退出的方式
2019/12/13 Python
python 爬取B站原视频的实例代码
2020/09/09 Python
当当网官方旗舰店:中国图书销售夺金品牌
2018/04/02 全球购物
BAILEY 44官网:美国制造的女性服装
2019/07/01 全球购物
Onzie官网:美国时尚瑜伽品牌
2019/08/21 全球购物
科颜氏印度官网:Kiehl’s印度
2021/02/20 全球购物
小学语文教学经验交流材料
2014/06/02 职场文书
交通事故委托书范本(2篇)
2014/09/21 职场文书
基层工作经历证明
2015/06/19 职场文书
表扬稿表扬信的格式及范文
2019/06/24 职场文书
bat批处理之字符串操作的实现
2022/03/16 Python
PostgreSQL出现死锁该如何解决
2022/05/30 PostgreSQL