jQuery leonaScroll 1.1 自定义滚动条插件(推荐)(2)

$.fn.extend({ generateUUID: function () { //唯一ID数值生成 var d = new Date().getTime(); var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { var r = (d + Math.random() * 16) % 16 | 0; d = Math.floor(d / 16); return (c == 'x' ? r : (r & 0x7 | 0x8)).toString(16); }); return uuid; }, LeonaScroll: function (parameter) { var Sname = $(this).selector; return this.each(function () { //变量声明 var elem = $(this), celem = $(this).find(parameter.scroll_text), index = $(this).generateUUID(), text_hidden = $(elem).height(), con_width = $(elem).width(); //添加滚动条Html var scrollHTML = ""; scrollHTML += "<div></div>"; scrollHTML += "<div><div></div></div>"; scrollHTML += "<div></div>"; $(elem).append("<div> " + scrollHTML + "</div>"); //添加滚动条CSS var scrollStyle = ""; scrollStyle += "body { -moz-user-select: none; /*火狐*/ -webkit-user-select: none; /*webkit浏览器*/ -ms-user-select: none; /*IE10*/ -khtml-user-select: none; /*早期浏览器*/ user-select: none; }"; scrollStyle += Sname + "{ position: relative; overflow-y: hidden; clear:none }"; scrollStyle += parameter.scroll_text + "{width:" + (parameter.text_width === undefined ? (con_width - parameter.sWidth) : parameter.text_width) + "px; word-break: break-word; position: absolute; left: 0; top: 0; clear:both; }"; scrollStyle += ".scroll { height:" + text_hidden + "px; float:right; }\r\n"; scrollStyle += ".scroll,.scroll .scroll_cen, .scroll .scroll_up, .scroll .scroll_down { width:" + parameter.sWidth + "px; }"; scrollStyle += ".scroll .scroll_up, .scroll .scroll_down {height:" + parameter.updownH + "px; line-height: " + parameter.updownH + "px; color: #ffffff; font-size: 12px; font-weight: bold; background-image:url(/img/bw.png); background-color:#161515; background-repeat:no-repeat; cursor: pointer;}"; scrollStyle += ".scroll .scroll_up{background-position: 0px 6px; border-radius:5px 5px 0 0; }"; scrollStyle += ".scroll .scroll_down{ background-position:0px -49px; border-radius:0 0 5px 5px; }"; scrollStyle += ".scroll .scroll_up:hover{background-position:0px -11px ; }"; scrollStyle += ".scroll .scroll_down:hover{background-position:0px -31px ; }"; scrollStyle += ".scroll .scroll_cen { height:" + (text_hidden - parameter.updownH * 2) + "px; background-color: #777676; position: relative; }"; scrollStyle += ".scroll .scroll_cen .scroll_button { width:" + (parameter.sWidth - 2) + "px; margin: 0px 1px; background:url(/img/tiao.jpg) repeat-y 0 0; border-radius: 5px; position: absolute; cursor: pointer; }"; $("head").append("<style type='text/css'>" + scrollStyle + "</style>"); //变量声明 var text_show = $(celem).height(), scroll_b = $(".leonabutton" + index + ""), text_p = text_hidden / text_show, bH_max = $(".leonas" + index + " .leonacen" + index + "").height(), bH = text_p * bH_max; if (parameter.scrollbar == true || parameter.scrollbar === undefined) { if (text_p >= 1) $(".leonas" + index + "").css("display", "none"); else { $(".leonas" + index + "").css("display", "block"); scroll_b.css("height", bH + "px"); } } else return; //鼠标拖动div事件 var needMove = false, mouseY = 0; scroll_b.mousedown(function (event) { needMove = true; var bH_Top = scroll_b.position().top; mouseY = event.pageY - bH_Top; }); $(document).mouseup(function (event) { needMove = false; }); $(document).mousemove(function (event) { if (needMove) { var sMouseY = event.pageY, bH_Top = sMouseY - mouseY, textY = bH_Top / bH_max * text_show; if (bH_Top <= 0) scroll_b.css("top", 0); $(celem).css("top", 0); return; if (bH_Top >= bH_max - bH) scroll_b.css("top", bH_max - bH); $(celem).css("top", text_hidden - text_show); return; scroll_b.css("top", bH_Top); $(celem).css("top", -textY); } return; }); //定义上下滚动规则 function goGun(direction, timer) { bH_Top = scroll_b.position().top; var h = 0; h += parameter.speed; //调节滑动速度 if (direction == 1) { //up var Toping = bH_Top - h; if (bH_Top <= 0 || Toping <= 0) { scroll_b.css("top", 0); $(celem).css("top", 0); if (timer == 2) clearInterval(goThread); //need timer return; } scroll_b.css("top", bH_Top - h); }; if (direction == -1) { //down var Downing = bH_Top + h; if (bH_Top >= bH_max - bH || Downing >= bH_max - bH) { scroll_b.css("top", bH_max - bH); $(celem).css("top", text_hidden - text_show); if (timer == 2) clearInterval(goThread); //need timer return; } scroll_b.css("top", bH_Top + h); } var textY = bH_Top / bH_max * text_show; $(celem).css("top", -textY); }; //上下微调按钮事件 function minTiao(minTB, d, t) { var goThread = ""; minTB.mouseup(function () { clearInterval(goThread); }); minTB.mousedown(function () { clearInterval(goThread); goThread = setInterval(function () { goGun(d, t); }, 300); }); minTB.click(function () { goGun(d); }); }; minTiao($(".leonaup" + index + ""), 1, 2);//up minTiao($(".leonadown" + index + ""), -1, 2);//down //滚轮事件 if (text_p < 1) { $(elem).bind("mousewheel", function (event, delta, deltaX, deltaY) { if (delta == 1) {//up goGun(1, 0); if (scroll_b.position().top != 0) return false; } if (delta == -1) {//down goGun(-1, 0); if (Math.ceil(scroll_b.position().top) != Math.ceil(bH_max - bH)) return false; } }); } }); } });

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wzjxzg.html