JavaScript 获取样式

IT技术 javascript css styling
2021-03-14 06:25:40

是否可以使用 JavaScript 获取对象的所有样式?就像是:


main.css
-------
#myLayer {
  position: absolute;
  width: 200px;
  height: 100px;
  color: #0000ff;
}

main.js
-------
var ob = document.getElementById("myLayer");
var pos = ob.(getPosition);
// Pos should equal "absolute" but
// ob.style.position would equal null
// any way to get absolute?


3个回答

您正在谈论所谓的Computed Style,请查看以下有关如何获取它的文章:

在上一篇文章中,这里有一个函数:

function getStyle(oElm, strCssRule){
    var strValue = "";
    if(document.defaultView && document.defaultView.getComputedStyle){
        strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule);
    }
    else if(oElm.currentStyle){
        strCssRule = strCssRule.replace(/\-(\w)/g, function (strMatch, p1){
            return p1.toUpperCase();
        });
        strValue = oElm.currentStyle[strCssRule];
    }
    return strValue;
}

如何使用它:

CSS:

/* Element CSS*/
div#container{
    font: 2em/2.25em Verdana, Geneva, Arial, Helvetica, sans-serif;
}

JS:

var elementFontSize = getStyle(document.getElementById("container"), "font-size");

你可能会使用:

var ob = document.getElementById("myLayer");
var pos = ob.style.position;

每个 CSS 属性都有自己的对象模型。通常那些包含“-”的 css 属性是使用 java 模型编写的。

例如:

//getting background-color property
var ob = document.getElementById("myLayer");
var color = ob.style.backgroundColor;

如果您想获取为对象定义的所有 css 属性,则必须将它们一一列出,因为即使您没有在样式表中设置该属性,对象也会使用默认值。

“Java 模型”是什么意思?你是说驼峰?
2021-04-23 06:25:40
如果您更仔细地阅读问题,您会发现 OP没有使用内联 CSS。
2021-05-06 06:25:40

Polyfill 使用 javascript 获取元素的当前 CSS 样式...访问链接了解更多信息

/**
* @desc : polyfill for getting the current CSS style of the element
* @param : elem - The Element for which to get the computed style.
* @param : prop - The Property for which to get the value
* @returns : The returned style value of the element
**/
var getCurrentStyle = function (ele, prop) {

var currStyle;
if (!window.getComputedStyle) {
    currStyle = ele.currentStyle[prop];
} else {
    currStyle = window.getComputedStyle(ele).getPropertyValue(prop);
}

return currStyle;
}


/** How to use **/
var element = document.getElementById("myElement");
getCurrentStyle(element, "width"); // returns the width value