API-元素尺寸與位置

學習目標:

  • 掌握元素尺寸與位置

學習內容:

  1. 元素尺寸與位置
  2. 仿京東固定導航欄案例
  3. 實現bilibili點擊小滑塊移動效果

元素尺寸與位置:

  • 使用場景:

前面案例滾動多少距離,都是我們自己算的,最好是頁面滾動到某個元素,就可以做某些事。

簡單說,就是通過js的方式,得到元素在頁面中的位置

這樣我們可以做,頁面滾動到這個位置,就可以做某些操作,省去計算了。
在這里插入圖片描述

  • 獲取寬高:

獲取元素的自身寬高、包含元素自身設置的寬高、padding、border

offsetWidth和offsetHeight

獲取出來的是數值,方便計算。

注意:獲取的是可視寬高,如果盒子是隱藏的,獲取的結果是0。

  • 獲取位置:
  1. offsetLeft和offsetTop 注意是只讀屬性

獲取元素距離自己定位父級元素的左、上距離。

在這里插入圖片描述

 <title>offsetLeft</title><style>div {position: relative;width: 200px;height: 200px;background: pink;margin: 100px;}p {width: 100px;height: 100px;background: purple;margin: 50px;}</style>
</head><body><div><p></p></div><script>const div = document.querySelector('div')const p = document.querySelector('p')// console.log(div.offsetLeft)//檢測盒子的位置  最近一級帶有定位的祖先元素console.log(p.offsetLeft)</script></body>
  1. element.getBoundingClientRect()

方法返回元素大小及其相對于視口的位置。

在這里插入圖片描述

 <title>獲取元素大小位置的另外方法</title><style>body {height: 2000px;}div {width: 200px;height: 200px;background: pink;margin: 100px;}</style>
</head><body><div></div><script>const div = document.querySelector('div')console.log(div.getBoundingClientRect())</script></body>
  • 小結
  1. offsetWidthoffsetHeight是得到元素什么的寬高?

     內容 + padding + border
    
  2. offsetTopoffsetLeft得到位置以誰為準?

    帶有定位的父級
    如果都沒有則以文檔左上角為準
    
屬性作用說明
scrollLeftscrollTop 被卷去的頭部和左側配合頁面滾動來用,可讀寫
clientWidthclientHeight獲得元素寬度和高度不包含border、margin,滾動條 ,用于js獲取元素大小,只讀屬性
offsetWidthoffsetHeight獲得元素寬度和高度包含border、margin,滾動條,只讀
offsetTopoffsetLeft獲取元素距離自己定位父級元素的左、上距離獲取元素位置的時候使用,只讀屬性

仿京東固定導航欄案例:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>練習-仿京東固定導航欄案例</title><style>* {margin: 0;padding: 0;box-sizing: border-box;}.content {overflow: hidden;width: 1000px;height: 3000px;background-color: pink;margin: 0 auto;}.backtop {display: none;width: 50px;left: 50%;margin: 0 0 0 505px;position: fixed;bottom: 60px;z-index: 100;}.backtop a {height: 50px;width: 50px;background: url(./images/bg2.png) 0 -600px no-repeat;opacity: 0.35;overflow: hidden;display: block;text-indent: -999em;cursor: pointer;}.header {position: fixed;top: -80px;left: 0;width: 100%;height: 80px;background-color: purple;text-align: center;color: #fff;line-height: 80px;font-size: 30px;transition: all .3s;}.sk {width: 300px;height: 300px;background-color: skyblue;margin-top: 500px;}</style>
</head><body><div class="header">我是頂部導航欄</div><div class="content"><div class="sk">秒殺模塊</div></div><div class="backtop"><img src="./images/close2.png" alt=""><a href="javascript:;"></a></div><script>const sk = document.querySelector('.sk')const header = document.querySelector('.header')//1.頁面滾動事件window.addEventListener('scroll', function () {//當頁面滾動到 秒殺模塊的時候,就改變頭部的top值//頁面被卷去的頭部 >= 秒殺模塊的位置  offsetTopconst n = document.documentElement.scrollTop// if (n >= sk.offsetTop) {//   header.style.top = 0// } else {//   header.style.top = '-80px'// }header.style.top = n >= sk.offsetTop ? 0 : '-80px'})</script></body></html>

實現bilibili點擊小滑塊移動效果:

<style>.line {transition: all .3s;}</style><script>//1.獲取父元素 添加事件委托const list = document.querySelector('.tabs-list')const line = document.querySelector('.line')//2.給a注冊事件list.addEventListener('click', function (e) {//判斷點擊的是aif (e.target.tagName === 'A') {// console.log(11)//得到當前鏈接的  offsetLeft// console.log(e.target.offsetLeft)//讓line 盒子來進行移動line.style.transform = `translateX(${e.target.offsetLeft}px)`}})</script>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/36214.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/36214.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/36214.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[leetcode]圓圈中最后剩下的數字/ 破冰游戲

. - 力扣&#xff08;LeetCode&#xff09; class Solution {int f(int num, int target) {if (num 1) {return 0;}int x f(num - 1, target);return (target x) % num;} public:int iceBreakingGame(int num, int target) {return f(num, target);} };

程序猿大戰Python——Python與MySQL交互一

pymysql模塊的安裝 目標&#xff1a;了解如何安裝pymysql模塊&#xff1f; 當要使用Python和MySQL數據庫進行交互&#xff0c;需要借助一個第三方模塊&#xff1a;pymysql。 在使用pymysql模塊前&#xff0c;先進行安裝&#xff1a; pip install pymysql 有時使用pip instal…

從零開始做題:有手就行

1 題目 2 解題 ARPHCR工具破解 得到flag DASCTF{2b3767763885a019b65bbfe9d1136c3b}

數據結構與算法筆記:高級篇 - 向量空間:如何實現一個簡單的音樂推薦系統?

概述 很多人喜都喜愛聽歌&#xff0c;以前我們用 MP3 聽歌&#xff0c;現在直接通過音樂 App 在線就能聽歌。而且&#xff0c;各種音樂 App 的功能越來越強大&#xff0c;不僅可以自己選歌聽&#xff0c;還可以根據你聽歌的喜好&#xff0c;給你推薦你可能會喜好的音樂&#x…

【WEB前端2024】3D智體編程:喬布斯3D紀念館-第49課-機器人自動跳舞

【WEB前端2024】3D智體編程&#xff1a;喬布斯3D紀念館-第49課-機器人自動跳舞 使用dtns.network德塔世界&#xff08;開源的智體世界引擎&#xff09;&#xff0c;策劃和設計《喬布斯超大型的開源3D紀念館》的系列教程。dtns.network是一款主要由JavaScript編寫的智體世界引擎…

DevExpress Office File API教程 - 如何使用AI服務增強Word文檔可訪問性和語言支持?

DevExpress Office File API是一個專為C#, VB.NET 和 ASP.NET等開發人員提供的非可視化.NET庫。有了這個庫&#xff0c;不用安裝Microsoft Office&#xff0c;就可以完全自動處理Excel、Word等文檔。開發人員使用一個非常易于操作的API就可以生成XLS, XLSx, DOC, DOCx, RTF, CS…

使用隱式事件執行控制圖

什么是隱式事件&#xff1f; 隱式事件是圖表執行時發生的內置事件&#xff1a; 圖表喚醒 進入一個狀態 退出狀態 分配給內部數據對象的值 這些事件是隱式的&#xff0c;因為您沒有顯式地定義或觸發它們。隱式事件是它們發生的圖表的子級&#xff0c;僅在父圖表中可見。 隱式事…

【AI生成】海上風電中衛星網絡與無線自組網的應用分析

隨著可再生能源的不斷發展&#xff0c;海上風電作為其中的重要組成部分&#xff0c;在我國能源結構調整中占據越來越重要的地位。近年來&#xff0c;我國海上風電產業發展迅速&#xff0c;海上風電場數量和規模不斷擴大&#xff0c;相應地&#xff0c;海上風電運維和安全保障的…

git branch -a 不顯示遠程分支修復

使用git remote -v命令&#xff0c;查看所有的遠程倉庫及其URL如果沒有&#xff0c;說明沒有遠程倉庫&#xff0c;繼續往下走使用git remote add origin <url>命令來添加或修改遠程倉庫&#xff1a;其中<url>是遠程倉庫的正確URL&#xff0c;就是git項目的http的地…

實現Java中的圖像處理功能

實現Java中的圖像處理功能 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01;在本篇文章中&#xff0c;我們將探討如何在Java中實現圖像處理功能。圖像處理是計算機…

Embedding的概念和展開

前言 本章&#xff0c;我們介紹一個非常細的細節技術。讓我們微調大模型的一些特性和能力。 在大模型的AI套路演化過程中&#xff0c;其實經歷了太多的技術革新和方式變化&#xff0c;Embedding其實也可能是其中一個高速湮滅的技術點之一。 對比LoRA現在大紅大紫&#xff0c…

每個 Node.js 開發人員都應該知道的13個庫(下)

7. Sequelize Mongoose是一個Node。基于js的MongoDB對象建模工具&#xff0c;通常被稱為對象數據建模&#xff08;ODM&#xff09;庫&#xff0c;它提供了諸如鉤子、模型驗證、連接和查詢等功能。 Mongoose為應用程序數據提供了一個基于模式的解決方案&#xff0c;它在應用程…

【JavaScript腳本宇宙】玩轉數據存儲:深入剖析提升 Web 應用程序性能的六大利器

從本地到云端&#xff1a;全面解析滿足各種需求的高性能 JavaScript 數據庫庫 前言 本文將介紹幾個流行的JavaScript數據庫庫&#xff0c;包括localForage、Dexie.js、PouchDB、LokiJS和NeDB。每個庫都有自己的特點和適用場景。通過比較它們的功能和使用方式&#xff0c;可以…

論文翻譯 | ITER-RETGEN:利用迭代檢索生成協同增強檢索增強的大型語言模型

論文地址&#xff1a;Enhancing Retrieval-Augmented Large Language Models with Iterative Retrieval-Generation Synergy 摘要 檢索增強生成由于有望解決包括過時知識和幻覺在內的大型語言模型的局限性而引起廣泛關注。然而&#xff0c;檢索器很難捕捉相關性&#xff0c;尤…

BurpSuite2024.5.3專業版,僅支持Java21以上

01更新介紹 此版本引入了對 WebSocket 的 Burp Scanner 支持、對錄制的登錄編輯器的改進、WebSocket 匹配和替換規則以及許多性能改進。我們還刪除了一些冗余的掃描檢查。 Burp Scanner 對 WebSockets 的支持我們更新了內部代理的配置&#xff0c;以允許 WebSocket 流量。這使…

代碼隨想錄算法訓練營第五十一天| 115.不同的子序列、583. 兩個字符串的刪除操作、 72. 編輯距離

LeetCode 115.不同的子序列 題目鏈接&#xff1a;https://leetcode.cn/problems/distinct-subsequences/description/ 文章鏈接&#xff1a;https://programmercarl.com/0115.%E4%B8%8D%E5%90%8C%E7%9A%84%E5%AD%90%E5%BA%8F%E5%88%97.html 思路 * dp[i][j]&#xff1a;以i-1…

Docker快速極簡配置nginx實現不同域名訪問分流

文章目錄 前言安裝配置使用鏡像拉取及環境配置修改代理文件編寫docker-compose文件啟動nginx代理 總結 前言 本文主要記錄如何使用docker安裝配置Nginx&#xff0c;如何使用Nginx把通過80、443端口訪問的請求根據域名分發到不同端口。那么什么是Nginx呢&#xff0c;下邊做個簡…

將產品制作成3D模型在網站上展示需要多少費用?

將產品制作成3D模型并在網站上展示的費用會因多種因素而異&#xff0c;包括模型的復雜度、所需的細節程度、制作3D模型的軟件和工具、以及是否需要專業設計師的服務等。此外&#xff0c;不同的3D模型制作服務提供商可能會有不同的定價標準。 如果能自己制作3D模型&#xff0c;…

友力科技IDC機房搬遷方案流程分享

機房搬遷流程 系統搬遷實施流程包括&#xff1a;準備、拆卸、裝運、安裝、調試等五個流程&#xff0c;具體如下&#xff1a; 準備:包括相關人員和設備準備、新機房環境準備、網絡環境、備份、現場所有設備打標簽、模塊、設備準備等準備工作。拆卸&#xff1a;主要只核心設備下…

iptables(2)安裝及規則查詢

安裝iptables 我是用的系統是debian 12,目前沒有安裝iptables。 防火墻已經安裝完成了 iptables 的配置語法 iptables (選項) (參數) # 通用匹配:源地址目標地址的匹配 -p:指定要匹配的數據包協議類型 -s, --source [!] address[/mask] :把指定的一個/一組地址作為源地…