【js】【圖片顯示】js控制html頁面顯示圖片方式

来源:https://www.cnblogs.com/lanofsky/archive/2019/04/02/10644952.html
-Advertisement-
Play Games

js控制html頁面顯示圖片方式,只需要引入“jquery-1.11.2.min.js” js: /* 引用 <script src="jquery-1.11.2.min.js" type="text/javascript"></script> <script src="showImage.js" ...


js控制html頁面顯示圖片方式,只需要引入“jquery-1.11.2.min.js”

js:

/*
引用
<script src="jquery-1.11.2.min.js" type="text/javascript"></script>
<script src="showImage.js" type="text/javascript"></script>
<script>
$(function () {
showImage.init({Div:"div.showImage"});
});
 
</script>
外層div建議設置寬高,div預設寬度為父級寬度,但高度未知
<div  class="showImage"  style="width:350px;height:300px;background-color:Black;">
<img style="" src="http://photocdn.sohu.com/20170328/Img485277054.jpg"></img>
</div>
*/
var showImage = {
    item: {
        Div: "div.showImage", //獲取外層div的選擇器
        Img: "img:eq(0)", //從div子元素 獲取圖片的選擇器
        isCenter: true, //是否居中
        showBeyond: false, //是否顯示超出部分
        fixedWH: "delfault", /*固定寬或高: 
                        "delfault"大圖圖片小邊,小圖固定圖片大邊,寬圖高圖不變大小
                        "abs"取寬高差值最小固定。
                        "width"固定寬。
                        "height" 固定高。*/
        full: false//小圖放大充滿 外層div

    },
    init: function (item) {
        showImage.item = $.extend({}, showImage.item, item);

        var d = $(showImage.item.Div);
        if (d.length > 0) {

            for (var i = 0; i < d.length; i++) {
                showImage.showImage(d[i]);
            }
        } else {
            showImage.showImage(d[0]);
        }
    },
    showImage: function (obj, width, height) {
        if (obj == undefined) {
            return;
        }
        //obj:外層div對象
        obj = $(obj);
        //超出外層div部分不顯示
        if (!showImage.item.showBeyond) {
            obj.css("overflow", "hidden");
        }
        //清除外層div樣式,對圖片定位樣式
        obj.css("padding", "0px 0px 0px 0px");

        //獲取div大小
        if (!width) {
            width = obj.get(0).offsetWidth;
        }
        if (!height) {
            height = obj.get(0).offsetHeight;
        }
        if (height <= 0 && width <= 0) {
            return;
        }
        //獲取圖片
        var img = obj.children(showImage.item.Img).get(0);

        //設置圖片大小,位置  

        //圖片載入完成
        if (img.complete) {
            showImage.LocationImg(img, width, height);
        } else {
            //圖片未載入
            img.onload = function () { showImage.LocationImg(img, width, height); };
        }

    },
    LocationImg: function (img, width, height) {
        img = $(img);
        var img2 = new Image();
        img2.src = img.get(0).src;

        //設置圖片大小
        //獲取圖片寬高
        var imgheight = img2.height;
        var imgwidth = img2.width;

        // var imgheight = img.get(0).offsetHeight;
        // var imgwidth = img.get(0).offsetWidth;
        //        var imgwidth = img.get(0).naturalWidth;
        //        var imgheight = img.get(0).naturalHeight;
        if (!img.complete) {
            // 圖片標簽尚未載入
            setTimeout(function () {
                //設置圖片顯示
                showImage.LocationImg(img, width, height);
            }, 1000);
            return;
        }
        //height 外層div高, width 外層div寬
        width = parseFloat(width);
        height = parseFloat(height);
        imgwidth = parseFloat(imgwidth);
        imgheight = parseFloat(imgheight);

        if (width == 0) {
            width = imgwidth;
        }
        if (height == 0) {
            height = imgheight;
        }
        //固定寬或高,另一邊等比縮放
        if (showImage.item.fixedWH == "width") {
            //等比縮放高
            imgheight = imgheight * (width / imgwidth);
            //固定寬
            imgwidth = width;
        } else if (showImage.item.fixedWH == "height") {
            //等比縮放寬
            imgwidth = imgwidth * (height / imgheight);
            //固定高
            imgheight = height;
        } else if (showImage.item.fixedWH == "delfault") {
            //大圖圖片小邊,小圖固定圖片大邊,寬圖高圖不變大小
            if (imgheight >= height && imgwidth >= width) {
                //大圖充滿
                if (imgheight * (width / imgwidth) >= height) {
                    //等比縮放高
                    imgheight = imgheight * (width / imgwidth);
                    //固定寬
                    imgwidth = width;
                } else {
                    //等比縮放寬
                    imgwidth = imgwidth * (height / imgheight);
                    //固定高
                    imgheight = height;
                }
            } else if (imgheight < height && imgwidth < width) {
                //小圖
                if (imgwidth < imgheight) {
                    //等比縮放寬
                    imgwidth = imgwidth * (height / imgheight);
                    //固定高
                    imgheight = height;
                } else if (imgwidth == imgheight) {
                    if (height > width) {
                        //等比縮放高
                        imgheight = imgheight * (width / imgwidth);
                        //固定寬
                        imgwidth = width;
                    } else {
                        //等比縮放寬
                        imgwidth = imgwidth * (height / imgheight);
                        //固定高
                        imgheight = height;
                    }
                } else {
                    //等比縮放高
                    imgheight = imgheight * (width / imgwidth);
                    //固定寬
                    imgwidth = width;
                }
            } else {
                //高圖或寬圖
                //不變大小,留白
            }
        } else if (showImage.item.fixedWH == "abs") {
            //寬差值,高差值比較
            if (Math.abs(height - imgheight) > Math.abs(width - imgwidth)) {
                //等比縮放高
                imgheight = imgheight * (width / imgwidth);
                //固定寬
                imgwidth = width;
            } else {
                //等比縮放寬
                imgwidth = imgwidth * (height / imgheight);
                //固定高
                imgheight = height;
            }
        }
        //充滿 
        if (showImage.item.full) {
            if (imgheight == height && imgwidth < width) {
                //使寬充滿
                imgwidth = width * (width / imgwidth);
                imgheight = width;

            } else if (imgheight < height && imgwidth == width) {
                //使高充滿
                imgwidth = imgwidth * (height / imgheight);
                imgheight = height;

            }

        }
        //設置圖片寬高
        img.css("height", (100 * imgheight / height) + "%");
        img.css("width", (100 * imgwidth / width) + "%");

        //圖片定位樣式
        img.css("float", "left");
        img.css("position", "relative");
        img.css("bottom", "0px");
        img.css("right", "0px");
        img.css("margin", "0px 0px 0px 0px");
        img.css("padding", "0px 0px 0px 0px");

        if (showImage.item.isCenter) {
            //定位居中
            var toppx = (((100 * (Math.abs(height - imgheight)) / height)) / 2).toFixed(2) + "%";
            var leftpx = (((100 * (Math.abs(imgwidth - width)) / width)) / 2).toFixed(2) + "%";

            if (imgwidth > width) {
                leftpx = "-" + leftpx;
            }
            if (imgheight > height) {
                toppx = "-" + toppx;
            }
            img.css("left", leftpx);
            img.css("top", toppx);
        }

    } //設置圖片大小, 位置
};
View Code

html:

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head >
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    <script src="jquery-1.11.2.min.js" type="text/javascript"></script>
    <script src="showImage.js" type="text/javascript"></script>
    <script>
        $(function () {
            showImage.init({ Div: "div.showImage" });
        });
    </script>

</head>
<body>
    <form id="form1" runat="server" style="padding-left:100px;">
    長圖 
    <br />
    <div  class="showImage"  style="width:100px;height:100px;background-color:Black;">
        <img style="" src="https://test2015data.oss-cn-hangzhou.aliyuncs.com/image-hroot/year20173/image-201730/news/file_170328203053104559.png"></img>
    </div>
    <br />
    <br />
    <br />
    <br />
    <br />
    <br />
    長圖原圖
    <br />
    <img style="" src="https://test2015data.oss-cn-hangzhou.aliyuncs.com/image-hroot/year20173/image-201730/news/file_170328203053104559.png"></img>
       <br />
       <br />
    高圖
    <br />
    <div  class="showImage"  style="width:350px;height:300px; background-color:Black;">
        <img style="position:inherit;" src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1490965812249&di=7ec87be2d7b63733a7bba492e952202e&imgtype=0&src=http%3A%2F%2Fwww.shuhua365.com%2Fhualang%2Fuploadfile%2F2010312112959216.jpg"></img>
        
    </div>
    <br />
    高圖原圖
    <br />
    <img style="" src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1490965812249&di=7ec87be2d7b63733a7bba492e952202e&imgtype=0&src=http%3A%2F%2Fwww.shuhua365.com%2Fhualang%2Fuploadfile%2F2010312112959216.jpg"></img>
  
   
    
    </form>
</body>
    <form id="form1"  style="padding-left:100px;">
    大圖
    <br />
    <div  class="showImage"  style="width:350px;height:300px;background-color:Black;">
        <img style="width:200px;height:200px;" src="http://photocdn.sohu.com/20170328/Img485277054.jpg"></img>
    </div>
    <br />
    <br />
    <br />
    <br />
    <br />
    <br />
    大圖原圖
    <br />
    <img style="" src="http://photocdn.sohu.com/20170328/Img485277054.jpg"></img>
       <br />
       <br />
    小圖
    <br />
    <div  class="showImage"  style="width:350px;height:300px; background-color:Black;">
        <img style="position:inherit;" src="https://ss2.baidu.com/6ONYsjip0QIZ8tyhnq/it/u=512897042,748871735&fm=80&w=179&h=119&img.JPEG"></img>
        
    </div>
    <br />
    小圖原圖
    <br />
    <img style="" src="https://ss2.baidu.com/6ONYsjip0QIZ8tyhnq/it/u=512897042,748871735&fm=80&w=179&h=119&img.JPEG"></img>
  
   
    
    </form>
</body>
</html>
View Code

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ...
  • Js具有自動垃圾回收機制。垃圾收集器會按照固定的時間間隔周期性的執行。 JS中最常見的垃圾回收方式是標記清除。 工作原理:是當變數進入環境時,將這個變數標記為“進入環境”。當變數離開環境時,則將其標記為“離開環境”。標記“離開環境”的就回收記憶體。 工作流程: 1. 垃圾回收器,在運行的時候會給存儲在 ...
  • JS初學者筆記,若有錯誤及不足,請及時幫忙指出,避免誤導自身以及其它初學者。謝謝! ...
  • 今天學習了JavaScript基礎知識。 JavaScript是什麼? js是一種運行在客戶端的腳本語言。它不需要編譯,並且是逐行解析執行的一種編程語言。 JavaScript的作用 js最初用於表單當中,但現在的用途十分廣泛。例如:網頁特效、服務端開發、桌面程式、甚至於游戲開發等等。 JavaSc ...
  • CSS的簡單使用方法 選擇器介紹 常用樣式總結 盒子模型介紹 相對定位、絕對定位和固定定位介紹 ...
  • 示例代碼托管在: "http://www.github.com/dashnowords/blogs" 博客園地址: "《大史住在大前端》原創博文目錄" 華為雲社區地址: "【你要的前端打怪升級指南】" [TOC] 一. 任務說明 使用原生 繪製K線圖。(截圖以及數據來自於百度Echarts官方示例庫 ...
  • 學習web的第六天 p{ font-size:18px; /*文本尺寸*/ font-family:"隸書"; /*文本字體*/ font-weight:bold; /*文本加粗 bold 加粗 bolder 更粗*/ color:red; /*文本顏色*/ text-align:center; / ...
  • 一、JavaScript介紹 1、JavaScript:輕量級的客戶端腳本語音 2、目前js已經不僅僅是客戶語音,基於NODE可以做伺服器端程式,所以Javascript是全棧編程語音 3、js及部分組成 ECMAScript (ES):js的核心語法 DOM:docment object mode ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...