JavaScript動態改變網頁圖片大小

來源:互聯網
上載者:User
關鍵字 網頁製作 Ajax JavaScript

在自己的網站上更新文章時一個比較常見的問題是:文章插圖太寬,使整個網頁都變形了。 如果對每個插圖都先進行縮放再插入的話,太麻煩了。

我前段時間寫的一篇文章就遇到過這種事情,後來用CSS的overflow和max-width屬性暫時解決了頁面變形的問題。 這種方法好處是簡單,但壞處是會破壞某些細節的效果。

如overflow:hidden,意思是當內部元素寬度大於父框架時隱藏超出寬度的部分。 這樣做可能會是一些內容突然截斷,被隱藏了,很對不起觀眾。

通過max-width屬性限制文章插圖最大寬度的話,需要考慮各瀏覽器的相容性。 IE6是不支援這個屬性的,在我印象中,一些瀏覽器雖然支援這個屬性,但圖片不是等比縮放的(好像是Safari和Opera,記不清了),這樣做的話對這些瀏覽器的使用者很不公平。

因此,我最終選擇的是通過JavaScript動態改變圖片尺寸。 這種方法對各種瀏覽器相容性良好(現在應該很少人會禁用JavaScript吧? ),如果換主題的話,也可以靈活地改變文章插圖的最大尺寸。

方案有兩個,由於我使用的主題是載入了jQuery庫的,因此可以用以下代碼實現:

以下為引用的內容:


$(document).ready(function() {


$('.post img').each(function() {


var maxWidth = 100; 圖片最大寬度


var maxHeight = 100; 圖片最大高度


var ratio = 0; 縮放比例


var width = $(this).width(); 圖片實際寬度


var height = $(this).height(); 圖片實際高度


 


// 檢查圖片是否超寬


if(width > maxWidth){


ratio = maxWidth / width; 計算縮放比例


$(this).css("width", maxWidth); 設定實際顯示寬度


height = height * ratio; 計算等星號調整後的高度


$(this).css("height", height * ratio); 設定等星號調整後的高度


}


 


// 檢查圖片是否超高


if(height > maxHeight){


ratio = maxHeight / height; 計算縮放比例


$(this).css("height", maxHeight); 設定實際顯示高度


width = width * ratio; 計算等星號調整後的高度


$(this).css("width", width * ratio); 設定等星號調整後的高度


}


});


});

如果不想載入jQuery庫,可以用以下代碼:

以下為引用的內容:


function ResizeImage(image, 插圖最大寬度, 插圖最大高度)


{


if (image.className == "Thumbnail")


{


w = image.width;


h = image.height;





if( w == 0 || h == 0 )


{


image.width = maxwidth;


image.height = maxheight;


}


else if (w > h)


{


if (w > maxwidth) image.width = maxwidth;


}


else


{


if (h > maxheight) image.height = maxheight;


}


 


image.className = "ScaledThumbnail";


}


}

採用純JavaScript的話,麻煩點,需要手動為圖片加上class=」Thumbnail」,但最終效果是一樣的。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.