add: 通过 js 获取元素的样式

This commit is contained in:
qianguyihao 2019-09-03 21:29:32 +08:00
parent 5da19e6ed8
commit 0bb33431a3
9 changed files with 73 additions and 75 deletions

View File

@ -636,6 +636,9 @@ onload 事件会在整个页面加载完成之后才触发。为 window 绑定
上方代码中,方式一和方式二均可以确保:在页面加载完毕后,再执行 js 代码。
## DOM 操作:设置元素的样式
## 我的公众号
想学习**代码之外的技能**?不妨关注我的微信公众号:**千古壹号**id`qianguyihao`)。

View File

@ -1,10 +1,10 @@
## style属性的设置和获取
## style属性的获取和修改
在DOM当中如果想设置样式有两种形式
- className针对内嵌样式
- className针对内嵌样式
- style针对行内样式
@ -46,25 +46,59 @@
上图显示因为border属性不是行内样式所以无法通过style对象获取。
## style属性的注意事项
### 通过 js 读取元素的样式
语法:(方式一)
```javascript
元素.style.样式名
```
备注我们通过style属性读取的样式都是**行内样式**。
语法:(方式二)
```javascript
元素.style["属性"]; //格式
box.style["width"]; //举例
```
方式二最大的优点是:可以给属性传递参数。
### 通过 js 修改元素的样式
语法:
```javascript
元素.style.样式名 = 样式值;
```
举例:
```
box1.style.width = "300px";
box1.style.backgroundColor = "red"; // 驼峰命名法
```
备注我们通过style属性设置的样式都是**行内样式**,而行内样式有较高的优先级。但是如果在样式中的其他地方写了`!important`,则此时`!important`会有更高的优先级。
### style属性的注意事项
style属性需要注意以下几点
- 1样式少的时候使用。
1样式少的时候使用。
- 2style是对象。
2style是对象。我们在上方已经打印出来typeof的结果是Object。
我们在上方已经打印出来typeof的结果是Object。
3值是字符串没有设置值是“”
- 3值是字符串没有设置值是“”。
4命名规则驼峰命名
- 4命名规则驼峰命名。和css不一样。
5只能获取行内样式和内嵌和外链无关
- 5只能获取行内样式和内嵌和外链无关。
本段最开始的时候讲到的。
- 6box.style.cssText = “字符串形式的样式”。
6box.style.cssText = “字符串形式的样式”。
`cssText`这个属性,其实就是把行内样式里面的值当做字符串来对待。在上方代码的基础之上,举例:
@ -85,7 +119,7 @@ style属性需要注意以下几点
![](http://img.smyhvae.com/20180129_1410.png)
## style的常用属性
### style的常用属性
style的常用属性包括
@ -109,29 +143,18 @@ style的常用属性包括
- CSS中background-color
## style属性的举例
我们针对上面列举的几个style的样式来举几个例子
- 1、改变div的大小和透明度
- 举例1、改变div的大小和透明度
- 2、当前输入的文本框高亮显示
- 举例2、当前输入的文本框高亮显示
- 3、高级隔行变色、高亮显示
- 4、百度皮肤
- 继续下面PPT
- 显示隐藏/关闭广告/显示二维码(隐藏方法)
- 提高层级
- 举例3、高级隔行变色、高亮显示
下面来逐一实现。
### 举例1改变div的大小和透明度
代码举例:
@ -155,7 +178,6 @@ style的常用属性包括
</body>
```
### 举例2当前输入的文本框高亮显示
代码实现:
@ -206,8 +228,6 @@ style的常用属性包括
</html>
```
### 举例3高级隔行变色、高亮显示
```html
@ -367,8 +387,6 @@ style的常用属性包括
![](http://img.smyhvae.com/20180129_1520.gif)
代码解释:
上方代码中,我们**用到了计数器myColor来记录每一行最原始的颜色**(赋值白色之前)。如果不用计数器,可能很多人以为代码是写的:(错误的代码)
@ -406,42 +424,23 @@ style的常用属性包括
![](http://img.smyhvae.com/20180129_1525.gif)
## 通过 js 获取元素当前显示的样式
## js 访问css属性
我们在上面的内容中,通过`元素.style.className`的方式只能获取**行内样式**。但是,有些元素,只写了**内嵌样式或外链样式**。
访问行内的css样式有两种方式
既然样式有这么种,那么,如何获取元素当前显示的样式(包括行内样式、内嵌样式、外链样式)呢?我们接下来看一看。
方式一:
```javascript
box.style.width
box.style.top
```
方式二:
```javascript
元素.style["属性"]; //格式
box.style["width"]; //举例
```
方式二最大的优点是:可以给属性传递参数。
### 获取css的样式
### 获取元素当前正在显示的样式
上面的内容中,我们通过`box1.style.属性`只能获得**行内样式**的属性。可如果我们想获取**内嵌或者外链**的样式,该怎么办呢?
1w3c的做法
```javascript
window.getComputedStyle("元素", "伪类");
window.getComputedStyle("要获取样式的元素", "伪元素");
```
两个参数都是必须要有的,如果没有伪类就用 null 代替。
两个参数都是必须要有的。参数二中,如果没有伪元素就用 null 代替一般都传null
2IE和opera的做法
@ -449,7 +448,15 @@ style的常用属性包括
obj.currentStyle;
```
于是,就有了一种兼容性的写法,同时将其封装。代码举例如下:
注意:
- 如果当前元素没有设置该样式,则获取它的默认值。
- 该方法会返回一个对象,对象中封装了当前元素对应的样式,可以通过`对象.样式名`来读取具体的某一个样式。
- 通过currentStyle和getComputedStyle()读取到的样式都是只读的不能修改如果要修改必须通过style属性。
综合上面两种写法,就有了一种兼容性的写法,同时将其封装。代码举例如下:
```html
<!DOCTYPE html>
@ -491,17 +498,8 @@ style的常用属性包括
</html>
```
打印结果:
![](http://img.smyhvae.com/20180204_1425.png)

View File

@ -43,11 +43,6 @@
## 前端的各种框架
### Vue.js、React、AngularJS
AngularJS 提供更多的是一套解决方案,更像是一个生态。
Vue 和 React目前都是用了 Virtual Dom。
### Vue 和 React 的相同点
@ -118,6 +113,8 @@ Vue框架中没有控制器。
Vue 本身并不是一个框架Vue结合周边生态构成一个灵活的、渐进式的框架。
Vue 以及大型 Vue 项目所需的周边技术,构成了生态。
渐进式框架图:
![](http://img.smyhvae.com/20180302_1701.png)

View File

@ -35,7 +35,7 @@
<meta charset="UTF-8">
<title>Title</title>
<!--1、导入Vue的包-->
<script src="vue2.5.15.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js"></script>
</head>
<body>
<!--这个div区域就是MVVM中的 View-->
@ -120,7 +120,7 @@ Mustache 标签将会被替代为对应数据对象上 msg 属性msg定义在
<div id="app">
<span>content:{{name}}</span>
</div>
<script src="vue2.5.16.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js"></script>
<script>
var vm = new Vue({
el: '#app',