JavaScript基础(八)——DOM基础

一、DOM介绍

1、什么是DOM?

DOMDocument Object Model),文档对象模型

我们可以通过DOM操作html元素

2、节点

1、元素节点

2、属性节点

3、文本节点

网页效果的实现通过:

1、操作节点(元素节点、属性节点、文本节点)

2、修改元素的样式(CSS)

3、document对象

DOM通过document对象,为开发者提供了大量的接口(api)来操作DOM树

 (1)document.getElementById()和document.getElementsByClassName():尽量不用

<body>
    <h1 id="title">hello world</h1>
    <button class="btn">1</button>
    <button class="btn">2</button>
    <button class="btn">3</button>
    <script>
        let h1 = document.getElementById("title");
        let btns = document.getElementsByClassName("btn");
        console.log(h1);
        console.log(btns);
    </script>
</body>

显示如下:

  

输出如下:

 

分析: 

getElementById()的返回值是一个节点

getElementsByClassName()的返回值是节点的集合

这两个方法比较老,尽量不用。

(2).innerHTML

<body>
    <h1 id="title">hello world</h1>
    <button class="btn">1</button>
    <button class="btn">2</button>
    <button class="btn">3</button>
    <script>
        let h1 = document.getElementById("title");
        let btns = document.getElementsByClassName("btn");

        console.log(h1.innerHTML);
        h1.innerHTML = "I love China";
        console.log(h1.innerHTML);
        for (let i in btns) {
            btns[i].innerHTML = "按钮" + i;
        }
    </script>
</body>

显示如下:

  

分析:

通过innerHTML可以获取到节点的文本值,并且可以修改它。

修改成功后,我们发现,页面上的文本也随之更改了。

(3)document.querySelector()和document.querySelectorAll()

我们修改这两行代码,效果跟上面一样。 

        let h1 = document.querySelector("#title");
        let btns = document.querySelectorAll(".btn");

输出如下: 

 4、事件

(1)案例一——鼠标的点击、移入、移出事件以及节点的style

<!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>Demo11</title>
    <style>
        .box {
            width: 100px;
            height: 100px;
            background-color: red;
        }
    </style>
</head>

<body>
    <button>按钮</button>
    <div class="box">

    </div>
    <script>
        let btn = document.querySelector("button");
        btn.onclick = function () {
            console.log("hello btn");
        }

        let box = document.querySelector(".box");
        box.onmouseleave = function () {
            console.log("鼠标移出");
            this.style.backgroundColor = "red";
        }

        box.onmouseenter = function () {
            console.log("鼠标移入");
            this.style.backgroundColor = "blue";
        }
    </script>

</body>

</html>

 显示如下:

分析:

onclick()方法,是鼠标点击事件。

onmouseenter()方法,是鼠标移入事件。

onmouseleaver()方法,是鼠标移出事件。 

通过this.style.backgroundColor更改div的背景颜色

(2)案例二 ——节点的id、src

<!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>Demo12</title>

    <style>
        img {
            width: 600px;
            height: 400px;
        }
    </style>
</head>

<body>
    <div>
        <img src="../picture/java.jpg" alt="">
    </div>
    <button id="btnId1">1</button>
    <button id="btnId2">2</button>
    <button id="btnId3">3</button>
    <script>
        let img = document.querySelector("img");
        let imageSrcList = ["../picture/java.jpg", "../picture/前端.jpg",
            "../picture/php.jpg"
        ]

        let btn = document.querySelectorAll("button");
        for (let i in btn) {
            btn[i].onclick = function () {
                console.log(this.id);
                img.src = imageSrcList[i];
            }
        }
    </script>
</body>

</html>

 效果如下:

分析: 

当点击不同的按钮时,通过更改img的src属性,从而实现,图片的切换。 

同时,点击不同的按钮时,控制台会输出其对应的id

(3)案例三——通过节点的className更改样式

<!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>Demo13</title>
    <style>
        .active {
            background-color: red;
        }
    </style>
</head>

<body>
    <h1>hello world</h1>
    <h1>hello world</h1>
    <h1>hello world</h1>
    <h1>hello world</h1>
    <h1>hello world</h1>
    <script>
        let h1List = document.querySelectorAll("h1");
        for (let i in h1List) {
            h1List[i].onclick = function () {
                if (h1List[i].className !== "active") {
                    h1List[i].className = "active";
                } else {
                    h1List[i].className = "";
                }
            }
        }
    </script>
</body>

</html>

效果如下: 

分析:

通过设置节点的className属性,达到更换样式的效果。 

(4)案例四——轮播图

<!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>Demo14</title>

    <style>
        .swiper {
            width: 640px;
            height: 320px;
            position: relative;
            overflow: hidden;
        }

        .container {
            width: 1920px;
            height: 320px;
            display: flex;
            transition: transform 0.3s;
        }

        .container img {
            width: 640px;
            height: 320px;
        }

        .btn {
            position: absolute;
            bottom: 0px;
        }
    </style>
</head>

<body>
    <div class="swiper">
        <div class="container">
            <img src="../picture/java.jpg" alt="">
            <img src="../picture/前端.jpg" alt="">
            <img src="../picture/php.jpg" alt="">
        </div>
        <div class="btn">
            <button>1</button>
            <button>2</button>
            <button>3</button>
        </div>
    </div>

    <script>
        let container = document.querySelector(".container");
        let btnList = document.querySelectorAll(".btn button");
        for (let i in btnList) {
            btnList[i].onclick = function () {
                container.style.transform = `translate(${-640 * i}px)`;
            }
        }
    </script>

</body>

</html>

效果如下:

分析:

当点击按钮1时,切换到第一张图片。

当点击按钮2时,切换到第二张。

当点击按钮3时,切换到第三张。

通过点击事件,实现点击时,向左平移640px。

将平移效果加上过渡。 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pro1822

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值