行動Web中圖片自適應的兩種JavaScript解決方法_javascript技巧
本文主要說的是Web中圖片根據手機螢幕大小自適應居中顯示,圖片自適應兩種常見情況解決方案。開始吧
在做配合手機客戶端的Web wap頁面時,發現文章對圖片顯示的需求有兩種特別重要的情況,一是對於圖集,這種文章只需要左右滑動瀏覽,最好的體驗是讓圖片縮放顯示在螢幕有效範圍內,防止圖片太大導致用戶需要滑動手指移動圖片來查看這種費力氣的事情,用戶體驗大大降低。二是圖文混排的文章,圖片最大寬度不超過螢幕寬度,高度可以auto。這兩種情況在專案中很常見。另外,有人說做個圖片切割工具,把圖片尺寸比例都設定為統一的大小,但即使這樣,面對各種大小的行動裝置螢幕,也是無法適用一個統一方案就能解決得了的。而且如果需求太多,那伺服器上要存多少份不同尺寸的圖片呢?顯示不太符合實際。
下面是圖集類型,需求方要求圖片高寬都保持在手機視覺視野範圍,js程式碼列在下面:
<script type="text/javascript"> $(function(){ var imglist =document.getElementsByTagName("img"); //安卓4.0+等高版本不支持window.screen.width,安卓2.3.3系统支持 /* var _width = window.screen.width; var _height = window.screen.height - 20; var _width = document.body.clientWidth; var _height = document.body.clientHeight - 20; */ var _width, _height; doDraw(); window.onresize = function(){ doDraw(); } function doDraw(){ _width = window.innerWidth; _height = window.innerHeight - 20; for( var i = 0, len = imglist.length; i < len; i++){ DrawImage(imglist[i],_width,_height); } } function DrawImage(ImgD,_width,_height){ var image=new Image(); image.src=ImgD.src; image.onload = function(){ if(image.width>30 && image.height>30){ if(image.width/image.height>= _width/_height){ if(image.width>_width){ ImgD.width=_width; ImgD.height=(image.height*_width)/image.width; }else{ ImgD.width=image.width; ImgD.height=image.height; } }else{ if(image.height>_height){ ImgD.height=_height; ImgD.width=(image.width*_height)/image.height; }else{ ImgD.width=image.width; ImgD.height=image.height; } } } } } }) </script>
注意:測試中發現安卓4.0 的系統對window.screen.width屬性支援的不好,很多情況在首次載入時回傳的螢幕像素不正確。本人的安卓2.3.3系統測試通過,支援該屬性。據說,這是安卓系統的bug,可以透過setTimeout設定延時時間來解決這個問題。不過,這個方法,本人怎麼測試都行不通。所以乾脆還是另尋高明吧。發現window.innerWidth可以擔此重任,沒有發現相容問題,ok。
以下是,第二種情況,圖文並茂的文章類型。這時候只對圖片寬度和手機寬度適應有要求,高度不做限制,相對容易。
改造上面的javascript程式碼,如下:
<script type="text/javascript"> $(function(){ var imglist =document.getElementsByTagName("img"); //安卓4.0+等高版本不支持window.screen.width,安卓2.3.3系统支持 var _width; doDraw(); window.onresize = function(){ //捕捉屏幕窗口变化,始终保证图片根据屏幕宽度合理显示 doDraw(); } function doDraw(){ _width = window.innerWidth; for( var i = 0, len = imglist.length; i < len; i++){ DrawImage(imglist[i],_width); } } function DrawImage(ImgD,_width){ var image=new Image(); image.src=ImgD.src; image.onload = function(){ //限制,只对宽高都大于30的图片做显示处理 if(image.width>30 && image.height>30){ if(image.width>_width){ ImgD.width=_width; ImgD.height=(image.height*_width)/image.width; }else{ ImgD.width=image.width; ImgD.height=image.height; } } } } }) </script>
說明:程式碼中的resize函數,是捕捉螢幕視窗變化,始終保證圖片根據螢幕寬度合理顯示。當然了,前提是像我的專案一樣,文章直接為富文本格式,圖片的父級標籤已經設定了text-align:center的居中屬性。如果你的文章內容是直接呼叫第三方的,那麼你可以在上面的javascript程式碼中加入對應的處理語句即可。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

appdata資料夾可以移到d盤嗎隨著電腦使用的日益普及,使用者的個人資料和應用程式也越來越多地儲存在電腦上。在Windows作業系統中,有一個特定的資料夾,名為appdata資料夾,它用於儲存使用者的應用程式資料。許多用戶想知道是否可以將這個資料夾移到D碟或其他磁碟上,以便進行資料管理和安全性的考慮。在本文中,我們將討論這個問題並提供一些解決方案。首先,讓我

如何使用WebSocket和JavaScript實現線上語音辨識系統引言:隨著科技的不斷發展,語音辨識技術已成為了人工智慧領域的重要組成部分。而基於WebSocket和JavaScript實現的線上語音辨識系統,具備了低延遲、即時性和跨平台的特點,成為了廣泛應用的解決方案。本文將介紹如何使用WebSocket和JavaScript來實現線上語音辨識系

微軟在最新的Windows11版本中將PhoneLink的名稱更改為MobileDevice。這項變更使得使用者可以透過提示來控制電腦存取行動裝置的權限。本文將介紹如何在您的電腦上管理允許或拒絕行動裝置存取的設定。此功能讓您能夠配置行動裝置並與電腦連接,從而進行文字訊息的發送和接收、行動應用程式的控制、聯絡人的檢視、電話的撥打、圖庫的檢視等操作。將手機連接到PC是個好主意嗎?將手機連接到WindowsPC是一個方便的選擇,可以輕鬆傳輸功能和媒體。這對那些需要在行動裝置無法使用時使用電腦的人

WebSocket與JavaScript:實現即時監控系統的關鍵技術引言:隨著互聯網技術的快速發展,即時監控系統在各個領域中得到了廣泛的應用。而實現即時監控的關鍵技術之一就是WebSocket與JavaScript的結合使用。本文將介紹WebSocket與JavaScript在即時監控系統中的應用,並給出程式碼範例,詳細解釋其實作原理。一、WebSocket技

7月23日消息,部落客數位閒聊站爆料稱,小米15Pro電池容量增大至6000mAh,支援90W有線閃充,這將是小米數位系列電池最大的Pro機型。先前數位閒聊站透露,小米15Pro的電池擁有超高能量密度,矽含量遠高於競品。矽基電池在2023年大規模試水後,第二代矽負極電池被認定為產業未來發展方向,今年將迎來直接競爭的高峰。 1.矽的理論克容量可達4200mAh/g,是石墨克容量的10倍以上(石墨的理論克容量372mAh/g)。對於負極而言,當鋰離子嵌入量達到最大時的容量為理論克容量,這意味著在相同重量下

《三角洲行動》將在今日(3月7日)開啟一場名為「代號:ZERO」的大規模PC測試。而在上週末,這款遊戲在上海舉辦了一次線下快閃體驗活動,17173也有幸受邀參與其中。這次測試距離上一次僅相隔四個多月,不禁讓我們好奇,在這麼短的時間內,《三角洲行動》將會帶來哪些新的亮點與驚喜?四個多月前,我已先行在線下品鑑會和首測版本中體驗了《三角洲行動》。當時,遊戲僅開放了「危險行動」這個模式。然而,《三角洲行動》在當時的表現已然令人矚目。在各大廠商紛紛湧向手遊市場的背景下,如此一款與國際水準相媲美的FPS

JavaScript和WebSocket:打造高效的即時天氣預報系統引言:如今,天氣預報的準確性對於日常生活以及決策制定具有重要意義。隨著技術的發展,我們可以透過即時獲取天氣數據來提供更準確可靠的天氣預報。在本文中,我們將學習如何使用JavaScript和WebSocket技術,來建立一個高效的即時天氣預報系統。本文將透過具體的程式碼範例來展示實現的過程。 We

JavaScript教學:如何取得HTTP狀態碼,需要具體程式碼範例前言:在Web開發中,經常會涉及到與伺服器進行資料互動的場景。在與伺服器進行通訊時,我們經常需要取得傳回的HTTP狀態碼來判斷操作是否成功,並根據不同的狀態碼來進行對應的處理。本篇文章將教你如何使用JavaScript來取得HTTP狀態碼,並提供一些實用的程式碼範例。使用XMLHttpRequest
