国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 語(yǔ)言 > JavaScript > 正文

JS網(wǎng)頁(yè)圖片按比例自適應(yīng)縮放實(shí)現(xiàn)方法

2024-05-06 16:00:10
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
這篇文章主要介紹了JS網(wǎng)頁(yè)圖片按比例自適應(yīng)縮放實(shí)現(xiàn)方法,有需要的朋友可以參考一下

用戶(hù)上傳照片,照片的尺寸未知;需要生成一個(gè)預(yù)覽,這個(gè)預(yù)覽圖要根據(jù)提供給用戶(hù)預(yù)覽的區(qū)域自應(yīng)用,并且居中;如果圖片太大,需要按比例縮放。如下圖。

JS網(wǎng)頁(yè)圖片按比例自適應(yīng)縮放實(shí)現(xiàn)方法

瞄了一下,居中可以用 text-align:center; 來(lái)實(shí)現(xiàn)。而按比例縮放,利用預(yù)設(shè) <img /> 的 width 、height 屬性解決不了。因?yàn)橛脩?hù)圖片可能是很長(zhǎng)的,也可能是很寬的。在線(xiàn)上想了一下他們的關(guān)系,按條件來(lái)判斷是這樣的:

if(實(shí)際寬度 > 預(yù)覽最大寬度) {
    縮放寬度 = 預(yù)覽最大寬度
}

if(實(shí)際高度 > 預(yù)覽最大高度) {
    縮放高度 = 預(yù)覽最大高度
}
但是這樣會(huì)有問(wèn)題,比如當(dāng)寬度和高度都被縮放,如果縮放比較不同,圖片就不是按比例縮放,會(huì)變得非常丑。為了讓它按比例縮放,就需要做各種判斷了。那這樣就違背了我們希望程序自動(dòng)化的原則了。再想想,雖然不喜歡數(shù)學(xué),但數(shù)學(xué)還是很好用的,應(yīng)該有其他辦法。而既然是按比例縮放,何不用實(shí)際圖像和預(yù)覽區(qū)域?qū)挾茸鞯谋壤齺?lái)計(jì)算他們關(guān)系?hmmmm… 果然 OK。實(shí)際上我們永遠(yuǎn)都只需要縮放寬度或高度中的其中一個(gè)。因?yàn)楸壤挥写蠛托》N情況。具體的,寫(xiě)一個(gè)函數(shù)來(lái)實(shí)現(xiàn)它吧:

復(fù)制代碼 代碼如下:


/**
 * 圖片按比例自適應(yīng)縮放
 * @param img {Element} 用戶(hù)上傳的圖片
 * @param maxWidth {Number} 預(yù)覽區(qū)域的最大寬度
 * @param maxHeight {Number} 預(yù)覽區(qū)域的最大高度
 */

var resizeImg = function(img, maxWidth, maxHeight){
        var w = img.width,
               h = img.height;

        // 當(dāng)圖片比預(yù)覽區(qū)域小時(shí)不做任何改變
        if(w < maxWidth && h < maxHeight) return;

        // 當(dāng)實(shí)際圖片比例大于預(yù)覽區(qū)域?qū)捀弑壤龝r(shí)
        // 縮放圖片寬度,反之縮放圖片寬度
        w/h > maxWidth/maxHeight  ? img.width = maxWidth : img.height = maxHeight;

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 清涧县| 健康| 西畴县| 玉田县| 长治市| 万山特区| 鄂伦春自治旗| 神池县| 滁州市| 沭阳县| 修文县| 桓仁| 肇东市| 嵩明县| 克什克腾旗| 刚察县| 天长市| 梨树县| 周至县| 合水县| 来安县| 榆社县| 九江县| 兰考县| 新源县| 青阳县| 井冈山市| 合阳县| 安吉县| 松桃| 滨州市| 龙岩市| 商丘市| 沂南县| 磐安县| 涪陵区| 边坝县| 崇义县| 永平县| 文登市| 延吉市|