中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaScript offset怎么實現鼠標坐標獲取和窗口內模塊拖動

發布時間:2021-05-30 17:54:34 來源:億速云 閱讀:173 作者:小新 欄目:開發技術

小編給大家分享一下JavaScript offset怎么實現鼠標坐標獲取和窗口內模塊拖動,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

offset

offset 即偏移量,使用 offset 系列相關屬性可以 動態的 獲取該元素的位置(偏移)、大小等,如:
元素距離帶有定位父元素的位置
獲取元素自身的大小(寬度高度)
注:返回的數值不帶單位

offset 系列常用的屬性包括:
    element.offsetParent
    返回作為該元素帶有定位的父級元素,如果父級元素沒有定位,則返回 body
    注意,parentNode 和 offsetParent 還是有本質上的區別的:parentNode 返回的是直接父級元素,offsetParent 返回的是帶有定位的父級元素。
    element.offsetTop
    返回元素帶有定位父元素上方的偏移
    element.offsetLeft
    返回元素帶有定位父元素左邊框的偏移
    element.offsetWidth
    返回自身包括 padding, 邊框, 內容區的寬度,返回數值不帶單位
    element.offsetHeight
    返回自身包括 padding, 邊框, 內容區的高度,返回數值不帶單位

offset 和 style 的區別

offsetstyle
offset 可以得到任意樣式表中的樣式值style 只能得到行內樣式表中的樣式值,無法獲得內嵌樣式
offset 系列獲得的數值是沒有單位的style.width 獲得的是帶有單位的字符串
offsetWidth 包含 padding+border+widthstyle.width 獲得不包含 padding 和 border 的值
offsetWidth 等屬性是只讀屬性,只能獲取不能賦值style 屬性是可讀寫屬性,style.width 可以獲取也可以賦值
只想要獲取元素大小位置的時候,用 offset 更合適要對元素樣式進行修改的話,使用 style 更合適

案例一:實時展示鼠標的坐標

演示

JavaScript offset怎么實現鼠標坐標獲取和窗口內模塊拖動

<!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>鼠標位置獲取-01</title>
		<style>
			.box {
				width: 500px;
				height: 500px;
				background-color: #55aaff;
				margin-left: 50px;
			}
		</style>
	</head>
	<body>
		<p>獲取鼠標在盒子內坐標</p>
		<div class="box"></div>
		<script>
			// 在盒子中點擊,想要獲得鼠標距離盒子左右的距離
			// 實現:
			// 1. 獲得鼠標在頁面中的坐標,e.pageX, e.pageY
			// 2. 獲得盒子到頁面中的距離, box.offsetLeft, box.offsetTop
			// 3. 兩者相減就能夠獲得鼠標在盒子中的坐標
			// 下面看實現過程吧!
			const box = document.querySelector(".box");
			box.addEventListener("mousemove", function(e) {
				// console.log(e.pageX, e.pageY);
				// console.log(box.offsetLeft, box.offsetTop);
				const x = e.pageX - this.offsetLeft;
				const y = e.pageY - this.offsetTop;
				box.textContent = `x: ${x}, y: ${y}`;
			});
		</script>
	</body>
</html>

案例二:拖動模塊

演示

JavaScript offset怎么實現鼠標坐標獲取和窗口內模塊拖動

<!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>模塊拖動-02</title>
    <style>
      * {
        margin: 0;
        padding: 0;
      }
      .login,
      .modal {
        display: none;
      }
      .login {
        width: 512px;
        height: 280px;
        position: fixed;
        border: #ebebeb solid 1px;
        left: 50%;
        top: 50%;
        background-color: #fff;
        box-shadow: 0 0 20px #ddd;
        z-index: 999;
        transform: translate(-50%, -50%);
        text-align: center;
      }
      .modal {
        position: absolute;
        top: 0;
        left: 0;
        width: 100vw;
        height: 100vh;
        background-color: rgba(0, 0, 0, 0.3);
        z-index: 998;
      }
      .login-content {
        margin: 100px auto;
        text-align: center;
      }
      .login-content h4:hover,
      .closeBtn:hover {
        cursor: pointer;
      }
      .closeBtn {
        position: absolute;
        right: 10px;
        top: 10px;
      }
      .login h5 {
        margin-top: 10px;
      }
      .login h5:hover {
        cursor: move;
      }
    </style>
  </head>
  <body>
    <div class="login-content">
      <h4 id="openLogin">點擊彈出模擬框</h4>
    </div>
    <div class="login">
      <div class="closeBtn" id="closeBtn">關閉</div>
      <h5 class="loginHeader">點擊我拖動吧</h5>
    </div>
    <div class="modal"></div>
    <script>
      // 獲取元素
      const login = document.querySelector(".login");
      const modal = document.querySelector(".modal");
      const closeBtn = document.querySelector("#closeBtn");
      const openLogin = document.querySelector("#openLogin");
      // 點擊顯示元素
      openLogin.addEventListener("click", () => {
        modal.style.display = "block";
        login.style.display = "block";
      });
      closeBtn.addEventListener("click", () => {
        modal.style.display = "none";
        login.style.display = "none";
      });
      // 實現拖拽移動功能
      // 1. 鼠標按下獲得鼠標在盒子內的坐標
      const loginHeader = document.querySelector(".loginHeader");
      loginHeader.addEventListener("mousedown", function (e) {
        const x = e.pageX - login.offsetLeft;
        const y = e.pageY - login.offsetTop;
        const move = function (e) {
          login.style.left = `${e.pageX - x}px`;
          login.style.top = `${e.pageY - y}px`;
        };
        // 2. 移動鼠標
        document.addEventListener("mousemove", move);
        document.addEventListener("mouseup", function () {
          document.removeEventListener("mousemove", move);
        });
      });
    </script>
  </body>
</html>

看完了這篇文章,相信你對“JavaScript offset怎么實現鼠標坐標獲取和窗口內模塊拖動”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新绛县| 横山县| 曲阜市| 荔波县| 印江| 普安县| 凤庆县| 赤水市| 永安市| 高淳县| 珲春市| 米林县| 菏泽市| 扎囊县| 长丰县| 四川省| 罗源县| 天峨县| 蒲城县| 曲阳县| 武乡县| 铁岭县| 济宁市| 洪雅县| 香格里拉县| 沈阳市| 卢龙县| 唐海县| 尚义县| 弥渡县| 治县。| 延寿县| 景东| 陇南市| 甘孜县| 岳普湖县| 昔阳县| 洛隆县| 滁州市| 巍山| 民县|