主頁 > 企業開發 > BOM

BOM

2022-01-27 07:17:58 企業開發

BOM

BOM的概念

BOM(Browser Object Model) 是指瀏覽器物件模型,瀏覽器物件模型提供了獨立于內容的、可以與瀏覽器視窗進行互動的物件結構,BOM由多個物件組成,其中代表瀏覽器視窗的Window物件是BOM的頂層物件,其他物件都是該物件的子物件,

我們在瀏覽器中的一些操作都可以使用BOM的方式進行編程處理,

比如:重繪瀏覽器、后退、前進、在瀏覽器中輸入URL等

BOM的頂級物件window

window是瀏覽器的頂級物件,當呼叫window下的屬性和方法時,可以省略window 注意:window下一個特殊的屬性 window.name

之前用的 docuement完整寫法:

window.document.getElementById("xx");
window.alert(); --> alert();

全域變數函式和隱式變數

我們定義的全域變數,函式,隱式變數其實默認都是window的屬性和方法,

    <script>
       // 全域變數
       var x = 100; // -- > window.x = 100
       // 全域的函式
       function fu(){  // window.fu = function(){...}
           console.log(11);
           // 隱式變數 (不使用var申明)
           stuName = "旗木卡卡西";  // window.stuName="xxxxx"
           // 區域變數,根window沒有關系
           var st = "abc";
           console.log("window.st="+window.st)// undefined
      }
       // 呼叫的時候
       fu();// --> window.fu();
       console.log(window);
       if(1==1){
           var score = 100;
      }
       console.log("score="+score);// 100
       var y = 100;// window.y = 100;
       var y = 10000;// window.y = 10000;
       console.log(y);
   </script>

對話框

  • alert() : 不太友好的提示

  • prompt() : 可輸入的提示框

  • confirm() : 有確定和取消按鈕的確認框

案例:

    <h2>window的彈窗</h2>
   <input type="button" value=https://www.cnblogs.com/xiaoxiaodeboke/archive/2022/01/25/"alert" id="alertBtn">
   <input type="button" value=https://www.cnblogs.com/xiaoxiaodeboke/archive/2022/01/25/"prompt" id="promptBtn">
   <input type="button" value=https://www.cnblogs.com/xiaoxiaodeboke/archive/2022/01/25/"confirm" id="confirmBtn">
   <script>
       document.getElementById("alertBtn").onclick=function(){
           window.alert("就是一個提示,你只能點擊確定按鈕");
      }
       document.getElementById("promptBtn").onclick=function(){
           // 兩個引數:
           // 第一個引數:彈窗框的標題
           // 第二個引數: 彈出框中的輸入框的默認值
           var result = window.prompt("請輸入你的年齡",18);
           // result : 確定按鈕,得到輸入框的值, 取消:null
           console.log(result);
      }
       document.getElementById("confirmBtn").onclick=function(){
           var result =confirm("今天你是加班還是回家");
           // result: 確定true, 取消false
           if(result){
               alert("你是一個好員工!老板明年換大奔!");
          }else{
               alert("你是一個好老公!明年帶上好帽子!");
          }
      }
       // window.open("http://www.baidu.com")
       function removeFriend(){
           if(confirm("您確定要洗掉好友[法外狂徒-張三]嗎?")){
               // 開始洗掉
               document.querySelector("li").remove();
          }
      }
   </script>
   <ul>  
       <!-- 使用超鏈接呼叫javascript函式-->
       <li>張三 <a href=https://www.cnblogs.com/xiaoxiaodeboke/archive/2022/01/25/"javascript:removeFriend()">洗掉</a></li>
   </ul>

頁面加載事件

  • onload

window.onload = function () {
 // 當頁面加載完成執行
 // 當頁面完全加載所有內容(包括影像、腳本檔案、CSS 檔案等)執行
}
  • onunload

window.onunload = function () {
 // 當用戶退出頁面時執行
}

window的其他屬性

Window.innerHeight 獲得瀏覽器視窗的內容區域的高度,包含水平滾動條(如果有的話), Window.innerWidth 獲得瀏覽器視窗的內容區域的寬度,包含垂直滾動條(如果有的話),

Window.outerHeight 回傳瀏覽器視窗的外部高度, Window.outerWidth 回傳瀏覽器視窗的外部寬度, Window.pageXOffset window.scrollX的別名, Window.pageYOffset window.scrollY的別名, Window.parent 回傳當前視窗或子視窗的父視窗的參考,

案例:

<!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>Document</title>
   <style>
      *{
           padding: 0px;
           margin: 0px;
           border: 0px;
      }
   </style>
</head>
<body>
   <script>
       // 全域變數
       var x = 100; // -- > window.x = 100
       // 全域的函式
       function fu(){  // window.fu = function(){...}
           console.log(11);
           // 隱式變數 (不使用var申明)
           stuName = "旗木卡卡西";  // window.stuName="xxxxx"
           // 區域變數,根window沒有關系
           var st = "abc";
           console.log("window.st="+window.st)// undefined
      }
       // 呼叫的時候
       fu();// --> window.fu();
       console.log(window);
       if(1==1){
           var score = 100;
      }
       console.log("score="+score);// 100
       var y = 100;// window.y = 100;
       var y = 10000;// window.y = 10000;
       console.log(y);
   </script>
   <hr>
   <h2>window的彈窗</h2>
   <input type="button" value=https://www.cnblogs.com/xiaoxiaodeboke/archive/2022/01/25/"alert" id="alertBtn">
   <input type="button" value=https://www.cnblogs.com/xiaoxiaodeboke/archive/2022/01/25/"prompt" id="promptBtn">
   <input type="button" value=https://www.cnblogs.com/xiaoxiaodeboke/archive/2022/01/25/"confirm" id="confirmBtn">
   <script>
       document.getElementById("alertBtn").onclick=function(){
           window.alert("就是一個提示,你只能點擊確定按鈕");
      }
       document.getElementById("promptBtn").onclick=function(){
           // 兩個引數:
           // 第一個引數:彈窗框的標題
           // 第二個引數: 彈出框中的輸入框的默認值
           var result = window.prompt("請輸入你的年齡",18);
           // result : 確定按鈕,得到輸入框的值, 取消:null
           console.log(result);
      }
       document.getElementById("confirmBtn").onclick=function(){
           var result =confirm("今天你是加班還是回家");
           // result: 確定true, 取消false
           if(result){
               alert("你是一個好員工!老板明年換大奔!");
          }else{
               alert("你是一個好老公!明年帶上好帽子!");
          }
      }
       // window.open("http://www.baidu.com")
       function removeFriend(){
           if(confirm("您確定要洗掉好友[法外狂徒-張三]嗎?")){
               // 開始洗掉
               document.querySelector("li").remove();
          }
      }
   </script>
   <ul>  
       <!-- 使用超鏈接呼叫javascript函式-->
       <li>張三 <a href=https://www.cnblogs.com/xiaoxiaodeboke/archive/2022/01/25/"javascript:removeFriend()">洗掉</a></li>
   </ul>
   <div id="box" style="border: 1px solid; width: 500px; height: 200px;">
       <ul>
           <li></li>
           <li></li>
           <li></li>
           <li></li>
           <li></li>
           <li></li>
       </ul>
   </div>
   <script>
       // 這些屬性在不同的瀏覽器中表現是不一樣的,
       // 比如滾動條
       var x = window.pageXOffset ? window.pageXOffset : window.scrollX;
       var y = window.pageYOffset ? window.pageYOffset : window.scrollY;
       // 獲取所有的li
       var lis = document.querySelectorAll("#box ul li");
       lis[0].innerText="Window.innerHeight:"+window.innerHeight;
       lis[1].innerText="Window.innerWidth:"+window.innerWidth;
       lis[2].innerText="Window.outerHeight:"+window.outerHeight;
       lis[3].innerText="Window.outerWidth:"+window.outerWidth;
       lis[4].innerText="Window.pageXOffset:"+x;
       lis[5].innerText="Window.pageYOffset:"+y;
   </script>
   <script>
       function stFn(){
           alert("外部表單的函式");
      }
   </script>
   <div style="width: 500px; height: 500px;">
       <iframe src=https://www.cnblogs.com/xiaoxiaodeboke/archive/2022/01/25/"inner.html" frameborder="1" style="border: 1px solid;"></iframe>
   </div>
</body>
</html>

內嵌的網頁:

    <h2>內部的HTML</h2>
   <p>
       <a href=https://www.cnblogs.com/xiaoxiaodeboke/archive/2022/01/25/"javascript:window.parent.stFn()">呼叫外部表單的函式</a>
   </p>

定時器

setTimeout()和clearTimeout()

  • setTimeout()在指定的毫秒數到達之后執行指定的函式,只執行一次

案例1: 等待兩秒,將DIV縮小

    <div id="result" style="border: 1px solid; width: 200px; height: 200px;"></div>
   <script>
       // 引數1 要執行的程式,
       // 引數2 要等待的時間,單位是毫秒
       window.setTimeout(function(){
           var divDom = document.getElementById("result");
           divDom.style.width="50px";
           divDom.style.height="50px";
      },2000);
   </script>

案例2: 提示框等待兩秒消失

    <p>
        <input type="button" value="https://www.cnblogs.com/xiaoxiaodeboke/archive/2022/01/25/提示" id="tipBtn">
    </p>
    <div id="msgBox" style="display: none; width: 300px; border: 1px solid #ccc; border-radius: 3px;  position: absolute;"></div>
    <script>
        document.getElementById("tipBtn").onclick=function(){
            var divDom = document.getElementById("msgBox");
            //定位
            divDom.style.top = (window.innerHeight / 2 - 30) +"px";
            divDom.style.left = (window.innerWidth / 2 - 150) +"px";
            divDom.style.display = "block";
            divDom.style.backgroundColor="#f0f0f0";
            divDom.style.textAlign="center";
            divDom.innerText = "這時一個訊息的提示";
            // 定義一個定時器,等待兩秒消失
            // 錯誤的寫法
            //setTimeout(remMsgBox(),2000);
            // 正確的呼叫函式的兩種寫法  : 函式只有名字,沒有()
            //setTimeout(remMsgBox,2000);
            setTimeout("remMsgBox()",2000);// 函式的呼叫是使用引號包裹的
        }
        // 專門定義一個函式,用來取消提示框
        function remMsgBox(){
            document.getElementById("msgBox").style.display="none";
        }
    </script>

案例3:實作一個倒計時的計時器

tips: 在函式內部通過setTimeout呼叫自己

    請輸入時間: <input type="text" id="time"> <input type="button" value="https://www.cnblogs.com/xiaoxiaodeboke/archive/2022/01/25/開始" id="startBtn">
    <script>
        document.getElementById("startBtn").onclick=function(){
            // 執行倒計時的函式
            ctime();
        }
        // 準備一個倒計時的函式
        function ctime(){
            // 獲取dom
            var timeDom = document.getElementById("time");
            // 處理倒計時的資料
            timeDom.value = https://www.cnblogs.com/xiaoxiaodeboke/archive/2022/01/25/timeDom.value-1;
            if(timeDom.value > 0){
                // 等待1秒鐘,再次執行倒計時的函式(在內部呼叫它自己--遞回)
                setTimeout(ctime,1000);
            }
        }
    </script>
  • clearTimeout() 讓一個計時器停止,

// 當我們開啟一個定時器的時候,這個定時器會產生一個實體(句柄)
var timeInstance = setTimtout("xxx",2000);
//  停止定時器
window.clearTimeout(timeInstance);

setInterval()和clearInterval()

  • setInterval() 定時呼叫的函式,可以按照給定的時間(單位毫秒)周期呼叫函式

  • clearInterval() 終止interaval執行,

案例1: 電子鐘表

    <h2>電子鐘表</h2>
    <span id="biao" style="height: 30px; line-height: 30px; border: 1px solid; display: inline-block; margin: 5px 5px;"></span>
    <script>
        function showTime(){
            var dateObj = new Date();
            var str = dateObj.getFullYear()+"年"+(dateObj.getMonth()+1)+"月"+dateObj.getDate()+"日 "+
                dateObj.getHours()+":"+dateObj.getMinutes()+":"+dateObj.getSeconds();
            document.getElementById("biao").innerText = str;
        }
        // 準備一個實體物件,用來保存setInterval句柄
        var intervalInstance = undefined
        // 使用setIntervale周期性呼叫
        intervalInstance = setInterval("showTime()",1000);
        // 滑鼠懸浮就暫停這個時鐘
        document.getElementById("biao").onmouseover=function(){
            clearInterval(intervalInstance);
        }
        document.getElementById("biao").onmouseout=function(){
            // 使用setIntervale周期性呼叫
            intervalInstance = setInterval("showTime()",1000);
        }
    </script>

練習案例1:無縫滾動

思路:

將要滾動的內容復制一份放在之前的內容的后面(看方向),使用JS勻速的移動外面這個盒子的滾動條,當被隱藏的元素完全顯示的時候,立刻將滾動潭訓到初始狀態,

    <div>
        <hr>
    </div>
    <div id="scrollBox" style="overflow: hidden; border:1px solid; padding:0px; width:300px; height:170px">
        <ul>
            <li>這里是一個新聞的標題-1111</li>
            <li>這里是一個新聞的標題-2222</li>
            <li>這里是一個新聞的標題-3333</li>
            <li>這里是一個新聞的標題-4444</li>
            <li>這里是一個新聞的標題-5555</li>
            <li>這里是一個新聞的標題-6666</li>
            <li>這里是一個新聞的標題-7777</li>
            <li>這里是一個新聞的標題-8888</li>
        </ul>
    </div>
    <script>
        // 初始化無縫滾動
        function initScroll(){
            var boxDom = document.getElementById("scrollBox");
            var ulDom = boxDom.firstElementChild;
            var ulDom1 = ulDom.cloneNode();
            ulDom1.innerHTML = ulDom.innerHTML;
            boxDom.append(ulDom1);
        }
        // 呼叫初始化函式
        initScroll();
        // 滾動的內容
        // 準備一個實體,用來保存計時器物件
        var timeInstance = undefined;
        var step = 3;
        function doScroll(){
            // 獲取box的dom物件
            var boxDom = document.getElementById("scrollBox");
            // 取出scrollTop
            var top = boxDom.scrollTop;
            console.log(top);
            boxDom.scrollTop = top + step;
            if(top >= 166){
                boxDom.scrollTop = 0;
            }
            //  使用setTimeout呼叫自己
            timeInstance = setTimeout("doScroll()",50);
        }
        doScroll();
        // 滑鼠懸浮的時候停止滾動
        document.getElementById("scrollBox").onmouseover=function(){
            clearTimeout(timeInstance);
        }
        // 滑鼠離開的時候繼續滾動
        document.getElementById("scrollBox").onmouseout=function(){
            doScroll();
        }
    </script>

location物件

location物件是window物件下的一個屬性,使用的時候可以省略window物件

location可以獲取或者設定瀏覽器地址欄的URL

案例:

    <script>
        // 獲取當前地址欄的資訊
        var url = location.href;
        console.log(url);
    </script>
    <input type="button" id="btn" value="https://www.cnblogs.com/xiaoxiaodeboke/archive/2022/01/25/起點">
    <script>
        document.getElementById("btn").onclick=function(){
            // 類似于超鏈接
            location.href="http://7dian.com";
        }
    </script>

location有哪些成員?

  • 使用chrome的控制臺查看

  • 查MDN

  • 成員

    • assign()/reload()/replace()

    • hash/host/hostname/search/href……

URL

統一資源定位符 (Uniform Resource Locator, URL)

  • URL的組成

scheme://host:port/path?query#fragment
http://www.7dianit.com:80/a/b/index.html?name=zs&age=18#bottom
scheme:通信協議
	常用的http,ftp,maito等
host:主機
	服務器(計算機)域名系統 (DNS) 主機名或 IP 地址,
port:埠號
	整數,可選,省略時使用方案的默認埠,如http的默認埠為80,
path:路徑
	由零或多個'/'符號隔開的字串,一般用來表示主機上的一個目錄或檔案地址,
query:查詢
	可選,用于給動態網頁傳遞引數,可有多個引數,用'&'符號隔開,每個引數的名和值用'='符號隔開,例如:name=zs
fragment:資訊片斷
	字串,錨點.

history物件

  • back()

  • forward()

  • go()

navigator物件

  • userAgent

特效

偏移量

  • offsetParent用于獲取定位的父級元素

  • offsetParent和parentNode的區別

var box = document.getElementById('box');
console.log(box.offsetParent);
console.log(box.offsetLeft);
console.log(box.offsetTop);
console.log(box.offsetWidth);
console.log(box.offsetHeight);

客戶區大小

var box = document.getElementById('box');
console.log(box.clientLeft);
console.log(box.clientTop);
console.log(box.clientWidth);
console.log(box.clientHeight);

滾動偏移

var box = document.getElementById('box');
console.log(box.scrollLeft)
console.log(box.scrollTop)
console.log(box.scrollWidth)
console.log(box.scrollHeight)

本文來自博客園,作者:{瀟瀟消消氣},轉載請注明原文鏈接:{https://www.cnblogs.com/xiaoxiaodeboke/}

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/421653.html

標籤:其他

上一篇:DOM

下一篇:妙用濾鏡構建高級感拉滿的磨砂玻璃漸變背景

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • IEEE1588PTP在數字化變電站時鐘同步方面的應用

    IEEE1588ptp在數字化變電站時鐘同步方面的應用 京準電子科技官微——ahjzsz 一、電力系統時間同步基本概況 隨著對IEC 61850標準研究的不斷深入,國內外學者提出基于IEC61850通信標準體系建設數字化變電站的發展思路。數字化變電站與常規變電站的顯著區別在于程序層傳統的電流/電壓互 ......

    uj5u.com 2020-09-10 03:51:52 more
  • HTTP request smuggling CL.TE

    CL.TE 簡介 前端通過Content-Length處理請求,通過反向代理或者負載均衡將請求轉發到后端,后端Transfer-Encoding優先級較高,以TE處理請求造成安全問題。 檢測 發送如下資料包 POST / HTTP/1.1 Host: ac391f7e1e9af821806e890 ......

    uj5u.com 2020-09-10 03:52:11 more
  • 網路滲透資料大全單——漏洞庫篇

    網路滲透資料大全單——漏洞庫篇漏洞庫 NVD ——美國國家漏洞庫 →http://nvd.nist.gov/。 CERT ——美國國家應急回應中心 →https://www.us-cert.gov/ OSVDB ——開源漏洞庫 →http://osvdb.org Bugtraq ——賽門鐵克 →ht ......

    uj5u.com 2020-09-10 03:52:15 more
  • 京準講述NTP時鐘服務器應用及原理

    京準講述NTP時鐘服務器應用及原理京準講述NTP時鐘服務器應用及原理 安徽京準電子科技官微——ahjzsz 北斗授時原理 授時是指接識訓通過某種方式獲得本地時間與北斗標準時間的鐘差,然后調整本地時鐘使時差控制在一定的精度范圍內。 衛星導航系統通常由三部分組成:導航授時衛星、地面檢測校正維護系統和用戶 ......

    uj5u.com 2020-09-10 03:52:25 more
  • 利用北斗衛星系統設計NTP網路時間服務器

    利用北斗衛星系統設計NTP網路時間服務器 利用北斗衛星系統設計NTP網路時間服務器 安徽京準電子科技官微——ahjzsz 概述 NTP網路時間服務器是一款支持NTP和SNTP網路時間同步協議,高精度、大容量、高品質的高科技時鐘產品。 NTP網路時間服務器設備采用冗余架構設計,高精度時鐘直接來源于北斗 ......

    uj5u.com 2020-09-10 03:52:35 more
  • 詳細解讀電力系統各種對時方式

    詳細解讀電力系統各種對時方式 詳細解讀電力系統各種對時方式 安徽京準電子科技官微——ahjzsz,更多資料請添加VX 衛星同步時鐘是我京準公司開發研制的應用衛星授時時技術的標準時間顯示和發送的裝置,該裝置以M國全球定位系統(GLOBAL POSITIONING SYSTEM,縮寫為GPS)或者我國北 ......

    uj5u.com 2020-09-10 03:52:45 more
  • 如何保證外包團隊接入企業內網安全

    不管企業規模的大小,只要企業想省錢,那么企業的某些服務就一定會采用外包的形式,然而看似美好又經濟的策略,其實也有不好的一面。下面我通過安全的角度來聊聊使用外包團的安全隱患問題。 先看看什么服務會使用外包的,最常見的就是話務/客服這種需要大量重復性、無技術性的服務,或者是一些銷售外包、特殊的職能外包等 ......

    uj5u.com 2020-09-10 03:52:57 more
  • PHP漏洞之【整型數字型SQL注入】

    0x01 什么是SQL注入 SQL是一種注入攻擊,通過前端帶入后端資料庫進行惡意的SQL陳述句查詢。 0x02 SQL整型注入原理 SQL注入一般發生在動態網站URL地址里,當然也會發生在其它地發,如登錄框等等也會存在注入,只要是和資料庫打交道的地方都有可能存在。 如這里http://192.168. ......

    uj5u.com 2020-09-10 03:55:40 more
  • [GXYCTF2019]禁止套娃

    git泄露獲取原始碼 使用GET傳參,引數為exp 經過三層過濾執行 第一層過濾偽協議,第二層過濾帶引數的函式,第三層過濾一些函式 preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp'] (?R)參考當前正則運算式,相當于匹配函式里的引數 因此傳遞 ......

    uj5u.com 2020-09-10 03:56:07 more
  • 等保2.0實施流程

    流程 結論 ......

    uj5u.com 2020-09-10 03:56:16 more
最新发布
  • 使用Django Rest framework搭建Blog

    在前面的Blog例子中我們使用的是GraphQL, 雖然GraphQL的使用處于上升趨勢,但是Rest API還是使用的更廣泛一些. 所以還是決定回到傳統的rest api framework上來, Django rest framework的官網上給了一個很好用的QuickStart, 我參考Qu ......

    uj5u.com 2023-04-20 08:17:54 more
  • 記錄-new Date() 我忍你很久了!

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 大家平時在開發的時候有沒被new Date()折磨過?就是它的諸多怪異的設定讓你每每用的時候,都可能不小心踩坑。造成程式意外出錯,卻一下子找不到問題出處,那叫一個煩透了…… 下面,我就列舉它的“四宗罪”及應用思考 可惡的四宗罪 1. Sa ......

    uj5u.com 2023-04-20 08:17:47 more
  • 使用Vue.js實作文字跑馬燈效果

    實作文字跑馬燈效果,首先用到 substring()截取 和 setInterval計時器 clearInterval()清除計時器 效果如下: 實作代碼如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta ......

    uj5u.com 2023-04-20 08:12:31 more
  • JavaScript 運算子

    JavaScript 運算子/運算子 在 JavaScript 中,有一些運算子可以使代碼更簡潔、易讀和高效。以下是一些常見的運算子: 1、可選鏈運算子(optional chaining operator) ?.是可選鏈運算子(optional chaining operator)。?. 可選鏈操 ......

    uj5u.com 2023-04-20 08:02:25 more
  • CSS—相對單位rem

    一、概述 rem是一個相對長度單位,它的單位長度取決于根標簽html的字體尺寸。rem即root em的意思,中文翻譯為根em。瀏覽器的文本尺寸一般默認為16px,即默認情況下: 1rem = 16px rem布局原理:根據CSS媒體查詢功能,更改根標簽的字體尺寸,實作rem單位隨螢屏尺寸的變化,如 ......

    uj5u.com 2023-04-20 08:02:21 more
  • 我的第一個NPM包:panghu-planebattle-esm(胖虎飛機大戰)使用說明

    好家伙,我的包終于開發完啦 歡迎使用胖虎的飛機大戰包!! 為你的主頁添加色彩 這是一個有趣的網頁小游戲包,使用canvas和js開發 使用ES6模塊化開發 效果圖如下: (覺得圖片太sb的可以自己改) 代碼已開源!! Git: https://gitee.com/tang-and-han-dynas ......

    uj5u.com 2023-04-20 08:01:50 more
  • 如何在 vue3 中使用 jsx/tsx?

    我們都知道,通常情況下我們使用 vue 大多都是用的 SFC(Signle File Component)單檔案組件模式,即一個組件就是一個檔案,但其實 Vue 也是支持使用 JSX 來撰寫組件的。這里不討論 SFC 和 JSX 的好壞,這個仁者見仁智者見智。本篇文章旨在帶領大家快速了解和使用 Vu ......

    uj5u.com 2023-04-20 08:01:37 more
  • 【Vue2.x原始碼系列06】計算屬性computed原理

    本章目標:計算屬性是如何實作的?計算屬性快取原理以及洋蔥模型的應用?在初始化Vue實體時,我們會給每個計算屬性都創建一個對應watcher,我們稱之為計算屬性watcher ......

    uj5u.com 2023-04-20 08:01:31 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:01:10 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:00:32 more