如何使用CSS調整圖片大小的執行個體代碼分享

來源:互聯網
上載者:User
通常,我們可以給圖片<img>設定一個CSS屬性,定義其高度和寬度。但有時候,我們只希望控製圖片的最大可見大小。這樣的操作,一般有兩種辦法:1.直接使用CSS屬性值;2.使用JavaScript動態設定CSS值。

一、固定大小
一般,為了限制圖片的大小,會使用下面的HTML 屬性值或CSS屬性值來定義:

<img src="http://www.linuxfly.org/logo.gif" width="600" height="500" border="0">img {    width: 600px;    height: 500px;}


但這樣的設定太死板,不夠靈活。

二、利用CSS屬性值

img.qtipImg {    max-width: 500px;     width: 500px;    width:expression(this.width > 500 ? "500px" : this.width);    overflow:hidden;}

這裡定義了一個qtipImg類下面的img標籤用CSS規則,通過max-width屬性把圖片控制在500px的寬度範圍,並且是自適應比例的。
但是,各瀏覽器對該屬性的支援並不一致,如IE6不支援該屬性。
所以,後面又增加了一個expression的動作,該操作符後面括弧中的語句是JavaScript指令碼,用於動態調整圖片大小的。
而最後的,overflow:hidden 則是為了防止上述兩屬性定義失效時,將超出設定大小的部分隱藏起來,避免顯示異常。
該設定經測試,在IE7、IE8、FireFox 3.5 下使用都很正常。

三、利用JavaScript 指令碼
每個瀏覽器(包括版本不同)對CSS的支援都會有區別。例如:IE 8下就取消了對expression動作的支援。這時,利用JavaScript來調整圖片大小也是一個不錯的方法。但它的缺陷在於,使用純JavaScript指令碼,在圖片下載期間,大小會溢出,直到下載完成,JavaScript才會把其大小調整到合適的值。
1、藉助一個中轉的Image對象
兩個JavaScript函數:

function getImageSize(FilePath) {     var imgSize={width:0,height:0};     image=new Image();     image.src=FilePath;     imgSize.width = image.width;     imgSize.height = image.height;     return imgSize;   }function fixImageSize(originalImage) {  fixSize = 500;  if ( originalImage.width > fixSize ) {    originalImage.height = Math.round( originalImage.height * fixSize / originalImage.width );    originalImage.width = fixSize;  }  return originalImage;}


使用時,把圖片的地址傳遞給這兩個函數,傳回值即為調整後的圖片:

img = getImageSize("http://www.linuxfly.org/logo.gif");img = fixImageSize(img);finalresult = '<img src="'+attachUrl+'" width="'+img.width+'" height="'+img.height+'" alt="'+filename+'"/>';


2、在載入完DOM後即調整大小
雖然CSS的expression方式將會被取消,但直接使用JavaScript方式計算合適的CSS值還是一個不錯的方法。例如jQuery的$(document).ready()方法可以避免載入圖片時溢出的問題。
以下指令碼來自:這裡

$(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);    // 設定等比例縮放後的高度    }  });});
相關文章

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.