一、修改文档元素的style属性。
     例如:e.stye.backgroundColor = "red";
    注意点:
        1.一次只能操作一个属性。
        2.被操作的属性的书写要符合驼峰命名法。
        3.属性值有单位的必须带上单位。
        4.属性值是字符串。
        5.由于操作的是style属性,所以设置样式很有用,但是获取样式值就不推荐了,毕竟只能获取style中的样式值嘛!
 
二、通过setAttribute()方法操作style和class属性。
    例如:

<div id="id1"></div>
		<script type="text/javascript">
			var e = document.getElementById("id1");
			e.setAttribute("style","width:100px;height:100px;background-color:red;");
		</script>

三、通过CSSStyleDeclaration对象的CSSText属性操作样式。
    例如:

<div id="id2"></div>
		<script type="text/javascript">
			var e = document.getElementById("id2");
			e.style.cssText = "width:100px;height:100px;background-color:red;";
		</script>

 

四、Element.classList和Element.className属性

classList有add、remove、toggle、contains、replace等方法来操作元素的class值。

const div = document.createElement('div');
div.className = 'foo';

// our starting state: <div class="foo"></div>
console.log(div.outerHTML);

// use the classList API to remove and add classes
div.classList.remove("foo");
div.classList.add("anotherclass");

// <div class="anotherclass"></div>
console.log(div.outerHTML);

// if visible is set remove it, otherwise add it
div.classList.toggle("visible");

// add/remove visible, depending on test conditional, i less than 10
div.classList.toggle("visible", i < 10 );

console.log(div.classList.contains("foo"));

// add or remove multiple classes
div.classList.add("foo", "bar", "baz");
div.classList.remove("foo", "bar", "baz");

// add or remove multiple classes using spread syntax
const cls = ["foo", "bar"];
div.classList.add(...cls); 
div.classList.remove(...cls);

// replace class "foo" with class "bar"
div.classList.replace("foo", "bar");

className就是获取和设置class属性字符串。

五、操作样式表文件。
利用document.stylesheets[]的insertRule()和deleteRule()等方法操作。不过不推荐,IE浏览器的方法名字不同,且目前兼容性不太好。如果想详细了解一下,请参考《权威指南6》的第436页。

 

 

 

 

 

补充知识:
    如何获取元素的计算样式(最终显示时的样式信息)?
    利用浏览器对象的getComputedStyle()方法。

    注意点:
    1.只能获取,不能修改。
    2.获取的值是绝对值。相对单位会转换成绝对单位,例如:em会转换成px。颜色以rgb或rgba形式返回。
    3.不计算符合属性。例如:不要查询margin,要查询marginTop.
    这个方法也会有欺骗性,例如:查询字体名fontFamily时,它只会返回一串值,而不会告诉你它到底应用了哪个字体。