//获取元素的样式值。
function getStyle(elem, name) {
if (elem.style[name]) {
return elem.style[name];
} else if (elem.currentStyle) {
return elem.currentStyle[name];
} else if (document.defaultView && document.defaultView.getComputedStyle) {
name = name.replace(/([A-Z])/g, "-$1");
name = name.toLowerCase();
var s = document.defaultView.getComputedStyle(elem, "");
return s && s.getPropertyValue(name);
} else {
return null
}
}
//获取元素相对于这个页面的x和y坐标。
function pageX(elem) {
return elem.offsetParent ? (elem.offsetLeft + pageX(elem.offsetParent)) : elem.offsetLeft;
} function pageY(elem) {
return elem.offsetParent ? (elem.offsetTop + pageY(elem.offsetParent)) : elem.offsetTop;
}
//获取元素相对于父元素的x和y坐标。
function parentX(elem) {
return elem.parentNode == elem.offsetParent ? elem.offsetLeft : pageX(elem) - pageX(elem.parentNode);
} function parentY(elem) {
return elem.parentNode == elem.offsetParent ? elem.offsetTop : pageY(elem) - pageY(elem.parentNode);
}
//获取使用css定位的元素的x和y坐标。
function posX(elem) {
return parseInt(getStyle(elem, "left"));
} function posY(elem) {
return parseInt(getStyle(elem, "top"));
}
//设置元素位置。
function setX(elem, pos) {
elem.style.left = pos + "px";
} function setY(elem, pos) {
elem.style.top = pos + "px";
}
//增加元素X和y坐标。
function addX(elem, pos) {
set(elem, (posX(elem) + pos));
} function addY(elem, pos) {
set(elem, (posY(elem) + pos));
}
//获取元素使用css控制大小的高度和宽度
function getHeight(elem) {
return parseInt(getStyle(elem, "height"));
} function getWidth(elem) {
return parseInt(getStyle(elem, "width"));
}
//获取元素可能,完整的高度和宽度
function getFullHeight(elem) {
if (getStyle(elem, "display") != "none") {
return getHeight(elem) || elem.offsetHeight;
} else {
var old = resetCss(elem, {
display: "block",
visibility: "hidden",
position: "absolute"
});
var h = elem.clientHeight || getHeight(elem);
restoreCss(elem, old);
return h;
}
} function getFullWidth(elem) {
if (getStyle(elem, "display") != "none") {
return getWidth(elem) || elem.offsetWidth;
} else {
var old = resetCss(elem, {
display: "block",
visibility: "hidden",
position: "absolute"
});
var w = elem.clientWidth || getWidth(elem);
restoreCss(elem, old);
return w;
}
}
//设置css,并保存旧的css
function resetCss(elem, prop) {
var old = {};
for (var i in prop) {
old[i] = elem.style[i];
elem.style[i] = prop[i];
}
return old;
} function restoreCss(elem, prop) {
for (var i in prop) {
elem.style[i] = prop[i];
}
}
//显示和隐藏
function show(elem) {
elem.style.display = elem.$oldDisplay || " ";
} function hide(elem) {
var curDisplay = getStyle(elem, "display");
if (curDisplay != "none") {
elem.$oldDisplay = curDisplay;
elem.style.display = "none";
}
}
//设置透明度
function setOpacity(elem, num) {
if (elem.filters) {
elem.style.filter = "alpha(opacity=" + num + ")";
} else {
elem.style.opacity = num / 100;
}
}
//滑动
function slideDown(elem) {
var h = getFullHeight(elem);
elem.style.height = "0px";
show(elem);
for (var i = 0; i <= 100; i += 5) {
new function() {
var pos = i;
setTimeout(function() {
elem.style.height = (pos / 100 * h) + "px";
}, (pos * 10));
}
}
}
//渐变
function fadeIn(elem) {
show(elem);
setOpacity(elem, 0);
for (var i = 0; i <= 100; i += 5) {
new function() {
var pos = i;
setTimeout(function() {
setOpacity(elem, pos);
}, (pos + 1) * 10);
}
}
}
//获取鼠标光标相对于整个页面的位置。
function getX(e) {
e = e || window.event;
return e.pageX || e.clientX + document.body.scrollLeft;
} function getY(e) {
e = e || window.event;
return e.pageY || e.clientY + document.body.scrollTop;
}
//获取鼠标光标相对于当前元素的位置。
function getElementX(e) {
return (e && e.layerX) || window.event.offsetX;
} function getElementY(e) {
return (e && e.layerY) || window.event.offsetY;
}
//获取页面的高度和宽度
function getPageHeight() {
var de = document.documentElement;
return document.body.scrollHeight || (de && de.scrollHeight);
} function getPageWidth() {
var de = document.documentElement;
return document.body.scrollWidth || (de && de.scrollWidth);
}
//获取滚动条的位置。
function scrollX() {
var de = document.documentElement;
return self.pageXOffset || (de && de.scrollLeft) || document.body.scrollLeft;
} function scrollY() {
var de = document.documentElement;
return self.pageYOffset || (de && de.scrollTop) || document.body.scrollTop;
}
//获取视口的高度和宽度。
function windowHeight() {
var de = document.documentElement;
return self.innerHeight || (de && de.offsetHeight) || document.body.offsetHeight;
} function windowWidth() {
var de = document.documentElement;
return self.innerWidth || (de && de.offsetWidth) || document.body.offsetWidth;
}

《Pro JavaScript Techniques》中的一些函数的更多相关文章

  1. 借助JavaScript中的时间函数改变Html中Table边框的颜色

    借助JavaScript中的时间函数改变Html中Table边框的颜色 <html> <head> <meta http-equiv="Content-Type ...

  2. javascript中通过匿名函数进行事件绑定

  3. 前端学习 第二弹: JavaScript中的一些函数与对象(1)

    前端学习 第二弹: JavaScript中的一些函数与对象(1) 1.apply与call函数 每个函数都包含两个非继承而来的方法:apply()和call(). 他们的用途相同,都是在特定的作用域中 ...

  4. JavaScript中的普通函数与构造函数比较

    问题 什么是构造函数?构造函数与普通函数区别是什么?用new关键字的时候到底做了什么?构造函数有返回值怎么办?构造函数能当普通函数调用吗? thisthis永远指向当前正在被执行的函数或方法的owne ...

  5. 理解和使用 JavaScript 中的回调函数

    理解和使用 JavaScript 中的回调函数 标签: 回调函数指针js 2014-11-25 01:20 11506人阅读 评论(4) 收藏 举报  分类: JavaScript(4)    目录( ...

  6. JavaScript中变量和函数声明的提升

    现象: 1.在JavaScript中变量和函数的声明会提升到最顶部执行. 2.函数的提升高于变量的提升. 3.函数内部如果用var声明了相同名称的外部变量,函数将不再向上寻找. 4.匿名函数不会提升. ...

  7. [转]理解与使用Javascript中的回调函数

    在Javascript中,函数是第一类对象,这意味着函数可以像对象一样按照第一类管理被使用.既然函数实际上是对象:它们能被“存储”在变量中,能作为函数参数被传递,能在函数中被创建,能从函数中返回. 因 ...

  8. 【JavaScript】理解与使用Javascript中的回调函数

    在Javascript中,函数是第一类对象,这意味着函数可以像对象一样按照第一类管理被使用.既然函数实际上是对象:它们能被“存储”在变量中,能作为函数参数被传递,能在函数中被创建,能从函数中返回. 因 ...

  9. JavaScript ES7 中使用 async/await 解决回调函数嵌套问题

    原文链接:http://aisk.me/using-async-await-to-avoid-callback-hell/ JavaScript 中最蛋疼的事情莫过于回调函数嵌套问题.以往在浏览器中, ...

随机推荐

  1. 使用minikube在windows构建kubernetes群集

    只建议在开发环境中使用,不建议在windows下使用docker或者kubernetes. 1. 安装VirtualBox或者Hyper-v(安装步骤略) 2. 下载kubectl和minikube工 ...

  2. neo4j中索引的使用

    neo4j可以对node和relationship中的属性建立索引,索引中的node(relationship)和属性对key-value为多对多的关系.一个node(relationship)可以在 ...

  3. 转:VMMAP内存查看工具

    转:http://blog.csdn.net/woddle/article/details/45337767 下面我根据VMMap来详细介绍一下内存的分类. 内存是一个很复杂的系统,其中的paging ...

  4. Java导出数据生成Excel表格

    事先准备: 工具类: package com.wazn.learn.util.export; import java.sql.Connection; import java.sql.DriverMan ...

  5. 【JAVAWEB学习笔记】19_事务概述、操作、特性和隔离级别

    事务 学习目标 案例-完成转账 一.事务概述 1.什么是事务 一件事情有n个组成单元 要不这n个组成单元同时成功 要不n个单元就同时失败 就是将n个组成单元放到一个事务中 2.mysql的事务 默认的 ...

  6. MAC OS 10.10.5虚拟机免费下载(可安装Xcode7)

    MAC OS 10.10.5虚拟机免费下载(可安装Xcode7)   MAC OS 10.10.5虚拟机免费(可安装Xcode7)下载地址:链接: http://pan.baidu.com/s/1dD ...

  7. 【BZOJ 3043】 3043: IncDec Sequence (差分)

    3043: IncDec Sequence Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 589  Solved: 332 Description 给 ...

  8. [BZOJ4555][TJOI2016&HEOI2016]求和(分治FFT)

    4555: [Tjoi2016&Heoi2016]求和 Time Limit: 40 Sec  Memory Limit: 128 MBSubmit: 525  Solved: 418[Sub ...

  9. 【概率】【找规律】hdu6229 Wandering Robots

    题意:一个机器人在正方形迷宫的左上角,迷宫里有些格子有障碍物,每一步机器人会等概率地向能走的格子转移(包含自身).问你无限长的时间之后,机器人处于矩形对角线的右下方的概率. 无限长时间意味着,起点没有 ...

  10. FileZilla提权的过程

    话不多说,我们直接操作! 首先我们通过 webshell 找到 FileZilla 的文件目录,找到 FileZilla Server Interface.xml 文件,打开.我们可以看到它的连接地址 ...