1、DOM的基本概念
* DOM:文档对象模型
* 其实就是操作 html 中标签的一些能力
* 比如:
* 获取一个元素(标签)
* 移除一个元素
* 创建一个元素
* 向页面添加一个元素
* 给元素绑定一些事件
* 获取元素的属性
* 给元素添加一些css样式
* ...
*
* DOM的核心就是document对象
* document对象是JS内置的一个对象,里边存储着专门用来操作元素的各种方法
* DOM:页面中的标签,我们通过JS获取到以后,就把这个对象叫做DOM对象(DOM节点)
2、获取元素
` <div id="box">我是ID名为box的div标签</div>
<div class="box_cla">我是class名为box_cla的div标签1</div>
<div class="box_cla">我是class名为box_cla的div标签2</div>
<div class="box_cla">我是class名为box_cla的div标签3</div>`
* ①. 获取非常规元素
* document.documentElement -> html标签
* document.head -> head标签
* document.body -> body标签
```js
console.log(document.documentElement)
console.log(document.head)
console.log(document.body)
```
* ②. 获取常规元素
- 2.1 通过ID名获取标签
var box = document.getElementById('box')
console.log(box)
- 2.2 通过class名获取标签
-
语法:document.getElementsByClassName('class名')
-
注意:因为页面中可能会有多个元素的class相同,所以获取到的是一组元素
-
获取到后会把元素放在一个长得很像数组一样的数据结构内,但它并不是数组,我们管这种数据结构叫做伪数组
-
伪数组:长得很像数组,也是通过索引排列,但是没有数组的方法
var box_cla = document.getElementsByClassName('box_cla')
console.log(box_cla)
console.log(box_cla[0])
console.log(box_cla[1])
console.log(box_cla[2])
- 2.3 通过标签名获取
-
语法:document.getElementsByTagName('标签名')
-
注意:获取到的也是一个长得很像数组一样的数据结构,其实就是获取到了一个伪数组
-
想要准确的获取到标签元素,我们需要通过索引来帮助我们拿到
var divs = document.getElementsByTagName('div')
console.log(divs)
- 2.4按照选择器的形式来获取元素
var box2 = document.querySelector('.box_cla')
console.log(box2)
var box3 = document.querySelector('div')
console.log(box3)
- 2.4.2 querySelectorAll,该方法与 querySelector选择器类似,只不过会将所有满足条件的元素都获取到
-
也是放在一个伪数组内
var box4 = document.querySelectorAll('.box_cla')
console.log(box4)
var box5 = document.querySelectorAll('div')
console.log(box5)
3、课堂案例(半成品)
`
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
* {
padding: 0;
margin: 0;
}
#header {
width: 100%;
height: 200px;
background-color: pink;
position: fixed;
top: -200px;
transition: all 0.5s;
}
li{
height:1000px;
}
#btn {
width: 100px;
height: 100px;
background-color: yellow;
position: fixed;
right: 50px;
bottom: 50px;
display: none;
}
</style>
</head>
<body>
<div id="header">顶部</div>
<ul>
<li>1</li>
</ul>
<button id="btn">回到顶部</button>
<script>
var header = document.getElementById('header')
var btn = document.querySelector('#btn')
window.onscroll = function() {
console.log(document.scrollingElement.scrollTop)
if(document.scrollingElement.scrollTop > 300) {
header.style.top = 0
btn.style.display = 'block'
} else {
header.style.top = -200 + 'px'
btn.style.display = 'none'
}
}
</script>
</body>
</html> `