整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          為用戶和開發人員改進 HTML 圖像的 6 個步驟

          日分享最新,最流行的軟件開發知識與最新行業趨勢,希望大家能夠一鍵三連,多多支持,跪求關注,點贊,留言。

          了解如何為具有響應式尺寸和現代格式的用戶更好地制作 HTML 圖像,而不會使您作為開發人員的生活更加困難。

          在本文中,了解如何使 HTML 圖像更適合具有響應式尺寸和現代格式的用戶,而不會使您作為開發人員的生活更加困難。


          • <img>只需src:易于實施;良好的開發經驗;沒有響應式圖像;沒有帶有后備功能的現代格式;可能使用更多帶寬;最差的用戶體驗
          • <img>具有srcset屬性:中等工作;好的開發經驗;支持響應式圖像以減少帶寬;沒有帶有后備功能的現代格式;留下潛在的節省;好的用戶體驗
          • <picture>with multiple <source>andsrcset:支持響應式圖像和具有后備功能的現代格式;寧愿在我眼里噴墨西哥胡椒汁
          • <img>只需src使用圖像管理器:易于實施并自動以最佳尺寸和格式發送圖像;開發者和用戶雙贏!!!

          假設我們只有一個從我的域加載圖像的基本網站。代碼可能如下所示:

          <!DOCTYPE html><html><正文> <img src="https://images.austingil.com/wp-content/uploads/Command-Line-Blog-Cover.png" alt="命令行終端和舊電腦,背景中有靛藍色筆觸。" ></正文></html>


          具有單個圖像標記且具有 asrc和alt屬性的 HTML 文檔在技術上可以正常工作。它按預期提供圖像,但該圖像存在一些問題。

          在大屏幕上,這張圖片會很好,但對于使用小屏幕設備的用戶來說,1200 像素寬的圖片意味著他們必須下載比他們需要的更大的圖片。下載可能需要更長的時間,并且可能會花費他們的數據計劃費用。

          第 1 步:優化和調整圖像大小

          這第一步很關鍵,但我認為大多數人都熟悉,所以我不會太深入。

          1. 您網站上的圖像應該只有它們需要的大小。如果你的圖片只有 600px 寬 x 400px 高,你就不應該讓人們下載 1200x800px 的圖片。
          2. 大多數網站不需要圖像是最高質量的。您可以通過壓縮圖像刪除大量不必要的數據而不會降低質量。

          Squoosh是一個非常棒的應用程序,可以手動執行此操作。

          如果圖像在您的 GitHub 存儲庫中,您也可以使用imgbot自動完成。

          第 2 步:創建響應式圖像

          圖像可以有一個srcset屬性,允許我們根據某些設備特征(例如設備寬度)為圖像定義多個來源。

          我們可以srcset像這樣向我們的圖像標簽添加一個屬性:

          <!DOCTYPE html><html><正文> <img srcset=" https://austingil.com/wp-content/uploads/Command-Line-Blog-Cover-1080x540.png 1080w, https://austingil.com/wp-content/uploads/Command-Line-Blog-Cover-480x240.png 480w, https://austingil.com/wp-content/uploads/Command-Line-Blog-Cover-200x100.png 200w, https://austingil.com/wp-content/uploads/Command-Line-Blog-Cover-768x384.png 768w, https://austingil.com/wp-content/uploads/Command-Line-Blog-Cover.png 1200w" src="https://cdn.statically.io/img/austingil.com/f=auto%2Cq=70/wp-content/uploads/Command-Line-Blog-Cover.png" alt="命令行終端和舊電腦,背景中有靛藍色筆觸。" ></正文></html>


          我鏈接到五個不同尺寸的五個不同圖像并定義它們相應的視口寬度。如果我們在瀏覽器中打開我們的圖像,視覺上并沒有真正改變。但在引擎蓋下,有一些改進。

          當我們在不同的屏幕上重新加載時,打開開發工具網絡選項卡。

          在大屏幕上,我們將看到像以前一樣下載了全尺寸圖像(Command-Line-Blog-Cover.png)。沒什么特別的。

          但是,如果我們從 200 像素或更窄的屏幕開始,我們會加載 200x100 像素的圖像(Command-Line-Blog-Cover-200x100.png)。

          對于用戶而言,該大小將變得更小更快。

          僅發送較小圖像的一個問題是:如果用戶最初在小屏幕上加載頁面,然后將瀏覽器調整為更大的尺寸會發生什么?在大屏幕上拉伸小圖像會使它像素化。

          屬性不會發生這種情況srcset(假設我們提供了正確的圖像),因為當從最小屏幕調整到最大屏幕時,會根據它們的斷點下載新圖像。

          方便的是,從大屏幕到小屏幕的另一個方向不會發生相同的行為,因為畢竟,您可以在較小的屏幕上提供大圖像,并且可以縮小而不損失質量。隨著屏幕變小,您不想下載額外的圖像,因為那樣會使用更多數據而沒有任何額外的好處。

          這是一種非常方便的方法,可以通過節省帶寬來改善用戶體驗,并通過以正確的尺寸提供正確的圖像來提高性能,但仍有改進的空間。

          第 3 步:使用現代圖像格式

          我們正在加載的圖像是 PNG,但現代瀏覽器支持新的圖像格式,例如WebP或AVIF。這些格式提供了更高的壓縮率而沒有明顯的數據丟失,這意味著我們可以以更小的文件大小有效地提供相同的圖像。

          再一次,瀏覽器讓我們覆蓋了HTML<picture>元素。

          類似于srcset屬性,圖片元素允許我們根據設備特性定義不同的圖像源來服務。

          所以我們可以做一些事情,比如根據設備寬度或不同的像素密度提供不同的圖像。但是將圖片元素與屬性區分開來的一件事srcset是我們可以針對不同的 mime 類型。

          如果瀏覽器支持,讓我們在示例中添加一個包含 AVIF 和 WebP 格式的圖片元素。當然,我們還希望繼續提供響應式版本。

          <!DOCTYPE html><html><正文> <圖片> <來源 類型="圖像/avif" srcset=" https://austingil.com/wp-content/uploads/Command-Line-Blog-Cover.avif 1200w, https://austingil.com/wp-content/uploads/Command-Line-Blog-Cover-1080x540.avif 1080w, https://austingil.com/wp-content/uploads/Command-Line-Blog-Cover-768x384.avif 768w, https://austingil.com/wp-content/uploads/Command-Line-Blog-Cover-480x240.avif 480w, https://austingil.com/wp-content/uploads/Command-Line-Blog-Cover-200x100.avif 200w" > <來源 類型="圖像/webp" srcset=" https://austingil.com/wp-content/uploads/Command-Line-Blog-Cover.webp 1200w, https://austingil.com/wp-content/uploads/Command-Line-Blog-Cover-1080x540.webp 1080w, https://austingil.com/wp-content/uploads/Command-Line-Blog-Cover-768x384.webp 768w, https://austingil.com/wp-content/uploads/Command-Line-Blog-Cover-480x240.webp 480w, https://austingil.com/wp-content/uploads/Command-Line-Blog-Cover-200x100.webp 200w" > <img src="https://cdn.statically.io/img/austingil.com/f=auto%2Cq=70/wp-content/uploads/Command-Line-Blog-Cover.png" alt="命令行終端和舊電腦,背景中有靛藍色筆觸。" > </圖片></正文></html>


          (我們不需要標簽srcset,<img>因為它可以作為不支持的舊瀏覽器的后備srcset。)

          好的,我們有一個圖像,它只會以最小的尺寸為用戶提供最現代的圖像格式。

          上面的代碼是不是……很漂亮?

          真的讓您想向您的網站添加新圖像,對嗎?

          正確的!?!?

          不!我們做了什么!?!?

          第 4 步:開始質疑生活選擇

          (你好黑暗,我的老朋友……)

          第 5 步:簡化現代圖像格式

          好的,既然我們已經解決了這個問題,很明顯,上面的解決方案并不是很好。

          對于我們想要定位的每種格式和設備寬度,我們需要不同版本的圖像。在上面的示例中,這是同一圖像的11 個版本(5 個 AVIF、5 個 WebP、1 個 PNG)。

          盡管瀏覽器為我們提供了提供更好的圖像和提供更好的用戶體驗的功能,但這是以開發人員體驗為代價的。

          (誰愿意付錢?不是我!)

          我們可以在上傳圖像以生成不同的格式和大小時自動執行該過程,然后將這些詳細信息存儲在數據庫中。有一些工具可以提供幫助,例如sharp,但這仍然需要大量工作。我很少看到人們這樣做,因為要么工作量太大,要么他們根本不考慮。

          我的建議是外包。

          今天我將使用 Akamai 圖像和視頻管理器,因為它是我最熟悉的服務,盡管還有其他人做同樣的工作。主要目標是在不讓開發人員發瘋的情況下為用戶提供最佳圖像。

          我已經設置了一個圖像管理器的實例。

          要從我的域中添加圖像,我只需將“圖像”前綴添加到常規圖像 URL。所以“austingil.com/wp-content/uploads/Command-Line-Blog-Cover.png”變成了“images.austingil.com/wp-content/uploads/Command-Line-Blog-Cover.png”。

          沒什么太有趣的。

          但是讓我們回到我們的代碼,去掉<picture>元素,替換舊的 URL,看看我們能做什么:

          <!DOCTYPE html><html><正文> <img srcset=" https://images.austingil.com/wp-content/uploads/Command-Line-Blog-Cover-1080x540.png 1080w, https://images.austingil.com/wp-content/uploads/Command-Line-Blog-Cover-480x240.png 480w, https://images.austingil.com/wp-content/uploads/Command-Line-Blog-Cover-200x100.png 200w, https://images.austingil.com/wp-content/uploads/Command-Line-Blog-Cover-768x384.png 768w, https://images.austingil.com/wp-content/uploads/Command-Line-Blog-Cover.png 1200w" data-fr-src="https://cdn.statically.io/img/austingil.com/f=auto%2Cq=70/wp-content/uploads/Command-Line-Blog-Cover.png" alt="命令行終端和舊電腦,背景中有靛藍色筆觸。" ></正文></html>


          <picture>與將元素與 AVIF 和 WebP一起使用相比,我認為沒有人會抱怨這一點。這肯定是少了一些工作,但是結果呢?

          如果我重新加載頁面,我們可以看到相同的圖像出現(“Command-Line-Blog-Cover.png”),但如果我們查看響應標題,事情會變得有點有趣。

          盡管請求是針對 PNG 圖像的,但響應實際上是發送 WebP 數據。這導致圖像尺寸更小,這意味著只需打開圖像管理器,我就已經為我的用戶節省了帶寬,而無需做任何事情。

          第 6 步:簡化響應式圖像

          我們已經改進了格式,但是響應式圖像大小呢?

          我仍然將srcset屬性設置為在小屏幕上提供小圖像,在大屏幕上提供大圖像。但是這個系統仍然依賴于提供五種不同分辨率的五種不同的圖像。

          還是很痛的。

          僅提供上傳功能就可以成為一項重要功能,更不用說調整大小和存儲不同的圖像了。對我們來說幸運的是,因為我們正在使用圖像管理器,我們實際上可以使這個過程變得更簡單。

          我實際上將多次引用同一個圖像,而不是使用五個不同大小的圖像。但我將附加一個查詢字符串參數,該參數明確定義我想要定位的大小。

          <!DOCTYPE html><html><正文> <img srcset=" https://images.austingil.com/wp-content/uploads/Command-Line-Blog-Cover.png?imwidth=1080 1080w, https://images.austingil.com/wp-content/uploads/Command-Line-Blog-Cover.png?imwidth=480 480w, https://images.austingil.com/wp-content/uploads/Command-Line-Blog-Cover.png?imwidth=200 200w, https://images.austingil.com/wp-content/uploads/Command-Line-Blog-Cover.png?imwidth=768 768w, https://images.austingil.com/wp-content/uploads/Command-Line-Blog-Cover.png 1200w" src="https://cdn.statically.io/img/austingil.com/f=auto%2Cq=70/wp-content/uploads/Command-Line-Blog-Cover.png" alt="命令行終端和舊電腦,背景中有靛藍色筆觸。" ></正文></html>


          請注意,現在每個圖像 URL 都轉到相同的“Command-Line-Blog-Cover.png”文件,但其中一些imwidth附加了一個額外的查詢字符串。

          如果我像以前一樣在這個小屏幕上重新加載并調整到更大的屏幕,我們會看到類似的行為。不同尺寸的不同圖像被加載到它們各自的屏幕尺寸中。

          但是這里有一個很大的區別:我們不必創建、上傳和管理五張不同大小的不同圖像,我們只需要擔心一張圖像。通過 queer 字符串參數生成不同的大小。

          與其他情況相比,它的工作量要少得多,尤其是在您使用基于組件的框架時。

          但我們可以做的工作更少!

          我們可以回到只使用圖像 URL,并讓圖像管理器為我們選擇合適的尺寸。

          為了展示它,我喜歡在新標簽而不是網站中打開圖像。將鼠標懸停在瀏覽器選項卡上會顯示圖像的尺寸,1200x600px。

          如果我打開我的開發工具,我可以轉到Elements 選項卡并模擬不同的設備,例如 iPhone SE:

          現在,當我重新加載時會發生一些有趣的事情。

          盡管 URL 完全相同,但我可以看到圖像大約是一半大小。將鼠標懸停在標簽上可確認尺寸為 640x320 像素。

          最好的部分是什么?確定要提供哪個圖像的所有工作都是在我(開發人員)無需做任何事情的情況下進行的。每次請求都會自動發送設備特征,并且 Image Manager 會以更小的圖像進行響應。

          老實說,我實際上無法解釋它是如何工作的。這很神奇,而且超級酷,讓我的生活更輕松,讓我的用戶生活得更好。

          (如果你真的很好奇它是如何工作的,請在 Twitter 上聯系我,我會為你找出答案。)

          如果您是 Akamai 客戶并且您沒有使用此功能,您應該立即使用它!

          可選的“我是個壞蛋”步驟:自己動手!

          我還想為非 Akamai 客戶的人們分享一些替代方案。有兩個開源項目看起來提供了類似的功能,盡管我沒有親自使用過它們。

          其中之一稱為imgproxy。另一個稱為Thumbor。只要您習慣使用 Docker,它們看起來都很容易安裝。

          我真的很喜歡Linode的廉價、強大的 VP。

          我是 DIY 方法的忠實擁護者,但我認為它并非沒有缺點(我的意思是,除了設置和維護之外)。我不確定這些服務在哪里托管圖像。如果它們與安裝托管在同一臺服務器上,則可能存在兩個問題。

          1. 如果您要生成同一圖像的多個版本,則它們必須存在于某個地方。如果他們住在同一個 VPS 上,那可能會變得更貴。嘗試對圖像使用對象存儲之類的東西,因為它的存儲費用更便宜。
          2. 從同一位置加載圖像可能會導致延遲問題。我非常喜歡 Image Manager 如何使用 Akamai CDN 網絡,因此圖像總是來自離用戶最近的位置。這可以大大加快下載時間。

          也就是說,我認為它仍然值得一試。

          如果你確實讓它工作并且你喜歡它,請回來告訴我它是怎么回事。什么進展順利,什么沒用,什么很棒,和/或缺少什么?

          結束的想法

          好吧,這就是我今天為你準備的全部內容。我們介紹了處理圖像的不同選項及其優缺點。我們從<img>一個src屬性開始,添加一個srcset屬性,然后<picture>使用不同的<source>標簽,最終把它全部燒掉,回到只是屬性,但合并了圖像管理器<img>。src

          換句話說,這是一個非常迂回的旅程:

          <! – 壞 – ><img src="https://austingil.com/wp-content/uploads/Command-Line-Blog-Cover.png" alt="命令行終端和舊電腦,背景中有靛藍色筆觸。">


          對此:

          <! – 好 – ><img data-fr-src="https://images.austingil.com/wp-content/uploads/Command-Line-Blog-Cover.png" alt="命令行終端和舊電腦,背景中有靛藍色筆觸。">


          多么虎頭蛇尾。

          可能本來可以節省時間,然后說“改善圖像的第一步:使用圖像管理器”,但其中的樂趣在哪里?我也喜歡挖掘原因。

          我們甚至沒有涉及諸如延遲加載、解碼或獲取優先級之類的內容,但這些內容更具上下文和細微差別,而上面的建議幾乎是全面的。

          無論如何,我希望您喜歡它,并且希望您實施其中一些解決方案,因為發送具有現代格式的較小圖像是使互聯網成為更快、更環保的地方的好方法。

          tml2canvas是一個用于html截屏的js插件,在網站切圖項目中不太常見,以至于在遇到問題的時候,能夠被查閱到的有用信息很少,這次是一個很復雜的使用案例,進行了多次的截屏、拼接、再截屏,并且解決了截屏錯位空白問題,增加了保存圖片到本地的有效代碼方案。

          其中關于截屏空白的問題(頁面有下拉的時候產生),先后查閱了國內外資料后找到了有效解決方案,頗為曲折。

          /*第一次把圖標截圖放到模板里*/
          html2canvas(document.querySelector(".tjqx-bars "),{
          //height:850,
          //y:window.pageYOffset,
          }).then(canvas => {
          
          $('#captureimg').html(canvas);
          
          /*第二次把模板整個截圖*/
          html2canvas(document.querySelector("#capturetmpl"),{
          //height:1240,
          //y:window.pageYOffset,
          scrollX: 0,
          scrollY: -window.scrollY,
          }).then(canvas => {
          //canvas.setAttribute('id','thecanvas');
          $('#capture').html(canvas);
          
          //圖片寫到body臨時存儲
          var dataURL = canvas.toDataURL();
          $(document.body).data('url', dataURL);
          
          //Canvas2Image.saveAsPNG(canvas);
          
          //var dataURL = canvas.toDataURL("image/png");
          //console.log(dataURL);
          //$(document.body).data('url', dataURL);
          //var tmpUrl = "data:application/octet-stream;base64" + dataURL;
          // $('.kzdialog-fz').attr('href', tmpUrl);
          
          //關閉
          layer.close(index);
          });
          
           
          
           
          
          //復制圖片提示
          $('.kzdialog-fz').click(function(){
          
          var url = $(document.body).data('url');
          
          $("<a>", {
          href: url,
          download: "fileName"
          })
          .on("click", function() {$(this).remove()})
          .appendTo("body")[0].click();
          
          //var oCanvas = document.getElementById("thecanvas");
          //Canvas2Image.saveAsPNG(oCanvas);
          
          
          
          //layer.msg('復制成功');
          //layer.msg('復制圖片失敗 請重試');
          })

          標簽:html2canvas

          ody

          常用標簽

          body分為塊級和行內

          • 塊級 獨占整行
          • 行內 內容有多少就占多少

          文本格式化標簽

          br 換行

          <div>qwer<br/>zxcv</div>

          div和span

          • div 塊級標簽樣式
          <div style="background-color: green;">qwer</div>
          • span 行內標簽樣式
          span style="background-color: green;">zxcv</span>

          p 段落

          <p>hahahahah</p> 
          <p>hahahahahaaa</p>   

          h 標題

          h1~h6y依次變小

             <div>默認文字字體</div>
             <h1>再再再再再粗一點</h1>
             <h2>再再再再粗一點</h2>
             <h3>再再再粗一點</h3>
             <h4>再再粗一點</h4>
             <h5>再粗一點</h5>
             <h6>粗一點</h6>
          

          鏈接

          • a 超鏈接,跳轉到指定的地址
          <a href="http://www.baidu.com" title="baidu">百度</a>
          • 錨點,點擊后跳轉到指定位置
          <!DOCTYPE html>
          <html lang="en">
          <head>
             <meta charset="UTF-8">
             <title>野雞平臺</title>
          </head>
          <body>
          <h1>章節</h1>
          <a href="#i1" title="第一章">第一章 寂寞的春天</a>
          <a href="#i2" title="第二章">第二章 寂寞的夏天</a>
          <a href="#i3" title="第三章">第三章 寂寞的秋天</a>
          <a href="#i4" title="第四章">第四章 寂寞的冬天</a>
          <h1>內容</h1>
          <div style="height: 1000px;" id="i1">
             <h3>第一章 寂寞的春天</h3>
             <p>春暖花開,萬物復蘇,又到了交配的季節。</p>
          </div>
          <div style="height: 1000px;" id="i2">
             <h3>第二章 寂寞的夏天</h3>
             <p>夏天夏天悄悄過去留下小咪咪</p>
          </div>
          <div style="height: 1000px;" id="i3">
             <h3>第三章 寂寞的秋天</h3>
             <p>今年的秋天真是寂寞呀!!!</p>
          </div>
          <div style="height: 1000px;" id="i4">
             <h3>第四章 寂寞的冬天</h3>
             <p>下雪</p>
          </div>
          </body>
          </html>
          

          ul ol dl 列表展示

          • ul 無序列表
          • ol 有序列表
          • dl 層級列表
          • li 列表項目
          <!DOCTYPE html>
          <html lang="en">
          <head>
              <meta charset="UTF-8">
              <title>野雞平臺</title>
          </head>
          <body>
              <ul>
                  <li>周杰倫</li>
                  <li>林俊杰</li>
                  <li>王力宏</li>
              </ul>
              <ol>
                  <li>鐵錘</li>
                  <li>鋼彈</li>
                  <li>狗蛋</li>
              </ol>
              <dl>
                  <dt>河北省</dt>
                  <dd>邯鄲</dd>
                  <dd>石家莊</dd>
                  <dt>山西省</dt>
                  <dd>太原</dd>
                  <dd>平遙</dd>
              </dl>
          </body>
          </html>
          

          table 表格

          • table表格標題
          • thead表格標題
          • tr 行標簽
          • th 列名
          • tbody表格內容
          • tr 列標簽
          • td 列內容
          <!DOCTYPE html>
          <html lang="en">
          <head>
              <meta charset="UTF-8">
              <title>6666</title>
          </head>
          <body>
              <table border="3">   <!--border 選擇表格樣式-->>
                  <thead>
                      <tr>
                          <th>姓名</th>
                          <th>年齡</th>
                          <th>愛好</th>
                      </tr>
                  </thead>
                  <tbody>
                      <tr>
                          <td>xxxx</td>
                          <td>18</td>
                          <td>看書</td>
                      </tr>
                      <tr>
                          <td rowspan="3">aaaa</td>  <!--rowspan 合并單元格-->>
                          <td>18</td>
                          <td>吃飯</td>
                      </tr>
                      <tr>
                          <td>33</td>>
                          <td>heiheihei</td>>
                      </tr>>
                  </tbody>
              </table>
          </body>
          </html>
          

          img 圖片

          <!DOCTYPE html>
          <html lang="en">
          <head>
              <meta charset="UTF-8">
              <title>6666</title>
          </head>
          <body>
              <!--顯示本地圖片,找不到圖片則顯示alt中的文字-->
              <img src="img/lover.png" alt="美女">
              <!--顯示網絡圖片-->
              <img src="https://images.cnblogs.com/cnblogs_com/wupeiqi/662608/t_212313579359018.png" alt="妹子">
          </body>
          </html>
          

          用戶交互

          按鈕標簽

          type

          • buttom: 普通
          • submit: 提交
          • reset: 重置
           <button type="button"> 按鈕 </button>

          input

          • text,文本框。
          • password,密碼框。
          • radio,單選框(必須設置name屬性相同,否則無法實現)。
          • checkbox,復選框。
          • file,文件上傳。
          <!DOCTYPE html>
          <html lang="en">
          <head>
              <meta charset="UTF-8">
              <title>666666</title>
          </head>
          <body>
              <h3>文本框</h3>
              <input type="text">
              <h3>密碼框</h3>
              <input type="password">
              <h3>單選框</h3>
              <input type="radio" name="gender">男
              <input type="radio" name="gender">女
              <h3>復選框</h3>
              <input type="checkbox">籃球
              <input type="checkbox">足球
              <input type="checkbox">橄欖球
              <h3>上傳文件</h3>
              <input type="file">
          </body>
          </html>

          select下拉框

          <!DOCTYPE html>
          <html lang="en">
          <head>
              <meta charset="UTF-8">
              <title>HTML學習</title>
          </head>
          <body>
              <h3>單選</h3>
              <select>
                  <option>上海</option>
                  <option>北京</option>
                  <option>深圳</option>
              </select>
              <h3>多選</h3>
              <select multiple>
                  <option>上海</option>
                  <option>北京</option>
                  <option>深圳</option>
              </select>
          </body>
          </html>

          textarea多行文本框

          <!DOCTYPE html>
          臥槽,無情呀
          <html lang="en">
          <head>
              <meta charset="UTF-8" />
              <title>HTML學習</title>
          </head>
          <body>
              <textarea>文本內容寫在這里...</textarea>
          </body>
          </body>
          </html>

          form表單

          用于提交數據到后臺

          • 提交時,只會提交form標簽內部【用戶交互】相關的標簽。
          • <input type="submit" value="提交"> 用于提交當前所在的表單。
          • <input type="reset" value="重置"> 用于重置當前標簽中的選項。
          • form標簽內置屬性action="/xx/" ,表示表單要提交的地址。method="get",表示表單的提交方式。enctype="multipart/form-data",如果form內部有文件上傳,必須加上此設置
          • form內部【用戶交互】相關標簽必須設置name,不然提交數據后后端無法獲取
          // 提交表單之后,實際上會將表單中的數據構造成一種特殊的結構,發送給后臺,類似于:
          {
              user:用戶輸入的姓名,
            pwd:用戶輸入的密碼,
              ...
          }
          
          • radio、checkbox、select 除了要設置name屬性以外,還必須設置value屬性,因為這三中標簽在form表單提交時,不會把看到的內容提交到后臺,而是把選擇選項對應的value值提交到后臺。

          主站蜘蛛池模板: 91一区二区三区| 无码人妻精品一区二区三18禁| 国模少妇一区二区三区| 无码人妻一区二区三区免费n鬼沢 无码人妻一区二区三区免费看 | 日韩一区二区免费视频| 国产MD视频一区二区三区| 日韩人妻无码一区二区三区| 97av麻豆蜜桃一区二区| 国产成人一区二区三区免费视频 | 亚洲国产专区一区| 亚洲AV无码一区东京热| 亚洲大尺度无码无码专线一区| 影院成人区精品一区二区婷婷丽春院影视| 国产伦精品一区二区三区在线观看 | 无码毛片视频一区二区本码| 国产精品无码一区二区三区毛片 | 国产福利一区视频| 国产精品无圣光一区二区| 中日韩精品无码一区二区三区| 一区二区三区杨幂在线观看| 麻豆一区二区在我观看| 日韩有码一区二区| 精品一区二区视频在线观看| 国产福利电影一区二区三区,日韩伦理电影在线福 | 精品香蕉一区二区三区| 三上悠亚国产精品一区| 久久精品无码一区二区三区免费| 精品国产一区二区三区久久蜜臀 | 无码人妻久久一区二区三区免费| 成人在线观看一区| 无码人妻精品一区二区三| 色精品一区二区三区| 国产成人久久精品区一区二区| 国产精品一区在线观看你懂的| 无码人妻一区二区三区免费手机| 中文字幕AV一区中文字幕天堂| 国产免费一区二区三区VR| 亚洲av无码片区一区二区三区| 中文字幕亚洲一区二区va在线| 在线视频亚洲一区| 国产香蕉一区二区在线网站 |