JS DOM BOM知识回顾

2019-05-23  本文已影响0人  Yokiijay

window.location.href = 'https://baidu.com' 页面跳转
const page = window.open('https://baidu.com') 新窗口页面跳转
page.close() 关闭新打开的窗口

滚动条

window.pageYOffset 获取滚动条已滚动的距离
window.pageXOffset
window.scrollY 也是获取滚动距离
window.scrollX
window.scroll( x, y ) 设置滚动距离
window.scrollTo( x, y ) 同上,推荐使用这个
window.scrollBy( x, y ) 每次滚动的距离

平滑滚动距离,有兼容性问题

window.scrollTo( {
  left: 0,
  top:  document.body.offsetHeight,
  behavior: 'smooth'
} )

每次滚动一屏实例 :

function rollOnce(){
  window.scrollTo({
    left: 0,
    top: window.scrollY + window.innerHeight,
    behavior: 'smooth'
  })
}

window.scrollBy( 0, window.innerHeight )

offset家族

elem.offsetLeft 获取元素到有定位的父级的距离
elem.offsetTop

elem.offsetWidth 获取元素包括padding width border在内的宽度
elem.offsetHeight

client家族

elem.clientLeft 获取元素左边框距离(就是border-left的宽啦)
elem.clientTop
elem.clientWidth 获取元素可见区域的宽 width padding 不包括border
elem.clientHeight

scroll家族

elem.scrollWidth 获取元素能够滚动的宽(真实宽度) width padding 不包括border
elem.scrollHeight

client和scroll区别就是client不包含内容超出的宽高,而scroll包含因为scroll就是真实的宽高

鼠标位置

ev.pageX 鼠标相对于整个页面左上角的位置,包括滚动
ev.clientX 鼠标相对于浏览器窗口左上角的位置,不包括滚动
ev.screenX 相对于显示器屏幕
ev.offsetX 相对于事件对象的定位父级的位置


DOM操作——怎样添加、移除、移动、复制、创建和查找节点。

(1)创建新节点

  createDocumentFragment()    //创建一个DOM片段
  createElement()   //创建一个具体的元素
  createTextNode()   //创建一个文本节点

(2)添加、移除、替换、插入

  appendChild()
  removeChild()
  replaceChild()
  insertBefore()

(3)查找

  getElementsByTagName()    //通过标签名称
  getElementsByName()    //通过元素的Name属性的值
  getElementById()    //通过元素Id,唯一性

Video DOM操作

(1)video元素.requestFullScreen() 全屏显示

(2)document.webkitExitFullScreen() 退出全屏显示

(3)video元素.onfullscreenchange = function (){} 全屏切换事件

(3)document.fullScreenElement 返回null则非全屏,全屏则返回全屏元素

toggleFullScreen 兼容函数

const _toggleFullScreen = function _toggleFullScreen() {
    if (document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement) {
        if (document.cancelFullScreen) {
            document.cancelFullScreen();
        } else {
            if (document.mozCancelFullScreen) {
                document.mozCancelFullScreen();
            } else {
                if (document.webkitCancelFullScreen) {
                    document.webkitCancelFullScreen();
                }
            }
        }
    } else {
        const _element = document.documentElement;
        if (_element.requestFullscreen) {
            _element.requestFullscreen();
        } else {
            if (_element.mozRequestFullScreen) {
                _element.mozRequestFullScreen();
            } else {
                if (_element.webkitRequestFullscreen) {
                    _element.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);
                }
            }
        }
    }
};

safari for mac 尤其例外!!
video元素.webkitSetPresentationMode("fullscreen") 全屏播放
video元素.webkitSetPresentationMode("picture-in-picture") 画中画播放

上一篇 下一篇

猜你喜欢

热点阅读