function scroll() {
if (window.pageYOffset !== null) {
return {
top : window.pageYOffset,
left: window.pageXOffset
}
} else if (document.compatMode === 'CSS1Compat') {
return {
top: document.documentElement.scrollTop,
left: document.documentElement.scrollLeft
}
} else {
return {
top: document.body.scrollTop,
left: document.body.scrollLeft
}
}
}
function $(id) {
return typeof id === 'string' ? document.getElementById(id) : null;
}
function getViewportOffset() {
if (window.innerWidth) {
return {
w: window.innerWidth,
h: window.innerHeight
}
} else {
if (document.compatMode === "BackCompat") {
return {
w: document.body.clientWidth,
h: document.body.clientHeight
}
} else {
return {
w: document.documentElement.clientWidth,
h: document.documentElement.clientHeight
}
}
}
}
function constant(ele, target, speed = 60) {
clearInterval(ele.timer);
let dir = ele.offsetLeft < target ? speed : -speed;
ele.timer = setInterval(function () {
ele.style.left = ele.offsetLeft + dir + 'px';
if(Math.abs(target - ele.offsetLeft) <= speed) {
clearInterval(ele.timer);
ele.style.left = target + 'px';
}
}, speed)
}
function getCSSAttrValue(obj, attr) {
if(obj.currentStyle){
return obj.currentStyle[attr];
}else {
return window.getComputedStyle(obj, null)[attr];
}
}
function buffer(obj, json, fn) {
clearInterval(obj.timer);
var begin = 0, target = 0, speed = 0;
obj.timer = setInterval(function () {
var flag = true;
for(var k in json){
if("opacity" === k){
begin = Math.round(parseFloat(getCSSAttrValue(obj, k)) * 100) || 100;
target = parseInt(json[k] * 100);
}else if("scrollTop" === k){
begin = Math.ceil(obj.scrollTop);
target = parseInt(json[k]);
}else {
begin = parseInt(getCSSAttrValue(obj, k)) || 0;
target = parseInt(json[k]);
}
speed = (target - begin) * 0.2;
speed = (target > begin) ? Math.ceil(speed) : Math.floor(speed);
if("opacity" === k){
obj.style.opacity = (begin + speed) / 100;
obj.style.filter = 'alpha(opacity:' + (begin + speed) +')';
}else if("scrollTop" === k){
obj.scrollTop = begin + speed;
}else {
obj.style[k] = begin + speed + "px";
}
if(begin !== target){
flag = false;
}
}
if(flag){
clearInterval(obj.timer);
console.log(fn);
if(fn){
fn();
}
}
}, 20);
}
转载请注明原文地址:https://ipadbbs.8miu.com/read-6118.html