web前端|js教程
用JTrackBar实现的模拟苹果风格的滚动条
web前端-js教程
express源码分析,ubuntu官方源位置,Tomcat优化连接数,爬虫种类介绍,php学习博客外包,seo例子分析seo博客lzw
function JObj(){}
JObj.$c = function(tag){return document.createElement(tag)};
JObj.$ = function(id){return document.getElementById(id)};
JObj.isRate = function(pRateString){
if(!isNaN(pRateString)) return false;
if(pRateString.substr(pRateString.length-1,1) != "%")
return false;
if(isNaN(pRateString.substring(0,pRateString.length - 1)))
return false;
return true;
}
本地 app源码,ubuntu卸载内核报错,tomcat从下载到安装,爬虫教学实例,php精度问题,做php工资高还是seo工资高lzw
function JPos(){}
JPos.getAbsPos = function(pTarget){
var x_ = y_ = 0;
while(pTarget.offsetParent){
x_ += pTarget.offsetLeft;
y_ += pTarget.offsetTop;
pTarget = pTarget.offsetParent;
}
x_ += pTarget.offsetLeft;
y_ += pTarget.offsetTop;
return {x:x_,y:y_};
}
支付源码,vscode配置用户代码片段,ubuntu刻录光盘,tomcat7并发配置,sqlite创建附表,高级网页设计的意义,怎么连接到远程数据库,服务器搭建网页,qq快捷回复插件源,前端框架100,微专业爬虫,php是否包含,彭水SEO,springboot测试报错,网站商城前台模板,易语言网页游戏登陆器源码,bootstrap 录入模板,织梦后台500网络错误,app展示页面模板,数商z后台管理系统,医疗小程序1.6.4lzw
JPos.getMousePos = function(evt){
var x_ = y_ = 0;
evt = evt || window.event;
if(evt.pageX || evt.pageY){
x_ = evt.pageX;
y_ = evt.pageY;
}else{
x_ = evt.clientX + document.body.scrollLeft - document.body.clientLeft;
y_ = evt.clientY + document.body.scrollTop - document.body.clientTop;
}
return {x:x_,y:y_};
}
<!--
/*
----------------------------------------------------------------------
JTrackBar
初始日期:/07/11
Author:xlingFairy
Blog: 目前只能生水平的,垂直的还没有写。
设计功能:
当改变时,触发事件onChange,并传当前值。 /07/12
加入拖动功能。 /07/13
加入皮肤功能 /08/06
加入垂直的。并修正一个setRange带来的BUG. 未做功能:指定trackFrequence,你可以自己试着修改一下。 请尊重劳动成果!不得删除原作都信息!后果自负!
----------------------------------------------------------------------
*/
function JPos(){ } JPos.getAbsPos = function(pTarget){
var _x = 0;
var _y = 0;
while(pTarget.offsetParent){
_x += pTarget.offsetLeft;
_y += pTarget.offsetTop;
pTarget = pTarget.offsetParent;
}
_x += pTarget.offsetLeft;
_y += pTarget.offsetTop;return {x:_x,y:_y};
} JPos.getMousePos = function(evt){
var _x,_y;
evt = evt || window.event;
if(evt.pageX || evt.pageY){
_x = evt.pageX;
_y = evt.pageY;
}else{
_x = evt.clientX + document.body.scrollLeft - document.body.clientLeft;
_y = evt.clientY + document.body.scrollTop - document.body.clientTop;
}
return {x:_x,y:_y};
} function JTrackBar(pParent){
var self = this;var $ = function(pId){
return document.getElementById(pId);
}var $c = function(pTag){
return document.createElement(pTag);
}var trackBarType; //V & H
if((typeof pParent).toUpperCase() == "OBJECT")
var body = pParent;
else
var body = $(pParent) || document.body;
var oOutline = null;
var oTrackArea= null;
var oBtnPointer = null;
var oArrBtnLeft = oArrBtnRight = oArrBtnUp = oArrBtnDown = null;var inDrag = false;
var dragStartPos = null;var maxPosition= 100; //最大刻度
var minPosition = 0; //最小刻度
var base = 0;
var position = 0; //当前位置
var trackFrequence = 10; //点击一次移动多少刻度var defaultArrowW = defaultArrowH = 15;//Only for IE!this.setRange = function(pMin,pMax){
maxPosition = Math.max(pMin,pMax);
minPosition = Math.min(pMin,pMax); maxPosition -= minPosition;
base = minPosition;
minPosition = 0;
} var outlineWidth,trackAreaWidth,preFrequenceWidth;
var outlineHeight,trackAreaHeight,preFrequenceHeight;this.onChange = new Function();var getRunStyle = function(pObj,pProperty){
try{
if(pObj.currentStyle)
return eval("pObj.currentStyle." + pProperty);
else
return document.defaultView.getComputedStyle(pObj,"").getPropertyValue(pProperty);
}catch(e){
alert(e);
}
}/*-----------------------------------------------------*/
var createOutline = function(pWH){
oOutline = $c("DIV");
body.appendChild(oOutline);
oOutline.className = "JTrackBarStand";
if(trackBarType == "H")
oOutline.style.width = pWH + "px";
else if(trackBarType == "V")
oOutline.style.height = pWH + "px";
oOutline.style.overflow = "hidden";
}
/*-----------------------------------------------------*/
var createArrBtn = function(pDirection){
var arrBtn = $c("DIV");
switch(pDirection){
case "LEFT":
arrBtn.className = "btnLeft";
arrBtn.style.styleFloat = "left";
arrBtn.style.cssFloat = "left";
break;
case "RIGHT":
arrBtn.className = "btnRight";
arrBtn.style.styleFloat = "left";
arrBtn.style.cssFloat = "left";
break;
case "UP":
arrBtn.className = "btnUp";
break;
case "DOWN":
arrBtn.className = "btnDown";
break;
} arrBtn.direction = pDirection;
arrBtn.onclick = arrBtn_click;
return arrBtn;
}var arrBtn_click = function(evt){ evt = window.event || evt;
var o = evt.srcElement || evt.target; switch(o.direction){
case "LEFT":
case "UP":
self.setPositionBy( -trackFrequence);
break;
case "RIGHT":
case "DOWN":
self.setPositionBy(trackFrequence);
break;
}
}var trackarea_click = function(evt){
evt = window.event || evt;
var mPos = JPos.getMousePos(evt); var pos_ = JPos.getAbsPos(oTrackArea); if(trackBarType == "H"){
var w_ = parseInt(getRunStyle(oBtnPointer,"width"));
self.setPosition(parseInt((mPos.x - pos_.x) / preFrequenceWidth));
}else{
var h_ = parseInt(getRunStyle(oBtnPointer,"height"));
self.setPosition(parseInt((mPos.y - pos_.y) / preFrequenceHeight));
}
}var createHTrackArea = function(){
var w_ = parseInt(getRunStyle(oArrBtnLeft,"width"));
if(isNaN(w_)) w_ = defaultArrowW; trackAreaWidth = outlineWidth - 2 * w_;
preFrequenceWidth = trackAreaWidth / (maxPosition - minPosition); oTrackArea = $c("DIV");
oOutline.appendChild(oTrackArea); oTrackArea.onclick = trackarea_click; oTrackArea.className = "trackAreaH";
oTrackArea.style.width = trackAreaWidth + "px";
oTrackArea.style.styleFloat = "left";
oTrackArea.style.cssFloat = "left";
}var createVTrackArea = function(){
var h_ = parseInt(getRunStyle(oArrBtnUp,"height"));
if(isNaN(h_)) h_ = defaultArrowH;
trackAreaHeight = outlineHeight - 2 * h_;
preFrequenceHeight = trackAreaHeight / (maxPosition - minPosition); oTrackArea = $c("DIV");
oOutline.appendChild(oTrackArea); oTrackArea.onclick = trackarea_click;
oTrackArea.className = "trackAreaV";
oTrackArea.style.height = trackAreaHeight + "px";
}var recalcTrackArea = function(){
if(trackBarType == "H"){
var w_ = parseInt(getRunStyle(oArrBtnLeft,"width"));
if(isNaN(w_)) w_ = defaultArrowW; trackAreaWidth = outlineWidth - 2 * w_;
preFrequenceWidth = trackAreaWidth / maxPosition; oTrackArea.style.width = trackAreaWidth + "px";
}else{
var h_ = parseInt(getRunStyle(oArrBtnUp,"height"));
if(isNaN(h_)) h_ = defaultArrowH; trackAreaHeight = outlineHeight - 2 * h_;
preFrequenceHeight = trackAreaHeight / maxPosition;
oTrackArea.style.height = trackAreaHeight + "px";
}
}var pointer_mousedown = function(evt){
inDrag = true;
dragStartPos = JPos.getMousePos(evt);
body.onmousemove = pointer_mousemove;
body.onmouseup = pointer_mouseup;
body.onmouseout = pointer_mouseout;
}var pointer_mousemove = function(evt){
if(!inDrag) return;
var mPos = JPos.getMousePos(evt);
var pos_ = JPos.getAbsPos(oTrackArea); if(trackBarType == "H")
self.setPosition(parseInt((mPos.x - pos_.x) / preFrequenceWidth));
else
self.setPosition(parseInt((mPos.y - pos_.y) / preFrequenceHeight));
}var pointer_mouseup = function(){
inDrag = false;
}var pointer_mouseout = function(){
//inDrag = false;
}var createHPointer = function(){
oBtnPointer = $c("DIV");
oOutline.appendChild(oBtnPointer);
oBtnPointer.onmousedown = pointer_mousedown; oBtnPointer.className = "btnPointerH";
oBtnPointer.style.position = "absolute"; var w_ = parseInt(getRunStyle(oBtnPointer,"width"));
if(isNaN(w_)) w_ = defaultArrowW; var pos_ = JPos.getAbsPos(oTrackArea);
oBtnPointer.style.left = pos_.x - w_/2 + "px";
oBtnPointer.style.top = pos_.y + "px";
oBtnPointer.style.cssText += "left:" + (pos_.x - w_/2) + "px;top:" + pos_.y + "px;";
}var createVPointer = function(){
oBtnPointer = $c("DIV");
oOutline.appendChild(oBtnPointer);
oBtnPointer.onmousedown = pointer_mousedown; oBtnPointer.className = "btnPointerV";
oBtnPointer.style.position = "absolute";
var h_ = parseInt(getRunStyle(oBtnPointer,"height"));
if(isNaN(h_)) h_ = defaultArrowH; var pos_ = JPos.getAbsPos(oTrackArea);
oBtnPointer.style.top = pos_.y - h_/2 + "px";
oBtnPointer.style.left = pos_.x + "px";
oBtnPointer.style.cssText += "left:" + pos_.x + "px;top:" + (pos_.y - h_/2) + "px";
}/*-----------------------------------------------------*/
this.createHTrackBar = function(pWidth){
trackBarType = "H";
outlineWidth = pWidth;
createOutline(pWidth); oArrBtnLeft = createArrBtn("LEFT");
oOutline.appendChild(oArrBtnLeft); createHTrackArea(); oArrBtnRight = createArrBtn("RIGHT");
oOutline.appendChild(oArrBtnRight); createHPointer();
}
/*-----------------------------------------------------*/
this.createVTrackBar = function(pHeight){
trackBarType = "V";
outlineHeight = pHeight;
createOutline(pHeight); oArrBtnUp = createArrBtn("UP");
oOutline.appendChild(oArrBtnUp); createVTrackArea(); oArrBtnDown = createArrBtn("DOWN");
oOutline.appendChild(oArrBtnDown); createVPointer();
}
/*-----------------------------------------------------*/ this.setPositionBy = function(pPosition){
position += pPosition;
self.setPosition(position);
}this.setPosition = function(pPosition){
position = pPosition;
if(position > maxPosition)
position = maxPosition;
if(position < minPosition)
position = minPosition; var pos_ = JPos.getAbsPos(oTrackArea); if(trackBarType == "H"){
var w_ = parseInt(getRunStyle(oBtnPointer,"width"));
if(isNaN(w_)) w_ = defaultArrowW; oBtnPointer.style.left = pos_.x - w_/2 + preFrequenceWidth * position + "px";
}else if(trackBarType == "V"){
var h_ = parseInt(getRunStyle(oBtnPointer,"height"));
if(isNaN(h_)) h_ = defaultArrowH;
oBtnPointer.style.top = pos_.y - h_/2 + preFrequenceHeight * position + "px";
} doChange();
}var doChange = function(){
self.onChange(position + base);
}this.getPosition = function(){
return position;
}this.setSkin = function(pSkin){
oOutline.className = pSkin;
recalcTrackArea();
self.setPosition(minPosition)
}
} function JScroll(pWidth,pHeight,pBody){
var self = this;
var oOutline = null;
var oContentArea = null;
var oTrackBarArea = null;this.trackBar = null;var w = JObj.isRate(pWidth) ? pWidth : (!isNaN(pWidth) ? pWidth + "px" : "100%");
var h = JObj.isRate(pHeight) ? pHeight : (!isNaN(pHeight) ? pHeight + "px" : "100%");var db_ = JObj.$(pBody) || document.body;var createOutline = function(){
oOutline = JObj.$c("DIV");
oOutline.className = "oOutline";
db_.appendChild(oOutline);
with(oOutline.style){
width= w;
height = h;
overflow = "hidden";
} oContentArea = JObj.$c("DIV");
oOutline.appendChild(oContentArea);
oContentArea.className = "oContentArea";
with(oContentArea.style){
width = oOutline.clientWidth - 25 + "px";
height = oOutline.clientHeight + "px";
styleFloat = "left";
cssFloat = "left";
}
}this.create = function(){
createOutline();
}var createTrackBar = function(){
oTrackBarArea = JObj.$c("DIV");
oOutline.appendChild(oTrackBarArea);
with(oTrackBarArea.style){
width = 20 + "px";
height = oContentArea.style.height;
stylefloat = "left";
cssFloat = "left";
overflow= "hidden";
}
self.trackBar = new JTrackBar(oTrackBarArea);
self.trackBar.onChange = function(pTrackPosition){
oContentArea.scrollTop = pTrackPosition;
} self.trackBar.setRange(0,oContentArea.scrollHeight);
self.trackBar.createVTrackBar(oTrackBarArea.clientHeight);
self.trackBar.setSkin("JTrackBarSky");
} this.addContextArea = function(pId){
oContentArea.appendChild(JObj.$(pId));
oContentArea.style.overflow = "hidden"; createTrackBar();
}this.setSkin = function(pSkin){
self.trackBar.setSkin(pSkin)
}
}
打包文件下载