我怎样才能在JavaScript中设置多个CSS样式?
我有以下的JavaScriptvariables:
var fontsize = "12px" var left= "200px" var top= "100px"
我知道我可以像这样迭代地将它们设置为我的元素:
document.getElementById("myElement").style.top=top document.getElementById("myElement").style.left=left
是否有可能一次把它们放在一起,像这样?
document.getElementById("myElement").style = allMyStyle
如果您将CSS值设置为string,并且没有为元素设置其他CSS(或者您不关心覆盖),请使用cssText
属性 :
document.getElementById("myElement").style.cssText = cssString;
这在某种意义上是好的,因为它避免每次更改属性时都重新绘制元素(您以某种方式立即“全部”更改它们)。
另一方面,你必须先build立string。
使用Object.assign :
Object.assign(yourelement.style,{fontsize:"12px",left:"200px",top:"100px"});
这也使您能够合并样式,而不是重写CSS样式。
你也可以做一个快捷function:
const setStylesOnElement = function(styles, element){ Object.assign(element.style, styles); }
@Mircea:在一个语句中设置一个元素的多个样式非常容易。 它不影响现有的属性,避免了循环或插件的复杂性。
document.getElementById("demo").setAttribute( "style", "font-size: 100px; font-style: italic; color:#ff0000;");
小心:如果稍后使用此方法添加或更改样式属性,则使用“setAttribute”设置的以前属性将被删除。
做一个function来照顾它,并将其参数与你想要更改的样式一起传递。
function setStyle( objId, propertyObject ) { var elem = document.getElementById(objId); for (var property in propertyObject) elem.style[property] = propertyObject[property]; }
并像这样称呼它
setStyle('myElement', {'fontsize':'12px', 'left':'200px'});
对于propertyObject中的属性的值,你可以使用variables..
一个JavaScript库允许你很容易地做这些事情
jQuery的
$('#myElement').css({ font-size: '12px', left: '200px', top: '100px' });
对象和for-in-loop
或者,一个更优雅的方法是一个基本的对象和for循环
var el = document.getElementById('#myElement'), css = { font-size: '12px', left: '200px', top: '100px' }; for(i in css){ el.style[i] = css[i]; }
在Javascript中设置多个CSS样式属性
document.getElementById("yourElement").style.cssText = cssString;
要么
document.getElementById("yourElement").setAttribute("style",cssString);
例:
document .getElementById("demo") .style .cssText = "margin-left:100px;background-color:red"; document .getElementById("demo") .setAttribute("style","margin-left:100px; background-color:red");
你可以在你的CSS文件中有单独的类,然后将类名分配给你的元素
或者你可以通过样式的属性循环 –
var css = { "font-size": "12px", "left": "200px", "top": "100px" }; for(var prop in css) { document.getElementById("myId").style[prop] = css[prop]; }
不要以为这是可能的。
但是你可以从样式定义中创build一个对象,并通过它们循环。
var allMyStyle = { fontsize: '12px', left: '200px', top: '100px' }; for (i in allMyStyle) document.getElementById("myElement").style[i] = allMyStyle[i];
进一步发展,做一个function:
function setStyles(element, styles) { for (i in styles) element.style[i] = styles[i]; } setStyles(document.getElementById("myElement"), allMyStyle);
使用简单的Javascript,你不能一次设置所有的风格; 你需要为每个人使用单行。
但是,您不必重复document.getElementById(...).style.
代码一遍又一遍; 创build一个对象variables来引用它,你会让你的代码更加可读:
var obj=document.getElementById("myElement").style; obj.top=top; obj.left=left;
…等等。 比你的例子更容易阅读(坦率地说,就像jQuery替代品一样容易阅读)。
(如果Javascript的devise正确,你也可以使用with
关键字,但最好不要这样做,因为这会导致一些讨厌的命名空间问题)
你最好的select可能是创build一个函数来自定义样式:
var setStyle = function(p_elem, p_styles) { var s; for (s in p_styles) { p_elem.style[s] = p_styles[s]; } } setStyle(myDiv, {'color': '#F00', 'backgroundColor': '#000'}); setStyle(myDiv, {'color': mycolorvar, 'backgroundColor': mybgvar});
请注意,您仍然必须使用javascript兼容属性名称(因此backgroundColor
)
见.. in
例:
var myStyle = {}; myStyle.fontsize = "12px"; myStyle.left= "200px"; myStyle.top= "100px"; var elem = document.getElementById("myElement"); var elemStyle = elem.style; for(var prop in myStyle) { elemStyle[prop] = myStyle[prop]; }
这是旧的线程,所以我想为任何人寻找一个现代的答案,我会build议使用Object.keys();
var myDiv = document.getElementById("myDiv"); var css = { "font-size": "14px", "color": "#447", "font-family": "Arial", "text-decoration": "underline" }; function applyInlineStyles(obj) { var result = ""; Object.keys(obj).forEach(function (prop) { result += prop + ": " + obj[prop] + "; "; }); return result; } myDiv.style = applyInlineStyles(css);
我只是在这里偶然发现,我不明白为什么有这么多的代码需要实现这一点。
将您的CSS代码添加为string。
let styles = 'color:red; font-size:15em; transform:rotate(20deg)'; document.querySelector('#styleMe').style = styles;
<div id=styleMe>a</div>
我创build了一个名为styler.js的JavaScript实用程序,在我的博客上很容易使用。 它使获取和设置CSS样式非常容易。
在这里find它: http : //www.tjcafferkey.me/getting-setting-styles-javascript-styler/