Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 久久精品国产亚洲综合色,久久精品国产精品亚洲红杏,久久黄色影片

          整合營銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          當(dāng)您在瀏覽器中輸入網(wǎng)址時(shí)會(huì)發(fā)生什么?

          0、先問個(gè)問題

          若客戶提出一個(gè)質(zhì)量屬性要求,要實(shí)現(xiàn)一個(gè)Web查詢,性能200毫秒以內(nèi),請(qǐng)問這個(gè)要求高還是低?

          對(duì)一個(gè)web系統(tǒng)來說,200毫秒是一個(gè)比較高的性能。

          憑啥這么說,你要是做過架構(gòu)的話,就明白這個(gè)道理。

          作為架構(gòu)師,必須了解完整過程,每一個(gè)細(xì)節(jié)。

          你應(yīng)該能把整個(gè)系統(tǒng)分解成若干個(gè)環(huán)節(jié),并且各環(huán)節(jié)的細(xì)節(jié)你都能了解。這個(gè)環(huán)節(jié)是硬的還是軟的?會(huì)不會(huì)影響這個(gè)部分的性能開銷?

          看下圖,能看到你從發(fā)起請(qǐng)求,一直到頁面呈現(xiàn)完了之后的4個(gè)主要環(huán)節(jié)。

          要細(xì)分的話,其實(shí)當(dāng)中還有更多的環(huán)節(jié)。

          網(wǎng)絡(luò)大概走多少毫秒,差不多50ms,環(huán)節(jié)取決于網(wǎng)絡(luò)環(huán)境,要是跨國的話,從中國到美國,可能要上百。

          這個(gè)是系統(tǒng)架構(gòu)改變不了的。

          那就是200已經(jīng)去掉了50,或者100,剩下100多可以用。

          收到數(shù)據(jù)之后,需要瀏覽器渲染出來,又需要多長時(shí)間呢?

          這個(gè)時(shí)間不確認(rèn),看渲染結(jié)果復(fù)不復(fù)雜,有沒ajax再次請(qǐng)求這類情況。

          可能簡單的,10幾毫秒,復(fù)雜的更長。

          右邊從Web服務(wù)器到應(yīng)用服務(wù)器、從應(yīng)用服務(wù)器到數(shù)據(jù)庫DB之間,還有性能開銷。

          數(shù)據(jù)庫檢索出來是一個(gè)值,這個(gè)值到了你的開發(fā)語言里面,經(jīng)過底層框架,需要做數(shù)據(jù)類型轉(zhuǎn)換,變成程序里的一個(gè)對(duì)象。

          一個(gè)架構(gòu)師,就要學(xué)會(huì)區(qū)分,哪些是架構(gòu)能左右的,能夠改善的,哪些是我不能解決的,最后在你能解決的部分里想辦法。

          你都了解了之后,你就能專業(yè)地跟客戶說,這個(gè)200毫秒我做不到。

          或者說在什么條件下,我能做到。

          一個(gè)事情,只有你都了解的情況下,才能給出一個(gè)可行方案。

          01、當(dāng)您在瀏覽器中輸入 URL 時(shí)會(huì)發(fā)生什么?

          讓我們一步步看一下整個(gè)過程:

          1. 用戶在瀏覽器中輸入 URL 并按 下Enter鍵時(shí),我們需要做的第一件事是將 URL 轉(zhuǎn)換為 IP 地址。映射通常存儲(chǔ)在緩存中,因此瀏覽器會(huì)在多層緩存中查找 IP 地址:瀏覽器緩存、操作系統(tǒng)緩存、本地緩存和 ISP 緩存。如果瀏覽器在緩存中找不到該映射,則會(huì)請(qǐng)求 DNS(域名系統(tǒng))解析器進(jìn)行解析。
          2. 如果在任何緩存中都找不到 IP 地址,則瀏覽器將前往 DNS 服務(wù)器進(jìn)行遞歸 DNS 查找,直到找到 IP 地址。
          3. 現(xiàn)在我們有了服務(wù)器的IP地址,瀏覽器向服務(wù)器發(fā)送HTTP請(qǐng)求。為了安全訪問服務(wù)器資源,我們應(yīng)該始終使用 HTTPS。它首先通過 TCP 3 次握手與服務(wù)器建立 TCP 連接。然后它將公鑰發(fā)送給客戶端??蛻舳耸褂霉€加密會(huì)話密鑰并發(fā)送給服務(wù)器。服務(wù)器使用私鑰來解密會(huì)話密鑰。客戶端和服務(wù)器現(xiàn)在可以使用會(huì)話密鑰交換加密數(shù)據(jù)。
          4. 服務(wù)器處理請(qǐng)求并發(fā)回響應(yīng)。

          對(duì)于成功的響應(yīng),狀態(tài)代碼為 200。

          響應(yīng)中有 3 部分:HTML、CSS 、 Javascript。

          瀏覽器渲染的順序:

          1. 瀏覽器解析HTML并生成DOM樹。

          2. 解析 CSS 并生成 CSSOM 樹。

          3. 結(jié)合 DOM 樹和 CSSOM 樹來構(gòu)建渲染樹。

          4. 節(jié)點(diǎn)布局

          5. 最后頁面渲染,瀏覽器將內(nèi)容呈現(xiàn)并顯示給用戶。

          02、用一張圖解釋 8 種流行的網(wǎng)絡(luò)協(xié)議

          1. HTTP(超文本傳輸協(xié)議)HTTP 是一種用于獲取 HTML 文檔等資源的協(xié)議。它是 Web 上任何數(shù)據(jù)交換的基礎(chǔ),是一種客戶端-服務(wù)器協(xié)議。
          2. HTTP/3HTTP/3 是 HTTP 的下一個(gè)主要修訂版。它運(yùn)行在 QUIC 上,這是一種專為移動(dòng)互聯(lián)網(wǎng)使用而設(shè)計(jì)的新傳輸協(xié)議。它依賴于 UDP 而不是 TCP,從而實(shí)現(xiàn)更快的網(wǎng)頁響應(yīng)。VR 應(yīng)用程序需要更多帶寬來渲染虛擬場景的復(fù)雜細(xì)節(jié),并且可能會(huì)從遷移到由 QUIC 提供支持的 HTTP/3 中受益。
          3. HTTPS(安全超文本傳輸協(xié)議)HTTPS 擴(kuò)展了 HTTP 并使用加密來實(shí)現(xiàn)安全通信。
          4. WebSocketWebSocket 是一種通過 TCP 提供全雙工通信的協(xié)議??蛻舳私ebSocket來接收來自后端服務(wù)的實(shí)時(shí)更新。與總是“拉取”數(shù)據(jù)的 REST 不同,WebSocket 允許“推送”數(shù)據(jù)。在線游戲、股票交易和消息傳遞應(yīng)用程序等應(yīng)用程序利用 WebSocket 進(jìn)行實(shí)時(shí)通信。
          5. TCP(傳輸控制協(xié)議)TCP 旨在通過互聯(lián)網(wǎng)發(fā)送數(shù)據(jù)包,并確保通過網(wǎng)絡(luò)成功傳送數(shù)據(jù)和消息。許多應(yīng)用層協(xié)議構(gòu)建在 TCP 之上。
          6. UDP(用戶數(shù)據(jù)報(bào)協(xié)議)UDP 直接將數(shù)據(jù)包發(fā)送到目標(biāo)計(jì)算機(jī),無需先建立連接。UDP 通常用于時(shí)間敏感的通信,其中偶爾丟棄數(shù)據(jù)包比等待更好。語音和視頻流量通常使用此協(xié)議發(fā)送。
          7. SMTP(簡單郵件傳輸協(xié)議)SMTP 是一種用于將電子郵件從一個(gè)用戶傳輸?shù)搅硪粋€(gè)用戶的標(biāo)準(zhǔn)協(xié)議。
          8. FTP(文件傳輸協(xié)議)FTP 用于在客戶端和服務(wù)器之間傳輸計(jì)算機(jī)文件。它具有單獨(dú)的控制通道和數(shù)據(jù)通道連接。
          <!DOCTYPE html>
          <html lang="en">
          <head>
              <meta charset="UTF-8">
              <title>登錄頁面</title>
              /*總體的樣式*/
              <style>
              	/*盒子樣式*/
                  #box{
                      width: 350px; //寬
                      height: 450px; //高
                      border: 1px solid black; //邊框
                      border-radius: 10px; //邊框弧度
                      font-family: 黑體; //字體
                      letter-spacing:8px; //段間距
                      word-spacing: 10px; //字間距
                      line-height: 40px; //行高
                      font-size: 18px; //字大小
                      padding: 20px; //內(nèi)邊框
                  }
                  /*給'注冊(cè)'賦予樣式*/
                  .register{
                      width:280px ; //寬
                      height: 50px; //高
                      background-color: skyblue; //背景顏色
                      border-radius: 10px; //邊框弧度
          
                  }
                  /*將所有邊框都改變*/
                  *{
                      border-radius: 5px; 邊框弧度
                  }
                  /*使用class選擇器,賦予number寬高和邊框*/
                  .number{
                      width: 185px; //寬
                      height: 27px; //高
                      border-width: 1px; //邊框?qū)挾?
                  }
                  /*id選擇器*/
                  #two{
                      width: 55px; //寬
                      border-width: 1px; 邊框?qū)挾?        }
                  /*id選擇器*/
                  #phone{
                      width: 103px; //寬
                  }
                  /*class 選擇器*/
                  .boxs{
                      zoom: 75%; //清除浮動(dòng)
                      color: darkgray; //顏色
                  }
                  /*class選擇器*/
                  .box_a{
                      width: 50px; //寬
                      height: 50px; //高
                      background-image: url("../image/04.jpg "); //背景圖片
                      background-repeat: no-repeat; // 是否平鋪
                      background-size: 50px 25px; //背景尺寸
                      position: relative; //定位 相對(duì)定位
                      left: 310px; //定位后左移
                      bottom: 32px; //定位后下移
          
                  }
              </style>
          </head>
          <body>
          <div id="box">
              <h1>請(qǐng)注冊(cè)</h1>
          <p style="color: darkgray">已有帳號(hào)?<a href="https://im.qq.com/index">登錄</a></p>
          <form action="" method="post">
              <label for="name">用戶名</label>
              <input type="text" placeholder="請(qǐng)輸入用戶名" id="name" class="number"> <br>
              <label for="phone">手機(jī)號(hào)</label>
              <select name="" id="two" class="number">
              <optgroup>
                  <option style="" class="">+86</option>
              </optgroup>
              </select>
              <input type="text" placeholder="請(qǐng)輸入手機(jī)號(hào)" id="phone" class="number"> <br>
              <label for="mima">密?碼</label>
              <input type="password" placeholder="請(qǐng)輸入密碼" id="mima" class="number"> <br>
              <label for="mima">驗(yàn)證碼</label>
              <input type="password" placeholder="請(qǐng)輸入驗(yàn)證碼" id="is" class="number">
              <div class="box_a"></div>
              <div class="boxs">
                  <input type="radio" id="" class="accept">閱讀并接受協(xié)議<br>
              </div>
              <input type="submit" value="注冊(cè)" class="register" >
          
              </form>
          </div>
          
          
          </body>
          </html>
          在這里插入圖片描述


          ntroduction

          HTML 是一種描述網(wǎng)頁語言, 指的是超文本標(biāo)記語言 (Hyper Text Markup Language)。其中,超文本指的是網(wǎng)頁上可以包含圖片,視頻,連接信息。標(biāo)記也叫做標(biāo)簽,所以標(biāo)簽書寫的是<內(nèi)容>。語言就是一種交流工具,HTML 是用戶與瀏覽器之間交互工具。

          簡單說,HTML 是由瀏覽器解析執(zhí)行的,它不會(huì)將 HTML 標(biāo)簽展示出來,而是會(huì)解析 HTML 標(biāo)簽,以特定效果展示出來。

          Syntax

          1. HTML 可以直接使用文本編輯器來編寫
          2. HTML 文件它的后綴名是 .htm 或 .html
          3. <html> 標(biāo)簽它代表當(dāng)前頁面是一個(gè) HTML
          4. <head> 標(biāo)簽中可以聲明 HTML 頁面的相關(guān)信息
          5. <body> 標(biāo)簽中它主要是用于顯示頁面信息
          6. 標(biāo)簽要有開始,有結(jié)束。開始標(biāo)簽與結(jié)束標(biāo)簽中的內(nèi)容是標(biāo)簽的內(nèi)容,如果沒有標(biāo)簽內(nèi)容,可以讓標(biāo)簽自關(guān)閉 <br/>。
          7. 大多數(shù)標(biāo)簽它具有屬性,屬性值要使用引號(hào)引起來。
          8. HTML 本身是不區(qū)分大小寫的。
          <html>
              <head>HEAD</head>
              <body>BODY</body>
          </html>

          Tools

          可以使用 JetBrains WebStorm 或者 VS Code 進(jìn)行開發(fā)。


          HTML Tags

          文件標(biāo)簽

          <html> 代表當(dāng)前書寫的是一個(gè) HTML 文檔

          <head> 存儲(chǔ)的本頁面的一些重要的信息,它不會(huì)顯示

          標(biāo)簽下有一個(gè)子標(biāo)簽 <title> 它是用于定義頁面的標(biāo)題的

          <body> 書寫的內(nèi)容會(huì)顯示出來,屬性:1. text 用于設(shè)置文字顏色;2. bgcolor 用于設(shè)置頁面的背景色;3. background 用于設(shè)置頁面的背景圖片

          排版標(biāo)簽

          HTML 注釋

          <!-- 注釋不會(huì)在瀏覽器中顯示 -->

          <br/> 標(biāo)簽

          br 標(biāo)簽就是一個(gè)換行功能標(biāo)簽

          <p> 標(biāo)簽

          在 p 標(biāo)簽中的內(nèi)容會(huì)在開始與結(jié)束之間產(chǎn)生一個(gè)空白行并且它會(huì)自動(dòng)換行

          常用屬性 align 的作用是設(shè)置段落中的內(nèi)容對(duì)齊方式,可取值有 left right center

          <hr> 標(biāo)簽

          hr 標(biāo)簽會(huì)在頁面上產(chǎn)生一個(gè)水平線

          常用屬性:

          align:可取值有 left right center 代表水平線位置

          size:代表水平線高度(厚度)

          width:代表水平線寬度

          color:水平線的顏色

          關(guān)于 HTML 中標(biāo)簽屬性

          兩種方式:

          1. 直接設(shè)置值,默認(rèn)單位是 px (像素) <HR WIDTH="200">
          2. 可以設(shè)置百分比 <HR WIDTH="35%">

          <div> 標(biāo)簽

          Div 是一個(gè)塊標(biāo)簽

          Div 與 CSS 結(jié)合,會(huì)更好對(duì)頁面進(jìn)行排版

          <span> 標(biāo)簽

          Span 標(biāo)簽也是一個(gè)塊標(biāo)簽Div 與 span 區(qū)別:Div 會(huì)自動(dòng)換行,我們也叫這樣的標(biāo)簽為行級(jí)元素Span 標(biāo)簽它不會(huì)自動(dòng)換行,我們也叫它為行內(nèi)元素

          字體標(biāo)簽

          <font> 標(biāo)簽

          Font 標(biāo)簽可以設(shè)置字體,字的大小及顏色

          常用屬性:

          Face:用于設(shè)置字體,例如 宋體 隸書 楷體

          Size:用于設(shè)置字的大小

          Color:用于設(shè)置字的顏色

          我們所看到的屏幕上所有的顏色都是由紅、綠、藍(lán)這三種基色調(diào)混合而成的。每一種顏色的飽和度和透明度都是可以變化的,用 0~255 的數(shù)值來表示。如純紅色表示為 (255,0,0),十六進(jìn)制表示為 #FF0000。按這種表達(dá)方式,理論上我們可以得到 256 * 256 *256=16777216 種顏色。

          1. 使用十六進(jìn)制方式,取值范圍 #000000 ~ #FFFFFF (黑色到白色)。當(dāng)顏色值為 #cc3300 時(shí),也可以使用 #c30 這種簡化的方式來表示。
          2. RGB 顏色表示法:RGB(x,y,z),x、y、z 是 0 ~ 255 之間的整數(shù)。
          3. 在線顏色選擇器:http://www.86y.org/code/colorpicker/color.html


          標(biāo)題標(biāo)記

          <h1> 最大 <h6> 最小,它們代表的是標(biāo)題,可以使用 <b> <i> 對(duì)文字設(shè)置加粗或傾斜

          注意:在 HTML 中允許標(biāo)簽進(jìn)行嵌套的,但是一般都包裹嵌套,而不可以進(jìn)行交叉嵌套

          清單標(biāo)記(列表標(biāo)記)

          有序清單:

          <!-- 有序列表 I II III-->
          <ol type="I" start="3">
              <li>張三</li>
              <li>李四</li>
              <li>王五</li>
          </ol>
          <!-- 無序列表 -->
          <ul type="square">
              <li>Java</li>
              <li>Python</li>
              <li>C#</li>
          </ul>

          圖形標(biāo)簽

          <img> 可以讓我們?cè)诰W(wǎng)頁引入一張圖片

          常用屬性

          1. src 代表的圖片的路徑
          2. width 圖片的寬度
          3. height 圖片的高度
          4. border 用于設(shè)置圖片的邊框
          5. alt 如果圖片不可以顯示時(shí),默認(rèn)顯示的文本信息
          6. align 圖片附件文字的對(duì)齊方式,取值有 :left right middle top bottom

          超連接標(biāo)簽

          <a> 標(biāo)簽可以實(shí)現(xiàn)跳轉(zhuǎn)到其它頁面操作。超鏈接內(nèi)容不僅可以是文本,也可以是圖片等信息

          常用屬性

          1. href 代表的要跳轉(zhuǎn)的路徑
          2. name 屬性可以在本頁面設(shè)置一個(gè)錨點(diǎn)
          3. target 這個(gè)屬性規(guī)定在何處打開這個(gè)鏈接文檔,可取值:_blank _self _parent _top framename

          表格標(biāo)簽

          <!-- 學(xué)習(xí)表格標(biāo)簽 -->
          <table border="2" align="center" width="400px">
              <caption>學(xué)生成績單</caption>
              <tr>
                  <th>姓名</th>
                  <th>語文成績</th>
                  <th>數(shù)學(xué)成績</th>
                  <td colspan="2" align="center"><b>操作</b></td>
              </tr>
              <tr align="center">
                  <td>張三</td>
                  <td>99</td>
                  <td>100</td>
                  <td>修改</td>
                  <td>刪除</td>
              </tr>
              <tr align="center">
                  <td>李四</td>
                  <td>90</td>
                  <td>66</td>
                  <td>修改</td>
                  <td>刪除</td>
              </tr>
          </table>

          表單標(biāo)簽

          通過表單可以將要提交的數(shù)據(jù)提交到指定的位置

          <!-- 表單:用戶注冊(cè)案例 -->
          <form name="form1" action="user/login" method="POST">
              <table border="1" width="64%" align="center">
                  <tr>
                      <td>用戶名:</td>
                      <td>
                          <input type="text" name="username">
                      </td>
                  </tr>
                  <tr>
                      <td>密碼:</td>
                      <td>
                          <input type="password" name="password">
                      </td>
                  </tr>
                  <tr>
                      <td>性別:</td>
                      <td>
                          <input type="radio" name="sex" checked="checked">男
                          <input type="radio" name="sex" >女
                      </td>
                  </tr>
                  <tr>
                      <td>地址:</td>
                      <td>
                          <select name="province">
                              <option value="0">--請(qǐng)選擇省--</option>
                              <option value="10001">廣東</option>
                              <option value="10002">上海</option>
                              <option value="10003">山東</option>
                          </select> 省
                          <select name="city">
                              <option>--請(qǐng)選擇市--</option>
                              <option value="1000301">廣州市</option>
                              <option>深圳市</option>
                              <option>東莞市</option>
                          </select> 市
                      </td>
                  </tr>
                  <tr>
                      <td>編程語言:</td>
                      <td>
                          <input type="checkbox" name="language" checked="checked">Java
                          <input type="checkbox" name="language">Python
                          <input type="checkbox" name="language">Go
                      </td>
                  </tr>
                  <tr>
                      <td>照片:</td>
                      <td>
                          <input type="file" name="image">
                      </td>
                  </tr>
                  <tr>
                      <td>自我介紹:</td>
                      <td>
                          <textarea name="remark" rows="5" cols="100"></textarea>
                      </td>
                  </tr>
                  <tr>
                      <td colspan="2" align="center">
                          <input type="submit" value="注冊(cè)"> 
                          <input type="reset" value="取消"> 
                      </td>
                  </tr>
              </table>
          </form>

          框架標(biāo)簽

          通過框架標(biāo)簽可以定制 HTML 頁面布局

          在 HTML 頁面上去描述框架信息時(shí),不可以將 <frameset> 寫在 <body> 標(biāo)簽中

          framesetTest.html

          <!DOCTYPE html>
          <html lang="en">
              <head>
                  <meta charset="UTF-8">
                  <meta name="viewport" content="width=device-width, initial-scale=1.0">
                  <meta http-equiv="X-UA-Compatible" content="ie=edge">
                  <title>HTML 框架標(biāo)簽</title>
              </head>
              <!-- rows 定義了三行:第一行 100 像素,第三行:100 像素;第二行:剩下的像素 -->
              <frameset rows="100, * , 100"> 
                  <frame name="topModule" src="./top.html"></frame>
                  <frameset cols="100, * ">
                      <frame name="menuModule" src="./menu.html"></frame>
                      <frame name="contentModule" src="./content.html"></frame>
                  </frameset>
                  <frame name="footModule" src="./foot.html"></frame>
              </frameset>
          </html>

          top.html

          <!DOCTYPE html>
          <html lang="en">
              <head>
                  <meta charset="UTF-8">
                  <meta name="viewport" content="width=device-width, initial-scale=1.0">
                  <meta http-equiv="X-UA-Compatible" content="ie=edge">
                  <title>top</title>
              </head>
              <body>
                  <div>頭部信息</div>
              </body>
          </html>

          foot.html

          <!DOCTYPE html>
          <html lang="en">
              <head>
                  <meta charset="UTF-8">
                  <meta name="viewport" content="width=device-width, initial-scale=1.0">
                  <meta http-equiv="X-UA-Compatible" content="ie=edge">
                  <title>footL</title>
              </head>
              <body>
                  <div>底部信息</div>
              </body>
          </html>

          menu.html

          <!DOCTYPE html>
          <html lang="en">
              <head>
                  <meta charset="UTF-8">
                  <meta name="viewport" content="width=device-width, initial-scale=1.0">
                  <meta http-equiv="X-UA-Compatible" content="ie=edge">
                  <title>menu</title>
              </head>
              <body>
                  <div>菜單信息</div>
              </body>
          </html>

          content.html

          <!DOCTYPE html>
          <html lang="en">
              <head>
                  <meta charset="UTF-8">
                  <meta name="viewport" content="width=device-width, initial-scale=1.0">
                  <meta http-equiv="X-UA-Compatible" content="ie=edge">
                  <title>content</title>
              </head>
              <body>
                  <div>內(nèi)容顯示區(qū)</div>
              </body>
          </html>

          其它標(biāo)簽與特殊字符

          <meta> 標(biāo)簽

          <meta> 標(biāo)簽必須寫在 <head> 標(biāo)簽之間

          1. 它可以對(duì)頁面進(jìn)行描述及熱詞設(shè)置,可以方便搜索引擎查找頁面
          2. 通過 meta 標(biāo)簽設(shè)置 http 響應(yīng)信息
          3. 通過 meta 標(biāo)簽可以設(shè)置頁面的編碼,<meta http-equiv="Content-Type" content="text/html; charset=gbk">
          4. 通過 meta 標(biāo)簽來設(shè)置頁面加載后在指定的時(shí)間后跳轉(zhuǎn)到指定的頁面,<meta http-equiv="refresh" content="5; url=http://www.baidu.com">

          <link>標(biāo)簽

          使用 link 標(biāo)簽來導(dǎo)入 CSS

          特殊字符

          詳情查看菜鳥教程:https://www.runoob.com/charsets/ref-html-ascii.html


          ?HTML DOM

          Introduction

          DOM, Document Object Model -- 文檔對(duì)象模型,是 HTML 和 XML 文檔的編程接口,以樹結(jié)構(gòu)表達(dá) HTML 文檔。

          DOM 是 W3C(萬維網(wǎng)聯(lián)盟)的標(biāo)準(zhǔn)。

          DOM 定義了訪問 HTML 和 XML 文檔的標(biāo)準(zhǔn)。

          W3C DOM 標(biāo)準(zhǔn)被分為 3 個(gè)不同的部分:

          • 核心 DOM - 針對(duì)任何結(jié)構(gòu)化文檔的標(biāo)準(zhǔn)模型
          • XML DOM - 針對(duì) XML 文檔的標(biāo)準(zhǔn)模型
          • HTML DOM - 針對(duì) HTML 文檔的標(biāo)準(zhǔn)模型

          DOM Node

          DOM 是被視為節(jié)點(diǎn)樹的 HTML。

          根據(jù) W3C 的 HTML DOM 標(biāo)準(zhǔn),HTML 文檔中的所有內(nèi)容都是節(jié)點(diǎn):

          • 整個(gè)文檔是一個(gè)文檔節(jié)點(diǎn)
          • 每個(gè) HTML 元素是元素節(jié)點(diǎn)
          • HTML 元素內(nèi)的文本是文本節(jié)點(diǎn)
          • 每個(gè) HTML 屬性是屬性節(jié)點(diǎn)
          • 注釋是注釋節(jié)點(diǎn)

          HTML DOM 將 HTML 文檔視作樹結(jié)構(gòu),這種結(jié)構(gòu)被稱為節(jié)點(diǎn)樹。

          節(jié)點(diǎn)樹中的節(jié)點(diǎn)彼此擁有層級(jí)關(guān)系。常用父(parent)、子(child)和同胞(sibling)等術(shù)語來描述這些關(guān)系。父節(jié)點(diǎn)擁有子節(jié)點(diǎn)。同級(jí)的子節(jié)點(diǎn)被稱為同胞(兄弟或姐妹)。

          • 在節(jié)點(diǎn)樹中,頂端節(jié)點(diǎn)被稱為根(root)。
          • 每個(gè)節(jié)點(diǎn)都有父節(jié)點(diǎn)、除了根(它沒有父節(jié)點(diǎn))。
          • 一個(gè)節(jié)點(diǎn)可擁有任意數(shù)量的子節(jié)點(diǎn)。
          • 同胞是擁有相同父節(jié)點(diǎn)的節(jié)點(diǎn)。

          DOM 方法 & 屬性

          HTML DOM 方法是可以在節(jié)點(diǎn)(HTML 元素)上執(zhí)行的動(dòng)作。

          HTML DOM 屬性是可以在節(jié)點(diǎn)(HTML 元素)設(shè)置和修改的值。

          可通過 JavaScript (以及其他編程語言)對(duì) HTML DOM 進(jìn)行訪問。所有 HTML 元素被定義為對(duì)象,而編程接口則是對(duì)象方法和對(duì)象屬性。方法是能夠執(zhí)行的動(dòng)作(比如添加或修改元素)。屬性是能夠獲取或設(shè)置的值(比如節(jié)點(diǎn)的名稱或內(nèi)容)。

          <!DOCTYPE html>
          <html lang="en">
              <head>
                  <meta charset="UTF-8">
                  <meta name="viewport" content="width=device-width, initial-scale=1.0">
                  <meta http-equiv="X-UA-Compatible" content="ie=edge">
                  <title>DOM</title>
              </head>
              <body>
                  <div id="div1">
                      <p id="p1">Hello</p>
                      <p id="p2">Hello</p>
                  </div>
                  <script>
                      // 先獲取 P 元素
                      var element = document.getElementById("p1")
                      // 直接修改 p 元素的內(nèi)容
                      element.innerHTML = "此時(shí)已是修改后的內(nèi)容"
          
                      // 修改 p2 標(biāo)簽的樣式
                      var ele = document.getElementById("p2")
                      ele.style.color="blue"
                      ele.style.fontFamily="宋體"
                      ele.style.fontSize="larger"
          
                      // 添加元素
                      // 創(chuàng)建一個(gè)p元素
                      var elementP = document.createElement("p")
                      // 創(chuàng)建一個(gè)內(nèi)容
                      var nodeText = document.createTextNode("新加的 P 元素")
                      // 把文字內(nèi)容添加到p元素中
                      elementP.appendChild(nodeText)
                      // 把新創(chuàng)建的p元素添加div1元素中
                      var div1 = document.getElementById("div1")
                      div1.appendChild(elementP)
          
                      // 插入添加新的元素
                      // 創(chuàng)建一個(gè)新的元素
                      var eleP = document.createElement("p")
                      // 創(chuàng)建一個(gè)內(nèi)容
                      var noText = document.createTextNode("在 P1 元素前添加的新元素")
                      // 把文字內(nèi)容添加到 p 元素中
                      eleP.appendChild(noText)
                      // 把新創(chuàng)建的 p 元素添加 div 1 元素中
                      var parentDiv1 = document.getElementById("div1")
                      // 獲取指定被添加的元素
                      var p1 = document.getElementById("p1")
                      // 在元素前添加;參數(shù)說明:1.要添加的元素;2.在那個(gè)元素之前添加(指定一個(gè)元素)
                      parentDiv1.insertBefore(eleP, p1)
          
                      // 刪除元素
                      // 獲取父元素
                      var pdiv1 = document.getElementById("div1")
                      var removep1 = document.getElementById("p1")
                      // 使用父元素刪除該元素
                      pdiv1.removeChild(removep1)
                  </script>
              </body>
          </html>

          DOM 事件

          HTML DOM 允許 JavaScript 對(duì) HTML 事件作出反應(yīng)。當(dāng)事件發(fā)生時(shí),可以執(zhí)行 JavaScript,比如發(fā)生用戶點(diǎn)擊一個(gè) HTML 元素的事件。

          如需在用戶點(diǎn)擊某個(gè)元素時(shí)執(zhí)行代碼,可以把 JavaScript 代碼添加到 HTML 事件屬性中:onclick=JavaScript

          HTML 事件的例子:

          • 當(dāng)用戶點(diǎn)擊鼠標(biāo)時(shí)
          • 當(dāng)網(wǎng)頁已加載時(shí)
          • 當(dāng)圖片已加載時(shí)
          • 當(dāng)鼠標(biāo)移動(dòng)到元素上時(shí)
          • 當(dāng)輸入字段被改變時(shí)
          • 當(dāng) HTML 表單被提交時(shí)
          • 當(dāng)用戶觸發(fā)按鍵時(shí)
          <!DOCTYPE html>
          <html lang="en">
              <head>
                  <meta charset="UTF-8">
                  <meta name="viewport" content="width=device-width, initial-scale=1.0">
                  <meta http-equiv="X-UA-Compatible" content="ie=edge">
                  <title>DOM 事件</title>
                  <!-- JavaScript 代碼必須寫在 script 中 -->
                  <script>
                      function onLoadFun(){
                          alert("已載入...");
                      }
                      // 文本框失去焦點(diǎn)事件
                      function onBlurFun(){
                          alert("此方法是文本框失去焦點(diǎn)事件,用來校驗(yàn)此文本框輸入數(shù)據(jù)的")
                      }
                      // 表單被提交時(shí)執(zhí)行事件
                      function onSubmitFun(){
                          alert("此表單已提交,這個(gè)方法也可以來作為數(shù)據(jù)校驗(yàn)的");
                      }
                      // 元素被改變時(shí)觸發(fā)事件
                      function onChangeFun(){
                          alert("文本框元素已輸入新的數(shù)據(jù)")
                      }
                      // 當(dāng)鼠標(biāo)懸停在某一個(gè)元素上時(shí)執(zhí)行的方法
                      function onMouseOverFun(element){
                          element.innerHTML = "鼠標(biāo)已停在H1元素上了"
                      }
                      // 當(dāng)鼠標(biāo)離開某一個(gè)元素時(shí)執(zhí)行事件
                      function onMouseOutFun(element){
                          element.innerHTML = "鼠標(biāo)已離開H1元素上了..."
                      }
                  </script>
              </head>
              <!-- 需求:當(dāng)頁面被載入時(shí),執(zhí)行一個(gè)代碼,彈框提示已載入 -->
              <body onload="onLoadFun()">
                  <!-- 需求:在一個(gè)表單中有用戶名錄入的文本框,當(dāng)輸入完文本框的時(shí)候進(jìn)行名稱校驗(yàn),提交的時(shí)候彈框顯示 -->
                  <form onsubmit="onSubmitFun()">
                      用戶名:<input id="username" name="username" onchange="onChangeFun()" >
                      <br/>
                      <button type="submit">提交</button>
                  </form>
                  <!-- 需求:有一個(gè) H1 標(biāo)簽元素,當(dāng)鼠標(biāo)移動(dòng)到 H1 元素上時(shí),修改文字,當(dāng)鼠標(biāo)移出元素時(shí)執(zhí)行事件 -->
                  <h1 onmouseover="onMouseOverFun(this)" onmouseout="onMouseOutFun(this)">我是一個(gè)標(biāo)題</h1>
              </body>
          </html>


          想了解更多,歡迎關(guān)注我的微信公眾號(hào):Renda_Zhang


          主站蜘蛛池模板: 久久一区二区三区免费播放| 亚洲狠狠久久综合一区77777| 秋霞日韩一区二区三区在线观看| 亚洲日本va一区二区三区| 国产suv精品一区二区6| 亚洲视频一区在线播放| 一区二区国产在线观看| 无码av人妻一区二区三区四区| 国产成人精品一区二区秒拍| 97精品国产福利一区二区三区| 人妻无码一区二区视频| 国产亚洲综合精品一区二区三区| 亚洲丰满熟女一区二区哦| 国产福利91精品一区二区三区 | 91亚洲一区二区在线观看不卡| 红杏亚洲影院一区二区三区 | 亚洲一区二区三区高清在线观看| 精品视频一区二区三区| 国产91一区二区在线播放不卡| 精品在线一区二区三区| 国产在线精品观看一区| 国产在线观看一区二区三区| 国产一区在线视频观看| 国产aⅴ一区二区| 亚洲美女高清一区二区三区| 日韩精品无码Av一区二区| 一区在线免费观看| 国产波霸爆乳一区二区| 亚洲爆乳无码一区二区三区| 少妇无码一区二区二三区| 精品一区二区三区免费毛片爱| 精品视频一区二区三区四区| 综合无码一区二区三区四区五区| 精品人妻少妇一区二区三区不卡 | 亚洲一区综合在线播放| 97久久精品无码一区二区天美 | 国产成人AV区一区二区三| 日韩一区二区三区精品| 中文字幕日韩人妻不卡一区| 精品乱人伦一区二区三区| 日韩精品乱码AV一区二区|