HTML的自我修养

04 - 三大家族&&区别

2016-12-18  本文已影响29人  西巴撸

本文是针对刚学编程的小白,都是一些基础知识,如果想了解更多深层一点的东西,欢迎移步本人博客!!

博客地址 点击跳转


----------------- offset ---------------------


自定义动画

animation: flash 0.5s alternate infinite
/*自定义动画*/
@keyframes flash {
    0%{opacity: 0;}
    100%{opacity: 1;}
}

Underscore-min.js

Underscore封装了常用的JavaScript对象操作方法,用于提高开发效率。我们可以将它单独运用到任何一个页面,另外,Underscore还可以被使用在Node.js运行环境。

Underscore中有许多方法在JavaScript1.6中已经被纳入规范,因此在Underscore对象内部,会优先调用宿主环境提供的内置方法(如果宿主环境已经实现了这些方法),以此提高函数的执行效率。

Underscore默认使用_(下划线)来访问和创建对象。

offset家族特点


图解

网页可见区域宽: document.body.clientWidth;

网页可见区域高: document.body.clientHeight;

网页可见区域宽: document.body.offsetWidth (包括边线的宽);

网页可见区域高: document.body.offsetHeight (包括边线的宽);

网页正文全文宽: document.body.scrollWidth;

网页正文全文高: document.body.scrollHeight;

网页被卷去的高: document.body.scrollTop;

网页被卷去的左: document.body.scrollLeft;


offsetWidth和offsetHeight

//offsetWidth = width + border + padding
div{ width:220px; border-left:2px solid red; padding:10px;}
div.offsetWidth = 220 + 2 + 10

offsetLeft和offsetTop


图解

图解 以body为准 以定位的父辈元素为准

offsetParent

offsetXXX 和 style.XXX的区别

附小Demo两个 帮助更好的理解


----------------- scroll ---------------------


核心技术点

换算公式

内置对象document

早期的浏览器Netscape 4和Explorer 4对css进行解析时,并未遵守W3C标准,这时的解析方式就被我们称之为quirks mode(怪异模式),但随着W3C的标准越来越重要,众多的浏览器开始依照W3C标准解析CSS,仿照W3C标准解析CSS的模式我们叫做strict mode(严格模式) 。

scroll家族

图解scrollTop

处理scroll家族浏览器适配问题

var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
var scrollLeft = window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0;

scrollTo(x,y)

滚动事件

// 为了兼容,我们一般采取或运算符
document.body.scrollTop || document.documentElement.scrollTop
注意点:不要在滚动监听的过程中获取offset值,因为在过程中获取的话,offset值会有所变动

兼容

<script>
    window.onscroll = function(){
       var top = document.body.scrollTop || document.documentElement.scrollTop;
        console.log(top);
    }
</script>

实现瀑布流滚动

**瀑布流滚动**

--------------------------- 区别 ----------------------


三大家族的区别

<script>
    window.onload = function(){
        var box = document.getElementById('box');
        // width 和 height
        // 自身内容的宽度/高度 + 内边距 + 边框
        console.log('offset' + box.offsetWidth, box.offsetHeight);
        // 自身内容的宽度/高度 + 内边距
        console.log('client' + box.clientWidth, box.clientHeight);
        // 滚动内容撑起来的宽度 和 高度
        console.log('scroll' + box.scrollWidth, box.scrollHeight);

        // left 和 top
        // 距离第一个有定位的父盒子左边和上边的距离
        console.log('offset' + box.offsetLeft, box.offsetTop);
        // 左边框 和 上边框
        console.log('client' + box.clientLeft, box.clientTop);
        // 水平和垂直滚动的距离
        console.log('scroll' + box.scrollLeft, box.scrollTop);
    }
</script>

offset、client和scroll的区别分析

图解

**图解**

clientWidth / scrollWidth / offsetWidth区别

易混淆点:

上一篇 下一篇

猜你喜欢

热点阅读