正如你在前面的章节中所看到的,元素的属性可以通过 JavaScript 进行修改。两个影响元素可视表现的属性是 class 和 style,它们包含 CSS 代码。

<!DOCTYPE html>
<html>
<head>
  <script>
  function toggle() {
    "use strict";
    // ...
  }
  </script>
  <style>
    .divClassGreen {
      background-color: green;
      padding: 2em;
      margin: 1em;
    }
    .divClassRed {
      background-color: red;
      padding: 2em;
      margin: 1em;
    }
  </style>
</head>

<body id="body">
  <div id="div_1" class="divClassGreen">A DIV element</div>
  <div id="div_2" style="background-color: blue; padding: 2em; margin: 1em">Another DIV element</div>
  <button id="buttonToggle" onclick="toggle()" style="margin:1em 0em 1em 0em">Start</button>
</body>
</html>

class 属性标识在 HTML 的 style 元素中创建的 CSS 类,而 style 属性定义了内联的 CSS 规则(本地)。

要修改它们,可以像处理其他属性一样处理它们。它们没有特殊规则或例外。

示例

我们使用上面的 HTML 文件,仅修改 JavaScript 函数。当点击按钮时,函数将 CSS 类 divClassRed 分配给 div_1,并将 div_2 的内联 style 属性更改为不同的值。

function toggle() {
  "use strict";

  // 定位需要更改的元素  
  const div_1 = document.getElementById("div_1");
  const div_2 = document.getElementById("div_2");

  // 修改 'class' 属性
  div_1.setAttribute("class", "divClassRed");

  // 内联修改
  div_2.setAttribute("style", "background-color: silver; padding: 4em; margin: 2em");
  // 或者:div_2.style = "background-color: silver; padding: 4em; margin: 2em";
}

style 属性存储 CSS 属性,如 colorpadding,并且具有自己的属性。这符合 JavaScript 对象的一般规则。因此,下面的语法与之前的 div_2.setAttribute 调用是等效的。

div_2.style.backgroundColor = "silver"; // 见下文:驼峰命名法
div_2.style.padding = "4em";
div_2.style.margin = "2em";

style 的属性

在 CSS 中,一些属性的名称包含连字符,例如 background-colorfont-size。当你在 JavaScript 中使用它们时,作为 style 属性的一部分,它们的名称会有所变化。连字符后的字符必须大写,并且连字符会消失:style.backgroundColorstyle.fontSize。这种写法叫做驼峰命名法(camel-case)。

div_1.style.fontSize = "2em"; // 设置字体大小作为 'style' 属性
/*
以下行会导致语法错误,因为连字符会被解释为减法运算符。
div_1.style.font-size = "2em";
*/

在 CSS 中的其他地方,这些名称不发生变化。特别是在 HTML <style> 元素中显示的语法,或者作为内联定义使用时,连字符语法保持不变。

最后修改: 2025年01月13日 星期一 15:11