CSS 样式通过 JavaScript 内联样式

vah*_*seo 7 javascript css styles inline

我想将特定元素的所有 CSS 样式添加到其内联样式属性中。例如:

我有:

 <div id="d"></div>
Run Code Online (Sandbox Code Playgroud)

和:

#d { background: #444444; width: 50px; height: 20px; display: inline-block; }
Run Code Online (Sandbox Code Playgroud)

现在我想要一个 JavaScript 函数将我的 div 变成这样:

<div id="d" style="background: #444444; width: 50px; height: 20px; display: inline-block;"></div>
Run Code Online (Sandbox Code Playgroud)

请帮我。而且,顺便说一下,我不希望任何 CSS 样式重写任何现有的内联样式。

Mar*_*lli 6

你可以这样做:

function applyStyle(el) {
    s = getComputedStyle(el);

    for (let key in s) {
        let prop = key.replace(/\-([a-z])/g, v => v[1].toUpperCase());
        el.style[prop] = s[key];
    }
}

let x = document.getElementById('my-id');
applyStyle(x);
Run Code Online (Sandbox Code Playgroud)

x要将样式应用到的元素在哪里。

基本上这个函数获取元素的计算样式,然后将每个属性(如填充、背景、颜色等)复制到元素的内联样式。

我不知道你为什么需要这样做,但是,在我看来,但它确实是一种肮脏的方法,我个人不建议使用它。