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

我前排寫既一個網頁設計就遇到過呢件事,後來用CSS既overflow和max-width屬性暫時解決左頁面變形既問題。呢種方法好處係簡單,但壞處係會破壞左某d細節效果。

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

通過max-width屬性限制文章插圖最大寬度既話呢,要考慮下各瀏覽器既兼容性呀。IE6係唔支持呢個屬性架,係我印象中,一d瀏覽器雖然支持呢個屬性,但圖片唔係等比縮放架,咁做既話對呢d瀏覽器既用戶好唔公平。

所以,我最後選擇既係通過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既話,麻煩d,需要手動為圖片加上class=”Thumbnail”,但最終效果都係一樣架

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 dettori 的頭像
    dettori

    Web Design

    dettori 發表在 痞客邦 留言(0) 人氣()