使用style对象

课后整理 2020-12-10

DOM 2级样式规范为style对象定义了一些属性和方法,简单说明如下:

下面重点几个常用方法。

getPropertyValue()方法

getPropertyValue()能够获取指定元素样式属性的值。用法如下:

var value  = e.style.getPropertyValue(propertyName)

参数propertyName表示CSS属性名,不是CSS脚本属性名,复合名应使用连字符进行连接。

【示例1】下面代码使用getPropertyValue()方法获取行内样式中width属性值,然后输出到盒子内显示。

<script>
window.onload  = function(){ 
    var box =  document.getElementById("box");             //获取<div id="box">
    var width =  box.style.getPropertyValue("width");              //读取div元素的width属性值
    box.innerHTML =  "盒子宽度:" + width;              //输出显示width值
}
</script>
<div  id="box" style="width:300px; height:200px;border:solid 1px  red" >盒子</div>

setProperty()方法

setProperty()方法为指定元素设置样式。具体用法如下:

e.style.setProperty(propertyName, value, priority)

参数说明如下:

【示例2】在下面示例中使用setProperty()方法定义盒子的显示宽度和高度分别为400像素和200像素。

<script> 
window.onload  = function(){
    var box =  document.getElementById("box");             //获取<div id="box">
    box.style.setProperty("width","400px","");                //定义盒子宽度为400像素
    box.style.setProperty("height","200px","");               //定义盒子宽度为200像素
}
</script>
<div  id="box" style="border:solid 1px red" >盒子</div>

removeProperty()方法

removeProperty()方法可以移出指定CSS属性的样式声明。具体用法如下:

e.style.  removeProperty (propertyName)

item()方法

item()方法返回style对象中指定索引位置的CSS属性名称。具体用法如下:

var  name = e.style.item(index)

参数index表示CSS样式的索引号。

getPropertyPriority(方法

getPropertyPriority()方法可以获取指定CSS属性中是否附加了!important优先级命令,如果存在则返回“important”字符串,否则返回空字符串。

【示例3】在下面示例中,定义鼠标移过盒子时,设置盒子的背景色为蓝色,而边框颜色为红色,当移出盒子时,又恢复到盒子默认设置的样式;而单击盒子时则在盒子内输出动态信息,显示当前盒子的宽度和高度。

<script>
window.onload  = function(){
    var box =  document.getElementById("box");      //获取盒子的引用
    box.onmouseover = function(){                         //定义鼠标经过时的事件处理函数
        box.style.setProperty("background-color",  "blue", "");//设置背景色为蓝色
        box.style.setProperty("border",  "solid 50px red", ""); //设置边为50像素红色实线
    }
    box.onclick = function(){                                  //定义鼠标单击事件处理函数
        box .innerHTML = (box.style.item(0) +  ":" + box.style.getPropertyValue("width"));
                                                                             //显示盒子的宽度
        box .innerHTML = box .innerHTML +  "<br>" +   (box.style.item(1) + ":" +  box.style.getPropertyValue("height"));                              //显示盒子的高度
    }
    box.onmouseout = function(){                           //定义鼠标移出时的事件处理函数
        box.style.setProperty("background-color",  "red", ""); //设置背景色为红色
        box.style.setProperty("border",  "solid 50px blue", "");//设置边框为50像素的蓝色实线
    }
}
</script>
<div  id="box" style="width:100px; height:100px; background-color:red;  border:solid 50px blue;"></div>

【示例4】针对示例3,可以使用点语法快速设计相同的交互效果,这样能够兼容IE早期版本,JavaScript代码如下所示。

<script>
window.onload  = function(){ 
    var box =  document.getElementById("box");                    //获取盒子的引用
    box.onmouseover = function(){
        box.style.backgroundColor  = "blue";                         //设置背景样式
        box.style.border  = "solid 50px red";                          //设置边框样式
    }
    box.onclick = function(){                                                //读取并输出行内样式
        box  .innerHTML = "width:" + box.style.width; 
        box  .innerHTML = box .innerHTML + "<br>" +  "height:" + box.style.height;
    }
    box.onmouseout = function(){                                         //设计移出之后,恢复默认样式
        box.style.backgroundColor  = "red";
        box.style.border  = "solid 50px blue";
    }
}
</script>