jQuery学习笔记(四)--- 元素尺寸、位置操作和深浅拷贝

news/2024/7/11 1:39:04 标签: jquery

一、尺寸操作

1、概念

​ jQuery 尺寸操作包括元素宽高的获取和设置,而且不同的方法对应着不同的盒子模型(标准盒模型和怪异盒模型)

2、方法

方法作用
width() / height()获取或设置对应元素的宽度或高度
innerWidth() / innerHeight()获取或设置对应元素的宽度或高度,包含padding
outerWidth() / outerHeight()设置或获取对应元素的宽度或高度,包含padding 和 border
outerWidth(true) / outerHeight(true)只能获取对应元素的宽度或高度,包含padding、border和margin

*注意:① 如果上述方法的参数为空,则是获取对应元素的属性值,值的类型为数字型。

​ ② 如果参数为数字,则是设置对应元素的属性值。不需要写单位。

​ ③ outerWidth() 和 outerHeight() 的参数为 true 时,获取的高度才会包括 margin ,且此时只能获取高度,不能设置高度。

3、案例代码

<body>
    <div></div>
    <script>
        $(function() {
            // 1. width() / height() 获取或设置元素 width和height大小 
            console.log($("div").width());
            // $("div").width(300);

            // 2. innerWidth() / innerHeight()  获取或设置元素 width和height + padding 大小 
            console.log($("div").innerWidth());
            // $("div").innerWidth(300);

            // 3. outerWidth()  / outerHeight()  获取或设置元素 width和height + padding + border 大小 
            console.log($("div").outerWidth());
            // $("div").outerWidth(300);

            // 4. outerWidth(true) / outerHeight(true) 获取 width和height + padding + border + margin
            console.log($("div").outerWidth(true));
        })
    </script>
</body>

二、位置操作

1、概念

​ jQuery的位置操作主要是获取和设置元素的偏移量,以及被卷去的部分大小。

2、方法

方法作用
offset()设置或获取元素的偏移量
position()获取元素相对于带有定位的父级元素的偏移坐标
scrollTop()设置或获取元素被卷去的头部大小
scrollLeft()设置或获取元素被卷去的左侧大小

3、具体语法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、案例代码

// offset() 和 position()
<style>
        .father {
            width: 400px;
            height: 400px;
            background-color: pink;
            margin: 100px;
            overflow: hidden;
            position: relative;
        }
        
        .son {
            width: 150px;
            height: 150px;
            background-color: purple;
            position: absolute;
            left: 10px;
            top: 10px;
        }
    </style>
<body>
    <div class="father">
        <div class="son"></div>
    </div>
        
    <div class="back">返回顶部</div>
    <div class="container"></div>
   
    <script>
        $(function() {
            // 1. 获取设置距离文档的位置(偏移) offset
            console.log($(".son").offset());
            console.log($(".son").offset().top);
            // $(".son").offset({
            //     top: 200,
            //     left: 200
            // });
      
            // 2. 获取距离带有定位父级位置(偏移) position   如果没有带有定位的父级,则以文档为准
            // 这个方法只能获取不能设置偏移
            console.log($(".son").position());
            // $(".son").position({
            //     top: 200,
            //     left: 200
            // });
    </script>
</body>
// scrollTop() 和 scrollLeft()
    <style>
        body {
            height: 2000px;
        }
        
        .back {
            position: fixed;
            width: 50px;
            height: 50px;
            background-color: pink;
            right: 30px;
            bottom: 100px;
            display: none;
        }
        
        .container {
            width: 900px;
            height: 500px;
            background-color: skyblue;
            margin: 400px auto;
        }
    </style>
<body>
    <div class="back">返回顶部</div>
    <div class="container">
    </div>
    <script>
        $(function() {
            $(document).scrollTop(100);
            // 被卷去的头部 scrollTop()  / 被卷去的左侧 scrollLeft()
            // 页面滚动事件
            var boxTop = $(".container").offset().top;
            $(window).scroll(function() {
                // console.log(11);
                console.log($(document).scrollTop());
                if ($(document).scrollTop() >= boxTop) {
                    $(".back").fadeIn();
                } else {
                    $(".back").fadeOut();
                }
            });
            // 返回顶部
            $(".back").click(function() {
                // $(document).scrollTop(0);
                $("body, html").stop().animate({
                    scrollTop: 0
                });
                // $(document).stop().animate({
                //     scrollTop: 0
                // }); 不能是文档而是 html和body元素做动画
            })
        })
    </script>
</body>

三、深浅拷贝

1、概念

​ 在 js 中拷贝对象分为浅拷贝和深拷贝两种。浅拷贝对简单数据类型会完全拷贝过去,但是在遇到复杂数据类型时,只会拷贝数据的地址,所以拷贝后的复杂数据与原来的复杂数据在本质上是同一个,修改两者中的任何一个,都会影响另一个。而深拷贝,则是将简单数据类型和复杂数据类型都完全拷贝一份,与拷贝之前的数据不再关联。

​ 浅拷贝会把接收数据的对象中的原有数据覆盖掉,而深拷贝会将不冲突的属性,会合并到一起。

2、语法

在这里插入图片描述

​ 目标对象是指接收拷贝过来的数据的对象。

3、案例代码

 <script>
        $(function() {
   			// 1.合并数据
            var targetObj = {};
            var obj = {
                id: 1,
                name: "andy"
            };
            // $.extend(target, obj);
            $.extend(targetObj, obj);
            console.log(targetObj);
   
   			// 2. 会覆盖 targetObj 里面原来的数据
            var targetObj = {
                id: 0
            };
            var obj = {
                id: 1,
                name: "andy"
            };
            // $.extend(target, obj);
            $.extend(targetObj, obj);
            console.log(targetObj); 
        })
        
        	// 3、深浅拷贝
        	var targetObj = {
                id: 0,
                msg: {
                    sex: '男'
                }
            };
            var obj = {
                id: 1,
                name: "andy",
                msg: {
                    age: 18
                }
            };
            // // $.extend(target, obj);
            // $.extend(targetObj, obj);
            // console.log(targetObj); // 会覆盖targetObj 里面原来的数据
            // // 1. 浅拷贝把原来对象里面的复杂数据类型地址拷贝给目标对象
            // targetObj.msg.age = 20;
            // console.log(targetObj);
            // console.log(obj);
            // 2. 深拷贝把里面的数据完全复制一份给目标对象 如果里面有不冲突的属性,会合并到一起 
            $.extend(true, targetObj, obj);
            // console.log(targetObj); 
            targetObj.msg.age = 20;
            console.log(targetObj); // msg :{sex: "男", age: 20}
            console.log(obj);
    </script>


http://www.niftyadmin.cn/n/803610.html

相关文章

jQuery学习笔记(五)--- 事件与多库共存

一、事件注册 1、概念 ​ jQuery 提供了方便的事件注册机制&#xff0c;操作简单&#xff0c;且不用担心事件覆盖问题。但也有一定的缺点&#xff0c;比如&#xff1a;普通的事件注册不能做事件委托&#xff0c;且不能实现事件解绑&#xff0c;需要借助其他方法等。 2、语法…

PPT模板下载

Officeplus_微软官方office模板服务平台_ ppt模板_会员免费_工作总结_求职简历https://www.officeplus.cn/ https://www.officeplus.cn/

Ajax学习笔记(一)--- 基础概念和基本使用

一、基础 1、概念 ​ Ajax 异步 JavaScript XML 。Ajax是一种能够在不重新加载整个页面的前提下&#xff0c;与服务器进行交互并更新部分页面内容的技术。能实现页面无刷新且更新数据&#xff0c;大大提高了用户的体验。所有的 Ajax 代码要写到 script 标签之中。 2、原理…

Scanner报错---zhaoYQ

注意&#xff1a;Scanner基本不用&#xff0c;只是在java学期的初期进行测试使用&#xff0c;以后99.9%不用&#xff0c;所以不用太过在意。 1.错误描述&#xff1a; new一个Scanner&#xff0c;然后用nextXX()方法输入&#xff0c;用完之后关闭 然后再new一个Scanner&#x…

Ajax学习笔记(二)--- 模板引擎和FormData 对象

一、模板引擎 1、概念 ​ 原生 ajax 项目中存在数据和HTML字符串拼接导致代码混乱&#xff0c;拼接容易出错&#xff0c;业务逻辑和用户界面混合&#xff0c;代码不易维护的问题。为了解决这些问题我们引入模板引擎这个工具。 ​ art-template 是一个简约、超快的模板引擎&a…

Ajax学习笔记(三)--- 同源政策和跨域解决方案

一、同源政策 ​ 什么是同源&#xff1f;如果两个页面拥有相同的协议、域名和端口&#xff0c;那这两个页面就属于同源页面&#xff0c;如果有其中一项不同&#xff0c;就是不同源。 ​ 同源政策的目的是为了保证用户的信息安全&#xff0c;防止恶意网站窃取数据。最初的同源…

四位二进制八位二进制及其补码

前言&#xff1a; 二进制无法表示负数&#xff0c;只能表示正数 (比如四位二进制0000-1111表示的范围是0-15, 8位二进制0000 0000-1111 1111表示的范围是0-255) 所以计算机科学家把二进制数经过调整&#xff0c;变成了二进制补码&#xff0c;发现二进制补码进行数学运算是正…