scroll家族

Apr 10, 2017


缓动动画

缓动动画容易忽略的问题:运动物体无法到达指定位置。 #####原因分析:设定目标位置400 盒子本身位置 目标位置 步长 已经到达了的位置 0 400 0 0 0 400 40 40 40 400 36 76 76 400 32.4 108.4 ……… JS中offsetLeft在运算时,会四舍五入取整,然后计算。 396(四舍五入获取) 400 0.4 396.4 396(四舍五入获取) 400 0.4 396.4 …. #####offsetLeft和style.left的值的获取问题 获取盒子距离左侧具有定位的父盒子的距离(没有的body),四舍五入取整。 Style.left获取的是具体值。

scroll家族

#####ScrollWidth和scrollHeight(盒子自身宽高+padding) 一般是height+padding的值。(调用者:节点元素。属性。) 如果内容高度超出了盒子的高度,高度为超出盒子的内容的高。 IE8(不含IE8)以下,为内容高度,不是盒子高度。 #####scrollTop和scrollLeft 调用者是document。

  1. 兼容性问题 未声明 DTD(谷歌只认识他)document.body.scrollTop; 已经声明DTD(IE678只认识他)document.documentElement.scrollTop; 火狐/谷歌/ie9+以上支持的window.pageYOffset;

    火狐受DTD影响,谷歌和IE9+只认识body,IE678只认识documentElement,兼容写法如下: window.pageYOffset || document.body.offsetTop || document.documentElement.offsetTop

  2. 判断页面有没有DTD document.compatMode === “BackCompat” BackCompat 未声明 CSS1Compat 已声明 注意大小写

案例1:固定导航栏

div中图片间有默认垂直间距的问题:给img设置vertical-align:top;

案例4:楼层跳跃

li的外边框叠加,margin-top:边框宽度px