bistukey 2019-06-21
1: 获得页面上某个元素在视口坐标系的位置和元素的尺寸:
element.getBoundingClientRect(): { left:8 top:104 right:1432 bottom: 158 width:1424 height:54 }
以上方法返回一个对象,包含六个元素,分别是此元素左上角和右下角的坐标,以及元素的宽和高。但是在原始的IE中并不返回width和height, 不过可以自己通过坐标计算出来。
值得注意的是getBoundingClientRect()不是实时的,在调用此函数后,用户再滚动或者改变浏览器窗口大小,它返回的值并不会更新。
针对所有的文档元素,它们都定义了三组变量跟尺寸和位置有关:
1: 包含border的尺寸
offsetWidth//返回包含border在内的宽度 offsetHeight//返回包含border在内的高度 offsetTop//元素与其offsetParent之间的垂直距离 offsetLeft//元素与其offsetParent之间的水平距离 offsetParent//
2: 不包含border的尺寸
clientWidth//返回不包含border在内的宽度 clientHeight//返回不包含border在内的高度 clientLeft// clientTop//
3: 元素的滚动条
scrollWidth//对于可滚动的元素(overflow:scroll)的元素,返回元素内容的宽度 scrollHeight//对于可滚动的元素(overflow:scroll)的元素,返回元素内容的高度 scrollLeft//对于可滚动的元素(overflow:scroll)的元素,返回/设置元素的滚动条向右边滚动的px scrollTop//overflow:scroll)的元素,返回/设置元素的滚动条向下边滚动的px
Vue和React是数据驱动视图,如何有效控制DOM操作?能不能把计算,更多的转移为js计算?因为js执行速度很快。patch函数-->patch,对比tag,对比tag与key,对比children