获取元素尺寸
offsetWidth和offsetHeight
-
offsetWidth
: 获取元素的宽度,包括元素的内容宽度、内边距和边框宽度。 -
offsetHeight
: 获取元素的高度,包括元素的内容高度、内边距和边框高度。
var element = document.getElementById('myElement');
var width = element.offsetWidth;
var height = element.offsetHeight;
console.log('Width: ' + width + 'px');
console.log('Height: ' + height + 'px');
clientWidth和clientHeight
-
clientWidth
: 获取元素的可见区域的宽度,包括元素的内容宽度和内边距,但不包括滚动条和边框。 -
clientHeight
: 获取元素的可见区域的高度,包括元素的内容高度和内边距,但不包括滚动条和边框。
var element = document.getElementById('myElement');
var width = element.clientWidth;
var height = element.clientHeight;
console.log('Client Width: ' + width + 'px');
console.log('Client Height: ' + height + 'px');
获取元素偏移量
offsetLeft和offsetTop
-
offsetLeft
: 获取元素相对于其最近的具有定位的父元素的左边界的偏移量。 -
offsetTop
: 获取元素相对于其最近的具有定位的父元素的上边界的偏移量。
var element = document.getElementById('myElement');
var leftOffset = element.offsetLeft;
var topOffset = element.offsetTop;
console.log('Offset Left: ' + leftOffset + 'px');
console.log('Offset Top: ' + topOffset + 'px');
clientLeft和clientTop
-
clientLeft
: 获取元素的左边框的宽度。 -
clientTop
: 获取元素的上边框的高度。
var element = document.getElementById('myElement');
var leftBorderWidth = element.clientLeft;
var topBorderHeight = element.clientTop;
console.log('Left Border Width: ' + leftBorderWidth + 'px');
console.log('Top Border Height: ' + topBorderHeight + 'px');
操作 DOM 节点
-
我们所说的操作无非就是 增删改查(CRUD)
-
创建一个节点(因为向页面中增加之前,我们需要先创建一个节点出来)
-
向页面中增加一个节点
-
删除页面中的某一个节点
-
修改页面中的某一个节点
-
获取页面中的某一个节点
创建一个节点
-
createElement
:用于创建一个元素节点// 创建一个 div 元素节点 var oDiv = document.createElement('div') console.log(oDiv) // <div></div>
-
创建出来的就是一个可以使用的 div 元素
-
-
createTextNode
:用于创建一个文本节点// 创建一个文本节点 var oText = document.createTextNode('我是一个文本') console.log(oText) // "我是一个文本"
向页面中加入一个节点
-
appendChild
:是向一个元素节点的末尾追加一个节点 -
语法:
父节点.appendChild(要插入的子节点)
// 创建一个 div 元素节点 var oDiv = document.createElement('div') var oText = document.createTextNode('我是一个文本') // 向 div 中追加一个文本节点 oDiv.appendChild(oText) console.log(oDiv) // <div>我是一个文本</div>
-
insertBefore
:向某一个节点前插入一个节点 -
语法:
父节点.insertBefore(要插入的节点,插入在哪一个节点的前面)
<body> <div> <p>我是一个 p 标签</p> </div> <script> var oDiv = document.querySelector('div') var oP = oDiv.querySelector('p') // 创建一个元素节点 var oSpan = document.createElement('span') // 将这个元素节点添加到 div 下的 p 的前面 oDiv.insertBefore(oSpan, oP) console.log(oDiv) /* <div> <span></span> <p>我是一个 p 标签</p> </div> */ </script> </body>
删除页面中的某一个节点
-
removeChild
:移除某一节点下的某一个节点 -
语法:
父节点.removeChild(要移除的字节点)
<body> <div> <p>我是一个 p 标签</p> </div> <script> var oDiv = document.querySelector('div') var oP = oDiv.querySelector('p') // 移除 div 下面的 p 标签 oDiv.removeChild(oP) console.log(oDiv) // <div></div> </script> </body>
修改页面中的某一个节点
-
replaceChild
:将页面中的某一个节点替换掉 -
语法:
父节点.replaceChild(新节点,旧节点)
<body> <div> <p>我是一个 p 标签</p> </div> <script> var oDiv = document.querySelector('div') var oP = oDiv.querySelector('p') // 创建一个 span 节点 var oSpan = document.createElement('span') // 向 span 元素中加点文字 oSpan.innerHTML = '我是新创建的 span 标签' // 用创建的 span 标签替换原先 div 下的 p 标签 oDiv.replaceChild(oSpan, oP) console.log(oDiv) /* <div> <span>我是新创建的 span 标签</span> </div> */ </script> </body>
克隆某一个节点
-
cloneNode
:将页面中的某一个节点克隆一份 -
语法:
节点.cloneNode(boolean)
boolean为true的时候会拷贝后代所有的节点,false或者不传只克隆当前自身节点