jquery上下左右无缝滚动-YlMarquee

15 篇文章 0 订阅

//彦磊图片(文字)平滑连续滚动插件1.0
// 技术支持及版本升级:http://hi.baidu.com/dpxdqx
// 使用前您一定要引入jQurey及本脚本,如
// <script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
// <script type="text/javascript" src="js/YlMarquee.js">

//1、为您要设置滚动的对象设置容器,并命名id,如id="scroll"
//2、将您要滚动的对象置入<ul></ul>中,并添加li标签,li标签中可以是图片、文字或表格……
//<div id="scroll">
//    <ul>
//         <li><img src="image/1.jpg" alt="1"></li>
//         <li><img src="image/2.jpg" alt="2"></li>
//        <li><img src="image/3.jpg" alt="3"></li>
//         <li><img src="image/4.jpg" alt="4"></li>
//     </ul>
//</div>
//3、在页面中添加jQuery语句,调用此插件,并对相关参数进行设置,如:
//<script type="text/javascript">
//$(document).ready(function(){
//$("#scroll").YlMarquee({
//     visible:3,
//     step:1
//       });
//});
// </script>

//4、插件相关参数:
//  visible:页面可见元素(图片)个数,默认为3,必须参数。
//  step:滚动步长,整数,默认为3,增大此数可加快滚动速度,设为0,则不进行滚动。
//  vertical:滚动方向,有"true"(向上滚动)和"false"(向左滚动)两个参数,默认为false(即向左滚动)。
//    width:滚动的宽度(即说明2中id为scroll的宽度),可选,不指定则由插件自动定义宽度。
//    height:滚动的高度(即说明2中id为scroll的高度),可选,不指定则由插件自动定义高度。
//    textMode:文字模式(默认为图片模式),当滚动内容为文字时,请指定为true(1.1版本新增参数)。

//单行或单列,必选width 或 height, 无需px

;

 (function($) {
    $.fn.extend({
        "totalWidth": function() {
            var tmpWidth = 0;
            $(this).each(function() {
                tmpWidth += $(this).outerWidth(true);

            });
            return tmpWidth;
        },
        "totalHeight": function() {
            var tmpHeight = 0;
            $(this).each(function() {
                tmpHeight += $(this).outerHeight(true);

            });
            return tmpHeight;

        }

    });
    $.fn.YlMarquee = function(o) {
        o = $.extend({
            speed: 60,
            step: 3,
            vertical: false,
            width: 0,
            height: 0,
            visible: 0,
            textMode: false
        }, o || {});

        var wrap = $(this), ul = $("ul", wrap), li = $("li", ul), v = o.visible, step = o.step, liNum = li.size(), visibleLi = li.slice(0, v);

        var whiteSpace, floatStyle, displayStyle, liSize, ie7HackCss, marginStyle, paddingStyle, wrapSize, visibleLiSize, i, scrollSize, cssPro;
        if (o.vertical) {
            whiteSpace = "normal";
            floatStyle = "none";
            displayStyle = "block";
            wrapSize = o.height;

        } else {
            whiteSpace = "nowrap";
            floatStyle = "left";
            displayStyle = "inline";
            wrapSize = o.width;
            ie7HackCss = o.textMode ? "*float:none;" : "";
        }


        wrap.css({ position: "relative", overflow: "hidden" });
        ul.css({ position: "relative", "white-space": whiteSpace, overflow: "hidden", "list-style-type": "none", margin: "0", padding: "0" });
        li.css({ "white-space": whiteSpace, "display": displayStyle, overflow: "hidden" });
        li.attr("style", li.attr("style") + ";" + "float:" + floatStyle + ";" + ie7HackCss);
        liSize = o.vertical ? li.totalHeight() : li.totalWidth();

        o.vertical ? ul.height(liSize) : ul.width(liSize);

        visibleLiSize = o.vertical ? visibleLi.totalHeight() : visibleLi.totalWidth();

        if (wrapSize == 0) {
            wrapSize = visibleLiSize;
        }

 

        o.vertical ? wrap.height(wrapSize) : wrap.width(wrapSize);

        if (wrapSize < liSize) {

            ul.append(li.clone());

            var newLi = $("li", ul), newLiSize = o.vertical ? newLi.totalHeight() : newLi.totalWidth();
            newLi.attr("style", newLi.attr("style") + ";" + "float:" + floatStyle + ";");
            o.vertical ? ul.height(newLiSize) : ul.width(newLiSize);
            scrollSize = o.vertical ? newLi.slice(0, liNum).totalHeight() : newLi.slice(0, liNum).totalWidth();
            var MyMar = setInterval(marquee, o.speed);
            ul.hover(function() { clearInterval(MyMar); }, function() { MyMar = setInterval(marquee, o.speed); });

        }

        function marquee() {

            if (o.vertical) {

                if (wrap.scrollTop() >= scrollSize) {
                    wrap.scrollTop(wrap.scrollTop() - scrollSize + step);
                }
                else {
                    i = wrap.scrollTop();
                    i += step;
                    wrap.scrollTop(i)
                }

            } else {

                if (wrap.scrollLeft() >= scrollSize) {

                    wrap.scrollLeft(wrap.scrollLeft() - scrollSize + step);
                }
                else {
                    i = wrap.scrollLeft();
                    i += step;

                    wrap.scrollLeft(i);
                }

            }
        };


    };


})(jQuery);

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值