zoukankan      html  css  js  c++  java
  • 一个文字无缝滚动的jQuery插件

    直接上代码吧

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>marquee插件--滚动示例</title>
        <link type="text/css" href="http://888.gtimg.com/css/v1.0/qqcaipiao/cp_party_effect.css" rel="stylesheet"/>
        <style type="text/css">
            #mar1 { height: 120px; width: 200px; margin-top: 20px; margin-left: 20px; background: #333; color: #FFF; }
            #mar2 { height: 120px; width: 200px; margin-top: 20px; margin-left: 20px; background: #333; color: #FFF; }
            #mar3 { height: 40px; width: 500px; margin-top: 20px; margin-left: 20px; background: #06F; color: #FFF; }
            #mar4 { height: 40px; width: 500px; margin-top: 20px; margin-left: 20px; background: #06F; color: #FFF; }
            #mar5 { height: 40px; width: 500px; margin-top: 20px; margin-left: 20px; background: #F66; color: #FFF; }
            #mar6 { height: 40px; width: 500px; margin-top: 20px; margin-left: 20px; background: #F66; color: #FFF; }
        </style>
    </head>
    
    <body>
    <div id="mar1">
        <ul>
            <li>测试数据第一条</li>
            <li>测试数据第二条</li>
            <li>测试数据第三条</li>
            <li>测试数据第四条</li>
            <li>测试数据第五条</li>
            <li>测试数据第六条</li>
        </ul>
    </div>
    <div id="mar2">
        <ul>
            <li>测试数据第一条</li>
            <li>测试数据第二条</li>
            <li>测试数据第三条</li>
            <li>测试数据第四条</li>
            <li>测试数据第五条</li>
            <li>测试数据第六条</li>
        </ul>
    </div>
    <div id="mar3">
        <ul>
            <li>测试数据第一条</li>
            <li>测试数据第二条</li>
            <li>测试数据第三条</li>
            <li>测试数据第四条</li>
            <li>测试数据第五条</li>
        </ul>
    </div>
    <div id="mar4">
        <ul>
            <li>测试数据第一条</li>
            <li>测试数据第二条</li>
            <li>测试数据第三条</li>
            <li>测试数据第四条</li>
            <li>测试数据第五条</li>
        </ul>
    </div>
    <div id="mar5">
        <ul>
            <li>测试数据第一条</li>
            <li>测试数据第二条</li>
            <li>测试数据第三条</li>
            <li>测试数据第四条</li>
            <li>测试数据第五条</li>
        </ul>
    </div>
    <div id="mar6">
        <ul>
            <li>测试数据第一条</li>
            <li>测试数据第二条</li>
            <li>测试数据第三条</li>
            <li>测试数据第四条</li>
            <li>测试数据第五条</li>
        </ul>
    </div>
    <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
    <script type="text/javascript">
        /**
       * @author xf.radish * jQuery插件 常用效果的实现
    */ (function (jQuery) { jQuery.fn.extend({ /** *@description 无缝滚动 支持匀速上下左右和垂直翻滚上下 *@param { * direction:string,//滚动方向 值域:top|left|bottom|right|up|down * speed:string//滚动速度(垂直翻滚时为停留时间) * } o *@example *HTML结构 *<div id="mar"> * <ul> * <li>内容1</li> * <li>内容2</li> * <li>内容3</li> * </ul> *</div> *mar样式应该包含height,width,background等 注意不要覆盖了插件附加上去的样式 *调用: *jQuery("#mar").marquee({ * direction:"top", * speed:30 *}) * */ marquee:function (o) { var it = this, d = o.direction || 'left', //滚动方向 默认向左 s = o.speed || 30, //速度 默认30毫秒 mar = jQuery(it), mp1 = jQuery(it).children(0).attr({id:"mp1"}), marqueeFunc = getMarquee(d), marRun = marqueeFunc ? setInterval(marqueeFunc, s) : function () { return false; };//开始滚动 //鼠标悬停事件 jQuery(it).hover(function () { clearInterval(marRun); }, function () { marRun = setInterval(marqueeFunc, s); }) /*生成滚动函数 *1.判断方向 *2.装载CSS *3.判断需不需要滚动 *4.构造函数 */ function getMarquee(d) { var marqueeFunc; switch (d) { //水平向左 case "left": mar.addClass("plus-mar-left"); var liHeight = mar[0].offsetHeight; mar.css({"line-height":liHeight + "px"}); if (mp1[0].offsetWidth < mar[0].offsetWidth) return false; mp1.clone().attr({id:"mp2"}).appendTo(mar); marqueeFunc = function () { if (mar[0].scrollLeft >= mp1[0].scrollWidth) { mar[0].scrollLeft = 0; } else { mar[0].scrollLeft++; } } break; //水平向上 case "top": mar.addClass("plus-mar-top"); if (mp1.outerHeight() <= mar.outerHeight()) return false; var mp2 = mp1.clone().attr({id:"mp2"}).appendTo(mar); marqueeFunc = function () { var scrollTop = mar[0].scrollTop; if (mp1[0].offsetHeight > scrollTop) { mar[0].scrollTop = scrollTop + 1; } else { mar[0].scrollTop = 0; } } break; //水平向右 case "right": mar.addClass("plus-mar-left"); var liHeight = mar[0].offsetHeight; mar.css({"line-height":liHeight + "px"}); if (mp1[0].offsetWidth <= mar[0].offsetWidth) return false; var mp2 = mp1.clone().attr({id:"mp2"}).appendTo(mar); marqueeFunc = function () { if (mar[0].scrollLeft <= 0) { mar[0].scrollLeft += mp2[0].offsetWidth; } else { mar[0].scrollLeft--; } } break; //水平向下 case "bottom": mar.addClass("plus-mar-bottom"); if (mp1[0].offsetHeight <= mar[0].offsetHeight) return false; var mp2 = mp1.clone().attr({id:"mp2"}).appendTo(mar); mar[0].scrollTop = mar[0].scrollHeight; marqueeFunc = function () { if (mp1[0].offsetTop >= mar[0].scrollTop) { mar[0].scrollTop += mp1[0].offsetHeight; } else { mar[0].scrollTop--; } } break; //垂直翻滚 向上 case "up": mar.addClass("plus-mar-up"); var liHeight = mar[0].offsetHeight; mp1.css({"line-height":liHeight + "px"}); marqueeFunc = function () { var currLi = it.eq(0).find("ul:first"); currLi.animate({ marginTop:-liHeight }, 500, function () { currLi.find("li:first").appendTo(currLi); currLi.css({marginTop:0}); }) } break; //垂直翻滚 向下 case "down": mar.addClass("plus-mar-down"); var liHeight = mar[0].offsetHeight, liLength = mp1.children().length, topInit = -(liLength - 1) * liHeight + "px"; mp1.css({"top":topInit, "line-height":liHeight + "px"}); marqueeFunc = function () { var currLi = it.eq(0).find("ul:last"); currLi.animate({ marginTop:liHeight }, 500, function () { currLi.find("li:last").prependTo(currLi); currLi.css({marginTop:0}); }) } break; default: { marqueeFunc = null; alert("滚动插件:传入的参数{direction}有误!"); } } return marqueeFunc; } } }) })(jQuery); $("#mar1").marquee({ direction:"top", speed:30 }); $("#mar2").marquee({ direction:"bottom", speed:30 }); $("#mar3").marquee({ direction:"right", speed:30 }); $("#mar4").marquee({ direction:"left", speed:30 }); $("#mar5").marquee({ direction:"down", speed:2000 }) $("#mar6").marquee({ direction:"up", speed:3000 }); </script> </body> </html>
  • 相关阅读:
    JDBC 访问数据库的流程
    JSP中两种include的区别
    javascript中循环语句 while、dowhile、forin、for用法区别
    php正则取得页面所有的图片地址
    php基础入门篇学习笔记
    php正则表达匹配中文问题分析
    .htaccess 301重定向详细教程
    忘记mysql的root密码重置方法
    php for循环语句的几种用法分析
    javascript邮箱验证代码分析
  • 原文地址:https://www.cnblogs.com/x-radish/p/3238778.html
Copyright © 2011-2022 走看看