这是一个老问题,但我认为对于不想覆盖先前声明的样式的任何人来说,使用函数可能是值得的。下面的函数仍然使用Object.assign来正确地修复样式。这是我所做的。
function cssFormat(cssText){
let cssObj = cssText.split(";");
let css = {};
cssObj.forEach( style => {
prop = style.split(":");
if(prop.length == 2){
css[prop[0]].trim() = prop[1].trim();
}
})
return css;
}
现在你可以做这样的事情:
let mycssText = "background-color:red; color:white;";
let element = document.querySelector("body");
Object.assign(element.style, cssFormat(mycssText));
你可以通过将元素选择器和文本都提供给函数来简化此操作,这样你就不必每次都使用Object.assign。例如:
function cssFormat(selector, cssText){
let cssObj = cssText.split(";");
let css = {};
cssObj.forEach( style => {
prop = style.split(":");
if(prop.length == 2){
css[prop[0]].trim() = prop[1].trim();
}
})
element = document.querySelector(selector);
Object.assign(element.style, css);
}
现在你可以做到:
cssFormat('body', 'background-color: red; color:white;') ;
//or same as above (another sample)
cssFormat('body', 'backgroundColor: red; color:white;') ;
注意:在选择文档或目标元素(例如body)之前,请确保已经加载。