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 久久精品国产线看观看亚洲,精品喷水吹潮在线播放,亚洲国产精品专区

          整合營銷服務商

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

          免費咨詢熱線:

          JavaScript如何更優雅的斷定圖片資源已加載完

          JavaScript如何更優雅的斷定圖片資源已加載完成

          擊右上方紅色按鈕關注“小鄭搞碼事”,每天都能學到知識,搞懂一個問題!

          在H5的頁面中,我們經常會看到開頭有一個loading的效果,這個loading的時間內就是在加載圖片資源,以便后續滑屏效果更流暢。那么JS如何來判斷圖片資源已加載完成呢?且如何能更優雅的寫斷定代碼。

          首先,提一下兩個事件:jquery中有一個ready和window.onload的區別。ready只是dom結構加載完成,圖片并沒有加載完畢,而onload是dom生成和資源完全加載出來后才執行,這里也就包括圖片已加載。

          所以,基本這點,接下來我們來看一下JS是如何斷定單圖和多圖加載完成的。

          考慮兼容

          IE8下版本不支持onload事件,但支持onreadystatechange事件,readyState是onreadystatechange事件的一個狀態,值為loaded或complete的時候,表示已經加載完畢。代碼如下所示:

          不考慮兼容

          在不考慮兼容的情況下,使用onload事件就足夠了,下面分單圖和多圖及結合promise來給出代碼。

          1. 單圖(onload)

          2. 單圖(+promise)

          3. 多圖(onload)

          4. 多圖(+promise)

          家好,今天我們來聊聊一個非常實用的小技巧——如何用JavaScript檢測用戶上傳的圖片的寬度和高度。這在我們開發中非常常見,比如說,我們要限制用戶上傳頭像的尺寸,或者是對商品圖片進行尺寸檢查。這些場景都要求我們在前端就能搞定圖片尺寸的檢測,避免用戶上傳不符合要求的圖片。

          業務需求:用戶頭像上傳

          想象一下,你正在開發一個用戶頭像上傳的功能。我們希望用戶上傳的頭像不能超過100x100像素,這樣可以確保頭像在頁面上顯示得清晰又美觀。那我們該怎么實現呢?

          解決方案:FileReader和Image對象

          不用擔心,JavaScript提供了非常方便的FileReader和Image對象,可以幫助我們輕松實現這個功能。具體步驟如下:

          1. 獲取文件輸入框:首先,我們需要獲取到用戶選擇的文件。
          2. 讀取文件內容:然后,通過FileReader對象讀取文件內容。
          3. 創建圖片對象:接下來,用Image對象加載讀取到的文件。
          4. 檢測圖片尺寸:最后,通過Image對象獲取圖片的寬度和高度,并進行判斷。

          實現代碼

          我們來看看具體的實現代碼:

          const fileUpload=document.querySelector('input[type="file"]');
          const reader=new FileReader();
          
          fileUpload.addEventListener('change', ()=> {
            reader.readAsDataURL(fileUpload.files[0]);
            reader.onload=(e)=> {
              const image=new Image();
              image.src=e.target.result;
              image.onload=()=> {
                const { height, width }=image;
                if (height > 100 || width > 100) {
                  alert("上傳的圖片尺寸過大,請選擇100x100像素以內的圖片。");
                } else {
                  alert("圖片上傳成功!");
                }
              };
            };
          });

          代碼解析

          1. 獲取文件輸入框:document.querySelector('input[type="file"]')選擇了頁面上的文件輸入框。
          2. 創建FileReader實例:通過new FileReader()創建了一個FileReader對象。
          3. 添加事件監聽器:fileUpload.addEventListener('change', ()=> { ... })監聽文件輸入框的變化事件,當用戶選擇文件時觸發。
          4. 讀取文件內容:reader.readAsDataURL(fileUpload.files[0])讀取用戶選擇的文件,并轉換為Data URL格式。
          5. 創建Image對象:在FileReader讀取完成后,通過new Image()創建一個圖片對象,并將其src屬性設置為讀取到的文件內容。
          6. 檢測圖片尺寸:當圖片加載完成后,通過image.onload事件獲取圖片的寬度和高度,并進行尺寸判斷。

          結束

          通過以上步驟,我們可以輕松實現對用戶上傳圖片尺寸的檢測。這不僅提高了用戶體驗,還能確保上傳的圖片符合我們的要求。希望這個小技巧能對你有所幫助,趕緊在你的項目中試試吧!

          先安裝的依賴

          npm install file-loader --save-dev
          npm install image-webpack-loader --save-dev
          npm install url-loader --save-dev

          在webpack.config.js文件中加入如下配置

          在css文件中引入該圖片作為背景圖片。

          運行npm run start

          打開瀏覽器http://localhost:8080/

          看到圖片已經引入進來而且命名經過了哈希處理。

          看下url-loader是什么樣子的,同樣修改webpack.config.js文件

          意思是小于10K的轉為base64,大于10K的還是原圖片。

          直接運行npm run start

          圖片已經轉化為base64編碼了。


          主站蜘蛛池模板: 亚洲一区二区三区乱码A| 国精产品一区二区三区糖心| 日韩一区精品视频一区二区 | 在线观看免费视频一区| 波多野结衣久久一区二区| 一区二区视频传媒有限公司| 冲田杏梨高清无一区二区| 一区二区不卡在线| 亚洲视频一区在线| 精品无码一区在线观看| 日韩亚洲AV无码一区二区不卡| 亚洲国产一区二区视频网站| 精品无码中出一区二区| 天堂一区二区三区精品| 97一区二区三区四区久久| 精品一区二区三区四区在线播放| 亚洲国产成人一区二区三区| 亚洲av无码不卡一区二区三区| 亚洲线精品一区二区三区影音先锋| 一区二区国产在线观看| www一区二区www免费| 亚洲毛片不卡av在线播放一区| 一区二区三区AV高清免费波多| 综合激情区视频一区视频二区| 免费一区二区无码视频在线播放| 午夜一区二区在线观看| 国产高清一区二区三区视频| 国产一区二区三区美女| 精彩视频一区二区| 99久久精品国产免看国产一区| 国产无套精品一区二区| 亚洲国产精品无码久久一区二区| 少妇无码一区二区三区| 亚洲香蕉久久一区二区 | 国产一区二区三区亚洲综合| 国产乱子伦一区二区三区| 四虎永久在线精品免费一区二区| 四虎永久在线精品免费一区二区 | 无码国产精品一区二区免费vr| 久久久久人妻精品一区| 丝袜美腿一区二区三区|