数字滚动效果(CSS3 transition属性)

效果:初始化加载+定时刷新增加数值

相关代码:

容器:

<h2>不循环样式</h2>
<!-- 任意一个非行内元素就可以当做容器,绑定id 或 class ,必须设置容器的高度 height,因为每个数字的高度是由容器的高度决定所以容器的高度必须要设置的 -->
<div class="scroll-number-0"></div>

引入js文件:

        <script type="text/javascript" src="jquery.min.js"></script>
        <script type="text/javascript" src="gScrollNumber.js"></script>

初始化对象运行:

            var scrollNumber0 = new gScrollNumber(".scroll-number-0", {
                width: 30, // 每个数字元素的宽
                color: "orange", // 数字元素的字体颜色
                fontSize: 40, // 数字元素的字体大小
                autoSizeContainerWidth: true, // 自动计算容器宽度 .scroll-number-0 ,如果已经使用css 制定了容器的宽度,此处可设置为false
                background: "#333",
            });

            var value=1023571;
            scrollNumber0.run(value0+=4302);

下面是完整代码:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=414,user-scalable=0">
        <title>里程表数字滚动效果 Demo</title>
        <style>
            * {
                margin: 0;
                padding: 0;
            }

            html,
            body {
                width: 100%;
            }

            .container {
                margin: 100px auto;
            }

            .container div {
                margin-left: 10px;
                display: block;
                height: 60px;
                border: 1px solid goldenrod;
                margin-top: 10px;
                margin-right: 10px;
            }
        </style>
    </head>

    <body>
        <div class="container">
            <h2>不循环样式</h2>
            <div class="scroll-number-0"></div>
        </div>
        <script type="text/javascript" src="jquery.min.js"></script>
        <script type="text/javascript" src="gScrollNumber.js"></script>

        <script>
            /**
             * 初始化一个数字滚动对象
             * 构造函数的参数项可查看 gScrollNumber.js 里面的注释
             */
            var scrollNumber0 = new gScrollNumber(".scroll-number-0", {
                width: 30, // 每个数字元素的宽
                color: "orange", // 数字元素的字体颜色
                fontSize: 40, // 数字元素的字体大小
                autoSizeContainerWidth: true, // 自动计算容器宽度 .scroll-number-0 ,如果已经使用css 制定了容器的宽度,此处可设置为false
                background: "#333",
            });

            var value0;
            value0 = 1023571;
            scrollNumber0.run(value0+=4302);

            setInterval(function() {
                scrollNumber0.run(value0+=4302);
            }, 3000);
        </script>
    </body>

</html>
gScrollNumber.js代码基本原理:每个数字都包含0-9的样式,通过在一定时间内滚动到指定的位置(top:-**px)实现数字滚动的效果。

transition:CSS3过渡
/**
 * Created by GYFlasher on 2017-12-08.
 */
/**
 * 滚动数字 (依赖jq)
 * @param el 用来显示滚动字幕的容器class 或 id
 * @param option 配置参数 width: 数字的宽 (无单位),fontSize: 字体大小(无单位), color: 文字颜色,autoSizeContainerWidth: 自动计算容器宽度
 * @returns {Object}
 */
function gScrollNumber(el,option) {
    this.container = $(el);
    this.option = option;
    this.container.css({
        position: "relative",
        padding: "0",
        overflow: "hidden"
    });
    var height = this.container.height();
    this.subWidth = option.width;
    this.subHeight = height;
    this.autoSizeContainerWidth = option.autoSizeContainerWidth;
    this.background=option.background;
    this.col = ‘<span class="g-num-item" style="top: 0;">‘ +
        ‘<i>0</i>‘ +
        ‘<i>1</i>‘ +
        ‘<i>2</i>‘ +
        ‘<i>3</i>‘ +
        ‘<i>4</i>‘ +
        ‘<i>5</i>‘ +
        ‘<i>6</i>‘ +
        ‘<i>7</i>‘ +
        ‘<i>8</i>‘ +
        ‘<i>9</i>‘ +
        ‘<i>.</i>‘ +
        ‘</span>‘;
}
gScrollNumber.prototype.run = function (value) {
//  console.log("old = " + this.currentValue + "\nnew = " + value);
    this.currentValue = value;
    var self = this;
    var valueString = value.toString();
    if (self.autoSizeContainerWidth) {
        self.container.css({
            "width": valueString.length * self.subWidth + "px"
        });
    }
    var oldLength = self.container.children(".g-num-item").length;

    if (valueString.length > oldLength) {
        for (var i = 0; i < valueString.length - oldLength; i++) {
            self.container.append(self.col);
            self.container.children(".g-num-item").eq(oldLength + i).css({
                right: self.subWidth * (oldLength + i) + "px"
            });
        }
    }else if (valueString.length < oldLength) {
        for (var i = 0; i < oldLength - valueString.length; i++) {
            self.container.children(".g-num-item:last").remove();
        }
    }
    $(".g-num-item").css({
        position: "absolute",
        width: self.subWidth + "px",
        height: 11 * self.subHeight + "px"
    });
    $(".g-num-item i").css({
        width: self.subWidth + "px",
        height: self.subHeight + "px",
        lineHeight: self.subHeight + "px",
        textAlign: "center",
        fontSize: self.option.fontSize + "px",
        color: self.option.color,
        display: "block",
        fontStyle: "normal",
        background:self.background,//梁涛新增background属性
    });
    setTimeout(function () {
        if (valueString.length !== self.container.children(".g-num-item").length) {
            console.log("%c%s","color:red;", "数字位数和数字条个数不相等");
            debugger
        }
        for (var i = 0; i < valueString.length; i++) {
            var y = 0;
            if (valueString[i] != ".") {
                y = - (parseInt(valueString[i]) * self.subHeight);
            }else {
                y = - (10 * self.subHeight);
            }
            // console.log(self.container.attr("class") + " / " + self.container.attr("id") + " : " +valueString);
            self.container.children(".g-num-item").eq(valueString.length - i - 1).css({
                top: y + "px",
                transition: "top 1.0s"
            })
        }
    }, 0);
};
gScrollNumber.prototype.getCurrentValue = function () {
    return this.currentValue;
};

原文地址:https://github.com/GYFlash/gScrollNumber.js

原文地址:https://www.cnblogs.com/liangtao999/p/11768697.html

时间: 2024-10-09 22:42:35

数字滚动效果(CSS3 transition属性)的相关文章

css学习笔记——CSS3 transition 属性

<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>CSS3 transition 属性</title> <style> .box{ width:100px; height:100px; background:red; -web

jQuery自定义数字滚动效果

每日分享效果时间到,今日分享:jQuery自定义数字滚动效果 效果图: 一.html代码 <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8"/> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/> <!--优先

CSS3:Transition属性详解

Transition属性主要是用来对某个CSS属性的变化过程进行控制,官方的介绍是"CSS Transitions allow property changes in CSS values to occur smoothly over a specified duration.".而我个人则简单地理解为"在某个时间段内,平滑地改变某个CSS属性.". Transition又包含了四个子属性,分别为property.duration.timing-function.d

css3 transition属性实现3d动画效果

transition属性是一个很强大的3d动画属性,我动手试了一下,很多在网上很火的网页动画都可以用这个属性实现,只能说这个属性是在是太强大啦,本人在学习次属性之后才知道自己对css3的认识还是偏少,现在我给大家介绍并实际实现下该属性. transition字面意思是变迁.变换.过度的意思,所以transition属性也离不开这个大致意思,其中该属性中的重要属性是: transition-property:指定过度的元素; 如:transition-property:background,就是指

css3——transition属性和opacity属性

[transition-duration] 是一个css3属性,规定完成过度效果需要花费的时间(一秒或毫秒计).语法:transition-duration: time;time :    规定完成过渡效果需要花费的时间(以秒或毫秒计). 默认值是 0,意味着不会有效果. 该属性其实是transition属性的一个子属性,下面总结一下css3中的transition属性:[transition] 用于在一定的时间内平滑的过度,这种效果可以在鼠标单击,获取焦点,被点击或对元素任何改变中触发,并圆滑

css3 transition属性变化与animation动画的相似性以及不同点

下面列子中的2个图片的效果. http://zqtest.e-horse.cn/DongXueImportedCar/assets/mouseOverAnimate.html 第一个为transition属性变化效果 第二个为animation动画效果 是不是已经看出他们之间的相同与不同了吧.对的,他们都可以实现简单的动画效果,但transition变化效果当鼠标离开动画结束时,它还是会持续一段时间的动画并最终返回为元素的初始样式.animation动画效果则不是,当鼠标离开后它会之间立刻结束动

CSS3 transition 属性

transition是css3中新添加的特性,在W3C标准中是这样描述的:“css的transition允许css的属性值在一定的时间内从一个状态平滑的过渡到另一个状态.这种状态可以在鼠标单击.获得焦点.被点击或对元素任何改变中触发,并平滑的以动画效果改变css的属性值.” 一.transition语法: transition:[<transition-property>||<transition-duration>|| <transition-timing-function

jquery实现数字滚动效果

网页上如果有数字需要经常变动,又想让它比较明显,肯定是加个动画比较显眼,利用jquery的animate可以很容易的实现,不需要css3,因此可以兼容低版本的ie浏览器.先看效果图: 代码比较简单,没有整理成插件形式,暂时全堆在html里了.直接上代码: <!DOCTYPE html> <html lang="zh-cn"> <head>     <meta charset="utf-8">     <title

CSS3 transition 属性——逐渐变慢/匀速/加速/减速/加速然后减速

transition:all 1s ease 1s ease: 1.ease:(逐渐变慢)默认值 2.linear:(匀速) 3.ease-in:(加速) 4.ease-out:(减速) 5.ease-in-out:(加速然后减速) 6.cubic-bezier 如: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>