JS原生第八篇 (帅哥)

1.1 复习    

1. clientX          clientWidth   可视区域的宽度

clientWidth     width  +  padding

offsetWidth     width + padding + border

scrollWidth     width + padding      超过  内容的宽度

  1. window.onresize    窗口改变
  2. 匀速运动函数      原理 :  盒子的原来位置  +  步长

1.2 三个取整函数

这三个函数都是  数学函数

Math

Math.ceil()    向上取整      天花板

比如说  console.log(Math.ceil(1.01))       结果 是 2

console.log(Math.ceil(1.9))        结果 2

console.log(Math.ceil(-1.3))       结果 是  -1

Math.floor()   向下取整      地板

比如说 console.log(Math.floor(1.01))       结果 是 1

console.log(Math.floor(1.9))           结果 1

console.log(Math.floor(-1.3))       结果 是  -2

Math.round()   四舍五入函数

console.log(Math.round(1.01))       结果 是 1

console.log(Math.round(1.9))       结果 是 2

1.3 缓动动画原理

匀速动画的原理:   盒子本身的位置  +  步长

缓动动画的原理:    盒子本身的位置  +  步长 (不断变化的)

封装代码:

1    function animate(obj,target){  //  第一个参数 动谁   第二个参数  动多少

2         clearInterval(obj.timer);

3         obj.timer = setInterval(function() {

4               // 计算步长   动画的原理    盒子本身的位置  +  步长

5               var step = (target - obj.offsetLeft) / 10;  // 步长

6               step =  step > 0 ? Math.ceil(step) : Math.floor(step);  //  取整步长

7               // obj.style.left = 盒子本身的位置  +  步长

8               obj.style.left = obj.offsetLeft + step + "px";

9               if(obj.offsetLeft == target){

10                   clearInterval(obj.timer);

11               }

12         },30)

13     }

1.4  js 常用 访问 CSS 属性 

我们访问得到css 属性,比较常用的有两种:

1. 利用点语法

box.style.width      box.style.top

点语法可以得到 width  属性  和 top属性  带有单位的。 100px

但是这个语法有非常大的缺陷,  不变的。

后面的width  和 top  没有办法传递参数的。

var w = width;

box.style.w

2. 利用 []  访问属性

语法格式:  box.style[“width”]

元素.style[“属性”];

console.log(box.style["left"]);

最大的优点  :  可以给属性传递参数

1.5  得到css 样式  

我们想要获得css 的样式, box.style.left    box.style.backgorundColor

但是它只能得到   行内的样式。

但是我们工作最多用的是 内嵌式 或者 外链式 。

怎么办?

核心: 我们怎么才能得到内嵌或者外链的样式呢?

1.   obj.currentStyle   ie  opera  常用

外部(使用<link>)和内嵌(使用<style>)样式表中的样式(ie和opera)

2 .window.getComputedStyle("元素", "伪类")     w3c

两个选项是必须的, 没有伪类 用 null 替代

3 兼容写法 :

我们这个元素里面的属性很多, left  top  width  ===

我们想要某个属性, 就应该 返回改属性,所有继续封装 返回当前样式的 函数。

1   var demo = document.getElementById("demo");

14     function getStyle(obj,attr) {  //  谁的      那个属性

15         if(obj.currentStyle)  // ie 等

16         {

17             return obj.currentStyle[attr];

18         }

19         else

20         {

21             return window.getComputedStyle(obj,null)[attr];  // w3c 浏览器

22         }

23     }

24     console.log(getStyle(demo,"width"));

1.6  JSON 遍历

for in  关键字

for ( 变量 in  对象)

{ 执行语句;  }

JS原生第八篇 (帅哥)

千万要记得 每个  的意思  :  那是相当重要

k   是  属性

json[k]  得到的是属性值

1.6.1 回调函数

等动画执行完毕再去执行的函数    回调函数

JS原生第八篇 (帅哥)

有个简单的问题? 什么是爱情?

我们怎么知道动画就执行完毕了呢?

很简单   当定时器停止了。 动画就结束了

1.7 in 运算符

in运算符也是一个二元运算符,但是对运算符左右两个操作数的要求比较严格。in运算符要求第1个(左边的)操作数必须是字符串类型或可以转换为字符串类型的其他类型,而第2个(右边的)操作数必须是数组或对象。只有第1个操作数的值是第2个操作数的属性名,才会返回true,否则返回false

// in 可以用用来判断 json 里面有没有某个属性

JS原生第八篇 (帅哥)

1.8 复习

1。  三个取整函数    Math.ceil(1.4)   2  天花板  往高了取

Math.floor(1.01) 1   地板    往小了取

Math.floor(1.9) 1

Math.round()   四舍五入函数   1.5  2

2. 动画的原理:

盒子位置  =   盒子当前的样式 +  步长

3. 以前  offsetLeft   现在  所有的样式   内嵌 外链

ie   obj.currentStyle

window.getComputedStyle(obj, null);

1     function fun(obj,attr)

2     {

3              if(obj.currentStyle)

4 {    return obj.currentStyle[attr];

5  }  else {

6  return window.getComputedStyle(obj,null)[attr]}

7      }

8

1.9 json

两种声明方式

1. 对象声明   var  json = {width:100,height:100}

JS原生第八篇 (帅哥)

JS原生第八篇 (帅哥)

旋转原理:

每次点击 按钮, 他们的json 数值就更换就可以了.

删除和添加 数组

pop()  删除最后一个

shift()  删除第一个

push() 追加 添加到最后面

unshift()  添加到 第一个位置

把 最后一个json 删除   并且把最后一个添加到json 第一个位置

json.unshift(json.pop());

json.pop()  删除最后一个元素

console.log(json.pop())  返回最后一个值

上一篇:Python零基础入门(安装步骤,验证方式, 简单操作)


下一篇:JS原生第三篇 (帅哥)