JS(11)

来源:互联网 发布:ps软件培训班 编辑:程序博客网 时间:2024/05/17 22:25

复习

  1. clientX clientWidth 可视区域的宽度
    clientWidth width + padding
    offsetWidth width + padding + border
    scrollWidth width + padding 超过 内容的宽度
  2. window.onresize 窗口改变
  3. 匀速运动函数原理 : 盒子的原来位置 + 步长

三个取整函数

这三个函数都是 数学函数
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 

缓动动画原理

匀速动画的原理: 盒子本身的位置 + 步长
缓动动画的原理: 盒子本身的位置 + 步长 (不断变化的)
封装代码:

     function animate(obj,target){  //  第一个参数 动谁   第二个参数  动多少          clearInterval(obj.timer);          obj.timer = setInterval(function() {                // 计算步长   动画的原理    盒子本身的位置  +  步长                var step = (target - obj.offsetLeft) / 10;  // 步长                step =  step > 0 ? Math.ceil(step) : Math.floor(step);  //  取整步长                // obj.style.left = 盒子本身的位置  +  步长                obj.style.left = obj.offsetLeft + step + "px";               if(obj.offsetLeft == target){                    clearInterval(obj.timer);                }          },30)      }

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"]);

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

得到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");2      function getStyle(obj,attr) {  //  谁的      那个属性3          if(obj.currentStyle)  // ie 等4          {5              return obj.currentStyle[attr];  6          }7          else8          {9              return window.getComputedStyle(obj,null)[attr];  // w3c 浏览器10          }11      }12      console.log(getStyle(demo,"width"));

JSON 遍历

for in 关键字
for ( 变量 in 对象) { 执行语句; }

var json = {width:200,height:300,left:50}console.log(json.width);for(var k in json){    console.log(k);   // k 遍历的是json  可以得到的是  属性    console.log(json[k]);  // json[k]  得到 是属性的  值}

k 是 属性
json[k] 得到的是属性值

回调函数

等动画执行完毕再去执行的函数 回调函数
我们怎么知道动画就执行完毕了呢?
很简单 当定时器停止了。 动画就结束了

in 运算符

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

// in 可以用用来判断 json 里面有没有某个属性var json = {name: "刘德华",age : 55};// in 可以用用来判断 json 里面有没有某个属性if("andy" in json){    console.log("yes");  // 返回的是 yes }else{    console.log("no");}
原创粉丝点击