前端研习录(28)——JavaScript Element对象及其属性讲解及示例分析


版权声明

  • 本文原创作者:清风不渡
  • 博客地址:https://blog.csdn.net/WXKKang

  重拾前端记忆,记录学习笔记,现在进入JavaScript Element对象及其属性部分

一、Element对象

  Element对象对应的是网页的HTML元素。每一个HTML元素,在DOM树上都会对应转化成为一个Element对象

1、Element.id属性

  Element.id属性返回指定元素的id属性,该属性可读可写,示例如下:

<!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>清风不渡</title>
</head>
<body>
    
    <div class="box" id="txt">Hello</div>

    <script>
        var txt = document.getElementById("txt");
        txt.id = "hello"        
    </script>

</body>
</html>

  如此便将id改为了hello,结果如下:

在这里插入图片描述

2、Element.className属性

  Element.className属性 用于读写当前元素节点的class属性,他的值是一个字符串,每个class之间用空格分开,示例如:

<!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>清风不渡</title>
    <style>
        .box1{
            width: 200px;
            height: 200px;
            background-color: rebeccapurple;
        }
    </style>

</head>
<body>
    
    <div class="box" id="txt">Hello</div>

    <script>
        var txt = document.getElementById("txt");
        txt.className = "box box1"     
    </script>

</body>
</html>

  结果如下,我们通过读写class属性为div添加了CSS样式:

在这里插入图片描述

3、Element.classList对象

  classList对象有以下四个方法:

  • classList.add();    添加一个class属性
  • classList.remove();    移除一个class属性
  • classList.contains();    检查当前元素是否包含某个class
  • classList.toggle();    将某个class移入或移出当前元素(存在就移出,不存在就移入)

  示例如下:

<!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>清风不渡</title>
    <style>
        .box{
            width: 200px;
            height: 200px;
        }
        .box1{
            background-color: rebeccapurple;
        }
    </style>

</head>
<body>
    
    <div class="box" id="txt">Hello</div>

    <script>
        var txt = document.getElementById("txt");
        txt.classList.add("box1");
        if (txt.classList.contains("box")){
            txt.classList.remove("box")
        }
        txt.classList.toggle("box")
    </script>

</body>
</html>

  结果如下:

在这里插入图片描述

为什么经过一番操作之后,box和box1都在呢

4、innerHTML和innerText

  Element.innerHTML属性返回一个字符串,等同于该元素包含的所有HTML代码。该属性可读写,常用来设置某个节点的内容。它能改写所有元素节点的内容。

  给innerHTML和innerText加入参数时,都是用于修改元素标签中的内容,而两者的区别是:innerHTML可以识别标签,而innerText识别不了标签,会统一识别成一个字符串,示例如下:

<!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>清风不渡</title>
    <style>
        .box{
            width: 200px;
            height: 200px;
        }
    </style>

</head>
<body>
    
    <div class="box" id="txt1">Hello</div>
    <div class="box" id="txt2">Hello</div>
    
 
    <script>
        var txt1 = document.getElementById("txt1");
        var txt2 = document.getElementById("txt2");
        var str = "<a href='https://www.baidu.com/'>前往百度</a>";
        txt1.innerHTML = str;
        txt2.innerText = str;
    </script>

</body>
</html>

  结果如下:
在这里插入图片描述

二、Element获取元素位置

1、Element.clientHeight

  Element.clientHeight 返回一个整数值,表示元素节点的CSS高度(单位:像素),除了元素本身的高度,它还包括padding部分,但是不包括border和margin部分
  只对块级元素生效,对于行内元素则返回0,如果块级元素没有设置高度,则返回实际高度
  如果有水平滚动条,则还要【减去】水平滚动条的高度

注意:返回的值始终是整数,如果是小数则会四舍五入
常用document.documentElement.clientHeight)返回视口总高度,document.body.clientHeight返回网页总高度

2、Element.clientWidth

  Element.clientWidth返回一个整数值,表示元素节点的CSS宽度(单位:像素),除了元素本身的宽度,它还包括padding部分,但是不包括border和margin部分
  只对块级元素生效,对于行内元素则返回0
  如果有垂直滚动条,则还要【减去】垂直滚动条的宽度

3、Element.scrollHeight

  Element.scrollHeight返回一个整数值,表示元素节点的CSS高度(单位:像素),除了元素本身的高度,它还包括padding部分,但是不包括border和margin部分
  只对块级元素生效,对于行内元素则返回0,如果块级元素没有设置高度,则返回实际高度
  如果有水平滚动条,则还要【加上】水平滚动条的高度

注意:返回的值始终是整数,如果是小数则会四舍五入
常用document.documentElement.scrollHeight)返回视口总高度,document.body.scrollHeight返回网页总高度(含滚动条)

4、Element.scrollWidth

  Element.scrollWidth返回一个整数值,表示元素节点的CSS宽度(单位:像素),除了元素本身的宽度,它还包括padding部分,但是不包括border和margin部分
  只对块级元素生效,对于行内元素则返回0
  如果有垂直滚动条,则还要【加上】垂直滚动条的宽度

5、Element.scrollLeft

  Element.scrollLeft 属性表示当前元素的水平滚动条向右侧滚动的像素数量

6、Element.scrollTop

  Element.scrollLeft 属性表示当前元素的垂直滚动条向下滚动的像素数量

注意:
对于没有滚动条的网页元素,scrollLeft和scrollTop的值为0
  
如果要查看整张网页的滚动距离,则要从document.documentElement元素上读取,如下:
document.documentElement.scrollLeft    向左的像素距离
document.documentElement.scrollTop    向上的像素距离

7、Element.offsetHeight

  Element.offsetHeight 属性返回一个整数,表示元素的CSS垂直高度(单位:像素),包括元素本身的高度、padding和border
  如果有水平滚动条,则还要【加上】水平滚动条的高度

8、Element.offsetWidth

  Element.offsetWidth属性返回一个整数,表示元素的CSS水平宽度(单位:像素),包括元素本身的高度、padding和border
  如果有垂直滚动条,则还要【加上】垂直滚动条的宽度

注意:
如果元素的CSS设定为不可见(display:none),则返回0

9、Element.offsetLeft

  Element.offsetLeft 属性返回当前元素左上角相对于Element.offsetParent节点的水平位移(单位:像素)
  可以理解为:到定位父级左边界的间距

10、Element.offsetTop

  Element.offsetTop属性返回当前元素左上角相对于Element.offsetParent节点的垂直位移(单位:像素)
  可以理解为:到定位父级上边界的间距

注意:
当父节点没有设置定位时,一直向上寻找直至顶层文档
当父节点设置了定位时,则取距离父节点水平、垂直位移

12、示例

  综合以上知识点,示例代码如下:

<!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>清风不渡</title>
    <style>
        *{
            padding: 0;
            margin: 0;
        }

        .box{
            width: 200px;
            height: 200px;
            padding: 10px;
            border: 5px solid red;
            margin: 20px;
            background-color:yellowgreen;

        }

        .login{
            height: 150px;
            width: 150px;
            overflow: scroll;
        }

        .login1{
            position: relative;
        }

        h1{
            height: 60px;
        }
    </style>

</head>
<body>
        <div class="box" id="box1">Hello</div>


    <div class="login" id="login">
        <div class="box" id="box2">Hello</div>
    </div>
    

    <span id="txt">清风不渡</span>

    <h1>标题</h1>
    <h1>标题</h1>
    <h1>标题</h1>
    <h1>标题</h1>
    <h1>标题</h1>
    <h1>标题</h1>
    
 
    <script>
        var box1 = document.getElementById("box1");
        var box2 = document.getElementById("box2");
        var login = document.getElementById("login");
        var txt = document.getElementById("txt");



        console.log("---------------------clientWidth   clientHeight----------------------");
        console.log("---------------------获取块级元素高宽度,含padding----------------------");
        console.log(box1.clientHeight);
        console.log(box1.clientWidth);

        console.log("---------------------获取行内元素高宽度,返回0----------------------");
        console.log(txt.clientHeight);
        console.log(txt.clientWidth);

        console.log("---------------------获取视口及网页高度----------------------");
        console.log(document.documentElement.clientHeight);
        console.log(document.body.clientHeight);

        console.log("---------------------scrollHeight   scrollWidth----------------------");
        console.log("---------------------获取块级元素高宽度,含padding,不含滚动条----------------------");
        console.log(login.clientHeight);
        console.log(login.clientWidth);

        console.log("---------------------获取块级元素高宽度,含padding,含滚动条----------------------");
        console.log(login.scrollHeight);
        console.log(login.scrollWidth);

        console.log("---------------------获取行内元素高宽度,返回0----------------------");
        console.log(txt.scrollHeight);
        console.log(txt.scrollWidth);

        console.log("---------------------获取视口及网页高度----------------------");
        console.log(document.documentElement.scrollHeight);
        console.log(document.body.scrollHeight);

        console.log("---------------------scrollHeight   scrollWidth----------------------");
        console.log("---------------------获取元素水平垂直方向的滚动距离----------------------");
        console.log(box2.scrollLeft);
        console.log(box2.scrollTop);
        console.log("---------------------获取整张网页水平垂直方向的滚动距离----------------------");
        console.log(document.documentElement.scrollLeft);
        console.log(document.documentElement.scrollTop);

        console.log("---------------------offsetHeight   offsetWidth----------------------");
        console.log("---------------------获取块级元素高宽度,含padding,border----------------------");
        console.log(box1.offsetHeight);
        console.log(box1.offsetWidth);

        console.log("---------------------获取行内元素高宽度,不返回0----------------------");
        console.log(txt.offsetHeight);
        console.log(txt.offsetWidth);

        console.log("---------------------offsetLeft   offsetTop----------------------");
        console.log("---------------------获取元素左上角相对于Element.offsetParent节点的水平、垂直位移----------------------");
        console.log("---------------------当父节点没有设置定位时,一直向上寻找直至顶层文档----------------------");
        console.log(box2.offsetLeft);
        console.log(box2.offsetTop);


        console.log("---------------------获取元素左上角相对于Element.offsetParent节点的水平、垂直位移----------------------");
        console.log("---------------------当父节点设置了定位时,则取距离父节点水平、垂直位移----------------------");
        login.classList.add("login1");
        console.log(box2.offsetLeft);
        console.log(box2.offsetTop);


        
    </script>

</body>
</html>

  页面效果如下:
在这里插入图片描述
  控制台效果如下:

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值