第1章 offset家族

1.1 三大家族和一个事件对象

三大家族(offset/scroll/client)

事件对象/event (事件被触动时,鼠标和键盘的状态)(通过属性控制)

1.2 Offset家族简介

offsetWidth和offsetHight 以及offsetLeft和offsetTop以及offsetParent

共同组成了offset家族。

1.2.1 offsetWidth和offsetHight (检测盒子自身宽高+padding+border)

这两个属性,他们绑定在了所有的节点元素上。获取之后,只要调用这两个属性,我们就能够获取元素节点的宽和高。

offset宽/高 = 盒子自身的宽/高 + padding +border;

offsetWidth = width+padding+border;

offsetHeight = Height+padding+border;

1.2.2 offsetLeft和offsetTop (检测距离父盒子有定位的左/上面的距离)

返回距离上级盒子(带有定位)左边的位置

如果父级都没有定位则以body为准

offsetLeft 从父亲的padding 开始算,父亲的border 不算。

在父盒子有定位的情况下,offsetLeft == style.left(去掉px)

1.2.3 offsetParent (检测父系盒子中带有定位的父盒子节点

1、返回改对象的父级 (带有定位)

如果当前元素的父级元素没有进行CSS定位 (position为absolute或 relative,fixed), offsetParent为body。

2、如果当前元素的父级元素中有CSS定位 (position为absolute或 relative,fixed), offsetParent取最近的那个父级元素。

1.3 offsetLeft和style.left区别

一、最大区别在于offsetLeft可以返回没有定位盒子的距离左侧的位置。此时是相对于body,而 style.left不可以,所以要设置盒子的style.left,那么首先要做的是设置盒子本身的定位,这样才有left属性

二、offsetTop 返回的是数字,而 style.top 返回的是字符串,除了数字外还带有单位:px。

三、offsetTop 只读,而 style.top 可读写。(只读是获取值,可写是赋值)

四、如果没有给 HTML 元素指定过 top 样式,则style.top 返回的是空字符串。

style.left=的左边和右边还不一样。(左边的时候是属性,右边的时候是值)

要用定时器,先清除定时器

第2章 动画和封装

1.5 动画的种类

1.5.1 闪现(基本不用)

1.5.2 匀速(今天重点)

1.5.3 缓动(以后重点)

1.6 动画原理

盒子的位置 = 盒子本身所在的位置+步长。

第1章 第二系列scroll

1.1 Scroll家族组成

1.1.1 ScrollWidth和scrollHeight(不包括border)

检测盒子的宽高。(调用者:节点元素。属性。)包括内容和padding

盒子内容的宽高。(如果有内容超出了,显示内容的高度)

IE567可以比盒子小。 IE8+火狐谷歌不能比盒子小

1.1.2 scrollTop和scrollLeft

网页被浏览器遮挡的头部和左边部分。意思就是说,由于滚动条的向上拉,有一部分是被遮挡住的,这一部分就是scrollTop,被卷去的头部和左边部分。

document.title --- 文档标题;

document.head --- 文档的头标签

document.body --- 文档的body标签;

document.documentElement --- 这个很重要 获得HTML标签

直接把scroll封装,return一个json对象,然后通过调用scroll().top就可以得到对应的不同浏览器卷去的宽高。

//简单封装(实际工作使用)

  return   {

         "top": window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop,

         "left": window.pageXOffset || document.body.scrollLeft || document.documentElement.scrollLeft

       }

offsetWidth和offsetHeight指的仅仅只是这个元素,比如DIV元素的宽和高,包括padding和边框,但是scrollHeight和scrollWidth指的是包括由于溢出而无法展示在网页的不可见部分,比如说DIV中的内容有1000px,但是盒子只有400px,但是

最后的高度还是1000px,意思说就是包括内容,不超出的话则指的是盒子本身的高度。

  //json回顾
        var json = {"aaa":111,"bbb":222};

        //遍历方法for...in...  (一般数组和dom对象不使用本方法)
        for(var k in json){
            console.log(k);   //属性
            console.log(json[k]); //值:第二种属性绑定和获取值的方法
        }

  1.鼠标指针相对于屏幕的坐标:screenX/Y

  2.相对于页面且不考虑滚动条是否滚动:clientX/Y,X/Y

  3.相对于页面且考虑滚动条:pageX/Y,layerX/Y,offsetX/Y

1.1 阻止冒泡

w3c的方法是:(火狐、谷歌、IE11)

event.stopPropagation()

IE10以下则是使用:event.cancelBubble = true

兼容代码如下:

var event = event || window.event;

if(event && event.stopPropagation){

event.stopPropagation();

}else{

event.cancelBubble = true;

}

优质内容筛选与推荐>>
1、L1正则与L2正则
2、Mybatis通过接口实现一对一及一对多的查询
3、Dockerfile多阶段构建
4、[js] console 相关
5、概率与统计习题


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号