《精通javascript》几个简单的函数(二)

简介:
复制代码
/* *
 * 隐藏元素
 * @param {String} elem
 
*/
function  hide(elem){
    
var  curDisplay  =  getStyle(elem,  ' display ' );
    
    
if (curDisplay  !=   ' none ' ){
        elem.oldDisplay 
=  curDisplay;
    }
    elem.style.display 
=   ' none ' ;
}

/* *
 * 显示元素
 * @param {String} elem
 
*/
function  show(elem){
    elem.style.display 
=  elem.oldDisply  ||   ' block ' ;
}

/* *
 * 设置透明度
 * @param {Object} elem
 * @param {Object} level (0-100)
 
*/
function  setOpacity(elem, level){
    
if (elem.filters){  // 如果是IE
        elem.style.filter  =   ' alpha(opacity= '   +  level  +   ' ) ' ;
        
// 必须设置zoom,要不然透明度在IE下不生效  From:http://blog.csdn.net/dxx1988/article/details/6581430
        elem.style.zoom  =   1 ;
    } 
else  {  // 否则是W3C
        elem.style.opacity  =  level  /   100 ;
    }
}

/* *
 * 滑动
 * @param {Object} elem
 
*/
function  slideDown(elem){
    
// elem.style.height = '0px';
    
    show(elem);
    
var  h  =  fullHeight(elem);
    
    
for ( var  i = 0 ; i <= 100 ; i += 5 ){
        (
function (){
            
var  pos  =  i;
            
            setTimeout(
function (){
                elem.style.height 
=  (pos / 100) * h + 'px';
            }, (pos  +   1 *   5 );
        })();
    }
}
// slideDown($('pText'));
//
alert(fullHeight($('pText')));

/* *
 * 透明度渐显 From: http://mrthink.net/js-fadein-fadeout-fadeto/
 * @param {Object} elem
 * @param {Number} speed 淡入速度,正整数(可选)
 * @param {Number} opacity 淡入到指定的透明度,0~100(可选)
 
*/
function  fadeInThink(elem, speed, opacity){
    speed 
=  speed  ||   20 ;
    opacity 
=  opacity  ||   100 ;
    
    show(elem);
    setOpacity(elem, 
0 );
    
// 初始化透明度变化值为0
     var  val  =   0 ;
    
// 循环将透明值以5递增,即淡入效果
    ( function (){
        setOpacity(elem, val);
        val 
+=   5 ;
        
if  (val  <=  opacity) {
            setTimeout(arguments.callee, speed)
        }
    })();

}


/* *
 * 透明度渐显
 * @param {Object} elem
 
*/
function  fadeIn(elem){
    
// setOpacity(emel, 0);
    
    show(elem);
    
for ( var  i = 0 ; i <= 100 ; i += 10 ){
        (
function (){
            
var  pos  =  i;
            setTimeout(
function (){
                setOpacity(elem, pos);
            }, (pos 
+   1 *   10 );
        })();
    }
}

/* *
 * 透明度渐隐 From: http://mrthink.net/js-fadein-fadeout-fadeto/
 * @param {Object} elem
 
*/
function  fadeOut(elem){
    
var  val  =   100 ;
    
    (
function (){
        setOpacity(elem, val);
        val 
-=   5 ;
        
if (val  >=   0 ){
            setTimeout(arguments.callee, 
50 );
        } 
else   if (val  <   0 ){
            hide(elem);
        }
    })();
}

// fadeInThink($('pText'));

/* *
* 光标的水平位置
* @param {Object} e
*/
function  getX(e){
    e 
=  e  ||  window.event;
    
    
return  e.pageX  ||  e.clientX  +  document.body.scrollLeft;
}

/* *
* 光标的垂直位置
* @param {Object} e
*/
function  getY(e){
    e 
=  e  ||  window.event;
    
    
return  e.pageY  ||  e.clientY  +  document.body.scrollTop;
}

/* *
 * 获得鼠标相对于当前元素的X位置
 * @param {Object} e
 
*/
function  getElementX(e){
    
return  (e  &&  e.layerX)  ||  window.event.offsetX;
}

/* *
 * 获得鼠标相对于当前元素的Y位置
 * @param {Object} e
 
*/
function  getElementY(e){
    
return  (e  &&  e.layerY)  ||  window.event.offsetY;
}

/* *
 * 当前页面的高度
 
*/
function  pageHeight(){
    
return  document.body.scrollHeight;
}

/* *
 * 当前页面的宽度
 
*/
function  pageWidth(){
    
return  document.body.scrollWidth;
}

// alert(pageHeight());

/* *
 * 视口的高度
 
*/
function  windowHeight(){
    
var  de  =  document.documentElement;
    
    
return  self.innerHeight  ||  (de  &&  de.clientHeight)  ||  document.body.clientHeight;
}

/* *
 * 视口的高度
 
*/
function  windowWidth(){
    
var  de  =  document.documentElement;
    
    
return  self.innerWidth  ||  (de  &&  de.clientWidth)  ||  document.body.clientWidth;
}

/* *
 * 浏览器水平滚动位置
 
*/
function  scrollX(){
    
var  de  =  document.documentElement;
    
    
return  self.pageOffsetset  ||   (de  &&  de.scrollLeft)  ||  document.body.scrollLeft;
}

/* *
* 浏览器垂直滚动位置
 
*/
function  scrollY(){
    
var  de  =  document.documentElement;
    
    
return  self.pageYOffset  ||  (de  &&  de.scrollTop)  ||  document.body.scrollTop;
}
复制代码




本文转自豪情博客园博客,原文链接:http://www.cnblogs.com/jikey/archive/2011/07/25/2116696.html,如需转载请自行联系原作者
目录
相关文章
|
15天前
|
JavaScript 前端开发 安全
JavaScript函数详解
JavaScript函数的详细解析,包括函数的定义和调用方式(如一般格式、匿名函数、构造函数、自调用函数、箭头函数和严格模式)、函数参数(arguments对象、可变参数、默认参数值)、闭包的概念和应用实例。
JavaScript函数详解
|
18小时前
|
前端开发 JavaScript
探索JavaScript函数基础
探索JavaScript函数基础
|
2天前
|
JavaScript 前端开发
在JS中如何声明一个函数
在JS中如何声明一个函数
8 2
|
14天前
|
JavaScript 前端开发
JavaScript函数可以返回两个值
JavaScript函数可以返回两个值
|
1月前
|
JavaScript 前端开发
JavaScript基础知识-函数的返回值
关于JavaScript函数返回值的基础知识。
24 9
JavaScript基础知识-函数的返回值
|
14天前
|
自然语言处理 分布式计算 JavaScript
JavaScript函数
JavaScript函数
|
24天前
|
JSON JavaScript 前端开发
JavaScript第五天(函数,this,严格模式,高阶函数,闭包,递归,正则,ES6)高级
JavaScript第五天(函数,this,严格模式,高阶函数,闭包,递归,正则,ES6)高级
|
17天前
|
JSON JavaScript 数据格式
手写JS实现深拷贝函数
本文介绍了如何实现一个深拷贝函数`deepClone`,该函数可以处理对象和数组的深拷贝,确保拷贝后的对象与原始对象在内存中互不干扰。通过递归处理对象的键值对和数组的元素,实现了深度复制,同时保留了函数类型的值和基础类型的值。
17 3
|
14天前
|
缓存 JavaScript 前端开发
了解js基础知识中的作用域和闭包以及闭包的一些应用场景,浅析函数柯里化
该文章详细讲解了JavaScript中的作用域、闭包概念及其应用场景,并简要分析了函数柯里化的使用。
了解js基础知识中的作用域和闭包以及闭包的一些应用场景,浅析函数柯里化
|
17天前
|
前端开发 数据可视化 开发者
D3.js 内置的动画函数
D3.js 内置的动画函数