JavaScript CSS 操作与元素定位工具函数集

作者:白露

时间:2026-10-23

浏览:493

本文提供了一套完整的 JavaScript 工具函数,涵盖获取元素最终 CSS 样式、计算元素相对于文档或父级的坐标位置、获取元素尺寸(含隐藏元素)、控制元素显隐及设置透明度等功能。代码包含对 IE 旧版与现代浏览器的兼容性处理,适用于需要精细控制页面元素布局与样式的场景。

文章目录

获取元素最终 CSS 样式

// 获取元素最终计算后的 CSS 样式属性值的函数


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;


}

// 确定元素相对于父亲的位置的两个函数


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 容器的位置


function posX(elem){


return parseInt(getStyle(elem,"left"));


}

function posY(elem){


return parseInt(getStyle(elem,"top"));


}

元素位置设置与调整

// 设置元素 x 和 y 位置(与当前位置无关)的函数


function setX(elem,pos){


elem.style.left = pos+"px";


}

function setY(elem,pos){


elem.style.top = pos+"px";


}

// 调整元素相对于当前位置的距离的函数


function addX(elem,pos){


setX(posX(elem)+pos);


}

function addY(elem,pos){


setY(posY(elem)+pos);


}

元素尺寸获取与隐藏元素处理

// 获取元素当前的高度和宽度


function getHeight(elem){


return parseInt(getStyle(elem,'height'));


}

function getWidth(elem){


return parseInt(getStyle(elem,'width'));


}

// 即是元素隐藏,也能分别获取它潜在的完整高度和宽度的两个函数


function fullHeight(elem){


if(getStyle(elem,'display')!='none'){


return elem.offsetHeight||getHeight(elem);


}

var old = resetCSS(elem,{


display:'',


visibility:'hidden',


position:'absolute'


});

var h = elem.clientHeight||getHeight(elem);


restoreCSS(elem,old);


return h;


}

function fullWidth(elem){


if(getStyle(elem,'display')!='none'){


return elem.offsetWidth || getWidth(elem);


}

var old = resetCSS(elem,{


display:'',


visibility:'hidden',


position:'absolute'


});

var w = elem.clientWidth || getWidth(elem);


restoreCSS(elem,old);


return w;


}

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];


}
}

元素显隐控制与透明度设置

// 使用 CSS 的 display 属性来切换元素可见性的一组函数


function hide(elem){


var curDisplay = getStyle(elem,'display');


if(curDisplay != 'none'){


elem.$oldDisplay= curDisplay;


}

elem.style.display = 'none';


}

function show(elem){


elem.style.display = elem.$oldDisplay ||'';



}

// 设置元素的透明度


function setOpacity(elem,level){


if(elem.filters){


elem.style.filters = 'alpha(opacity='+level+')';


}else{


elem.style.opacity = level/100;


}
}

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章