## 回顾什么是内联样式
所谓内联样式,就是通过 HTML 页面元素的 style 属性为当前元素定义 CSS 样式。
以下代码示例,就是通过 style 属性定义 CSS 内联样式:
```html
<p style="color: lightcoral;font-weight: bolder">这是一个段落内容.</p>
```
> **值得注意的是:**
>
> - HTML 页面的结构与样式并没有有效分离
> - 定义的 CSS 样式只针对当前元素有效
## 获取内联样式
由于设置内联样式的方式是利用 HTML 页面元素的 style 属性实现的,所以获取内联样式主要是依靠 DOM 中获取属性方式实现。
- Element 对象的 getAttribute() 方法获取 style 属性的值。
- 通过 DOM 对象 HTMLElement 的 style 属性获取。
### Element 对象的 getAttribute() 方法
Element 对象的 getAttribute() 方法的语法结构如下:
```javascript
var value = element.getAttribute('style');
```
以上语法结构中调用 getAttribute() 方法的 element 表示 HTML 页面元素,传递的参数 style 表示属性名称,而返回值则是指定属性名对应的值(内联样式的声明内容)。
我们可以通过以下示例代码,学习如何通过 getAttribute() 方法获取内联样式:
```html
<p id="p1" style="color: lightcoral;font-weight: bolder">这是一个段落内容.</p>
<script>
var pElem = document.getElementById('p1');
var style = pElem.getAttribute('style');
console.log(style);
</script>
```
上述示例代码的输出结果如下:
![](https://box.kancloud.cn/f81bfcb8c6c9d07623945442045f281d_931x67.png)
### DOM 对象的 style 属性
由于 DOM 规范标准中将 Document 对象定位的 HTML 页面元素解析为相应的对象,而这些对象都继承于 HTMLElement 对象。该对象提供了 style 属性,返回 CSSStyleDeclaration 对象。
我们可以通过以下示例代码,学习如何通过 HTMLElement 对象的 style 属性获取内联样式:
```html
<p id="p1" style="color: lightcoral;font-weight: bolder">这是一个段落内容.</p>
<script>
var pElem = document.getElementById('p1');
var style = pElem.style;
console.log(style);
</script>
```
上述示例代码,通过 style 属性会得到 CSSStyleDeclaration 对象,该对象表示一个 CSS 属性键值对的集合。
## CSSStyleDeclaration 对象
通过 element.style 返回的是 CSSStyleDeclaration 对象。CSSStyleDeclaration 对象表示一个CSS属性键值对的集合。
CSSStyleDeclaration 对象提供的属性和方法可以帮助我们获取 CSS 样式的具体内容。
| 属性或方法 | 描述 |
| --- | --- |
| cssText | 声明块的文本内容。|
| length | 属性的数量。|
| item() | 返回属性名。 例如: nameString= styleObj.item(0) Alternative: nameString= styleObj[0]|
| getPropertyValue() | 返回属性值。例如: valString= styleObj.getPropertyValue('color')|
### cssText 属性
通过 element.style.cssText 属性获取 CSS 声明块的文本内容。
我们可以通过以下示例代码,学习如何通过 cssText 属性获取 CSS 声明块的文本内容:
```html
<p id="p1" style="color: lightcoral;font-weight: bolder">这是一个段落内容.</p>
<script>
var pElem = document.getElementById('p1');
var styleDeclar = pElem.style;
var cssText = styleDeclar.cssText;
console.log(cssText);
</script>
```
上述示例代码的输出结果如下:
![](https://box.kancloud.cn/c45978ce18ec6aa030394060a9af122c_932x66.png)
> **值得注意的是:** cssText 属性返回的是 CSS 声明块的文本内容,解析操作时会比较麻烦。
### 遍历 CSSStyleDeclaration 对象
由于 CSSStyleDeclaration 对象具有 length 属性,返回该对象的属性的数量。我们可以通过这一特性实现遍历 CSSStyleDeclaration 对象,从而得到所有属性名和相应的值。
我们可以通过以下示例代码,学习如何遍历 CSSStyleDeclaration 对象:
```html
<p id="p1" style="color: lightcoral;font-weight: bolder">这是一个段落内容.</p>
<script>
var pElem = document.getElementById('p1');
var styleDeclar = pElem.style;
for ( var i=0; i<styleDeclar.length; i++ ){
var propertyName = styleDeclar.item(i);
var propertyValue = styleDeclar.getPropertyValue(propertyName);
console.log(propertyName + ' : ' + propertyValue);
}
</script>
```
上述示例代码的输出结果如下:
![](https://box.kancloud.cn/0708274b202576891d8539d2542d7890_532x141.png)
在上述示例代码中,我们利用 CSSStyleDeclaration 对象的 length 属性控制遍历过程。
在遍历过程中,我们先利用 CSSStyleDeclaration 对象的 item() 方法得到每一个 CSSStyleDeclaration 对象的属性名,再利用 CSSStyleDeclaration 对象的 getPropertyValue() 方法根据属性名得到相应的值。
### item() 方法
通过 element.style.item(index) 获取 CSS 的样式属性名,这种方式也可以通过 element.style[index] 方式进行替换。换句话讲,这两种方式是等价的。
我们可以通过以下示例代码,学习对比这两种方式:
```javascript
for ( var i=0; i<styleDeclar.length; i++ ){
var itemName = styleDeclar.item(i);
var styleName = pElem.style[i];
console.log('item()方法: ' + itemName, 'style[index]: ' + styleName);
}
```
上述示例代码的输出结果如下:
![](https://box.kancloud.cn/d60279ec2d9708d17f66fb8c39c1518b_1231x144.png)
### getPropertyValue() 方法
通过 element.style.item.getPropertyValue() 获取 CSS 的样式属性值,这种方式也可以通过 element.style[propertyName] 方式进行替换。
我们可以通过以下示例代码,学习对比这两种方式:
```javascript
for ( var i=0; i<styleDeclar.length; i++ ){
var propertyName = styleDeclar.item(i);
var value1 = styleDeclar.getPropertyValue(propertyName);
var value2 = pElem.style[propertyName];
console.log('getPropertyValue()方法: ' + value1, 'style[attrName]: ' + value2);
}
```
上述示例代码的输出结果如下:
![](https://box.kancloud.cn/f6a8ae301d04044044c4f606a0217437_1537x137.png)
### 属性链方式操作
由于通过 element.style 返回的是 CSSStyleDeclaration 对象,所以我们也可以通过 element.style.attrName 的方式获取具体的样式属性的值。
我们可以通过以下示例代码,学习这种获取方式:
```html
<p id="p1" style="color: lightcoral;font-weight: bolder">这是一个段落内容.</p>
<script>
var pElem = document.getElementById('p1');
var style = pElem.style;
console.log(style.color);
</script>
```
- 关于
- 第一章 DOM 是什么
- 第一节 DOM 介绍
- 第二节 DOM 树结构
- 第二章 Document 对象
- 第一节 Document 对象介绍
- 第二节 定位页面元素
- 第三节 创建页面元素
- 第三章 Node 对象
- 第一节 Node 对象介绍
- 第二节 判断节点类型
- 第三节 遍历节点
- 第四节 插入节点
- 第五节 删除节点
- 第六节 替换节点
- 第七节 复制节点
- 第八节 textContent 属性
- 第四章 Element 对象
- 第一节 Element 对象介绍
- 第二节 DOM 元素树
- 第三节 定位页面元素
- 第四节 遍历元素
- 第五节 属性操作
- 第六节 innerHTML 属性
- 第五章 样式操作
- 第一节 获取内联样式
- 第二节 获取外联样式表
- 第三节 获取 class 属性
- 第四节 获取当前有效样式
- 第五节 设置内联样式
- 第六节 设置 class 属性
- 第七节 Element 对象的样式属性
- 第六章 事件
- 第一节 什么是事件
- 第二节 注册事件
- 第三节 移除注册事件
- 第四节 Event 事件对象
- 第五节 获取目标元素
- 第六节 阻止默认行为
- 第七节 获取鼠标坐标
- 第八节 事件流
- 第九节 事件委托
- 第七章 表单操作
- 第一节 获取表单
- 第二节 表单操作
- 第三节 表单验证
- 第四节 表单提交
- 第八章 BOM
- 第一节 BOM 是什么
- 第二节 Window 对象
- 第三节 Navigator 对象
- 第四节 History 对象
- 第五节 Location 对象
- 第六节 定时器