欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Javascript獲取圖片原始寬度和高度的方法詳解

 更新時間:2016年09月20日 08:36:35   投稿:daisy  
這篇文章用實例代碼講述了JavaScript如何獲取頁面圖片原始尺寸的方法,現(xiàn)在分享給大家供大家參考學習,有需要的可以一起來看看。

前言

網(wǎng)上關(guān)于利用Javascript獲取圖片原始寬度和高度的方法有很多,本文將再次給大家談?wù)勥@個問題,或許會對一些人能有所幫助。

方法詳解

頁面中的img元素,想要獲取它的原始尺寸,以寬度為例,可能首先想到的是元素的innerWidth屬性,或者jQuery中的width()方法。

如下:

<img id="img" src="1.jpg">

<script type="text/javascript">
 var img = document.getElementById("img");
 console.log(img.innerWidth); // 600
</script>

這樣貌似可以拿到圖片的尺寸。

但是如果給img元素增加了width屬性,比如圖片實際寬度是600,設(shè)置了width為400。這時候innerWidth為400,而不是600。顯然,用innerWidth獲取圖片原始尺寸是不靠譜的。

這是因為 innerWidth屬性獲取的是元素盒模型的實際渲染的寬度,而不是圖片的原始寬度。

<img id="img" src="1.jpg" width="400">

<script type="text/javascript">
 var img = document.getElementById("img");
 console.log(img.innerWidth); // 400
</script>

jQuery的width()方法在底層調(diào)用的是innerWidth屬性,所以width()方法獲取的寬度也不是圖片的原始寬度。

那么該怎么獲取img元素的原始寬度呢?

naturalWidth / naturalHeight

HTML5提供了一個新屬性naturalWidth/naturalHeight可以直接獲取圖片的原始寬高。這兩個屬性在Firefox/Chrome/Safari/Opera及IE9里已經(jīng)實現(xiàn)。

如下:

var naturalWidth = document.getElementById('img').naturalWidth,
 naturalHeight = document.getElementById('img').naturalHeight;

naturalWidth / naturalHeight在各大瀏覽器中的兼容性如下:

圖片截取自http://caniuse.com/#search=naturalWidth

所以,如果不考慮兼容至IE8的,可以放心使用naturalWidth / naturalHeight屬性了。

IE7/8中的兼容性實現(xiàn):

在IE8及以前版本的瀏覽器并不支持naturalWidth和naturalHeight屬性。

在IE7/8中,我們可以采用new Image()的方式來獲取圖片的原始尺寸,如下:

function getNaturalSize (Domlement) {
 var img = new Image();
 img.src = DomElement.src;
 return {
  width: img.width,
  height: img.height
 };
}

// 使用
var natural = getNaturalSize (document.getElementById('img')),
 natureWidth = natural.width,
 natureHeight = natural.height;

IE7+瀏覽器都能兼容的函數(shù)封裝:

function getNaturalSize (Domlement) {
 var natureSize = {};
 if(window.naturalWidth && window.naturalHeight) {
  natureSize.width = Domlement.naturalWidth;
  natureSizeheight = Domlement.naturalHeight;
 } else {
  var img = new Image();
  img.src = DomElement.src;
  natureSize.width = img.width;
  natureSizeheight = img.height;
 }
 return natureSize;
}

// 使用
var natural = getNaturalSize (document.getElementById('img')),
 natureWidth = natural.width,
 natureHeight = natural.height;

總結(jié)

以上就是這篇文章的全部內(nèi)容,希望能對大家的學習或者工作帶來一定的幫助。如果有疑問大家可以留言交流。

相關(guān)文章

  • JS前端中WebSocket的使用方法舉例

    JS前端中WebSocket的使用方法舉例

    websocket是H5才開始提供的一種在單個TCP連接上進行全雙工通訊的協(xié)議,下面這篇文章主要給大家介紹了關(guān)于JS前端中WebSocket使用的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-03-03
  • javascript eval函數(shù)深入認識

    javascript eval函數(shù)深入認識

    發(fā)現(xiàn)為本文起一個合適的標題還不是那么容易,呵呵,所以在此先說明下本文的兩個目的
    2009-02-02
  • JS利用原生canvas實現(xiàn)圖形標注功能

    JS利用原生canvas實現(xiàn)圖形標注功能

    這篇文章主要為大家詳細介紹了JS如何利用原生canvas實現(xiàn)圖形標注功能,支持矩形、多邊形、線段、圓形等已繪制的圖形進行縮放,移動,需要的可以參考下
    2024-03-03
  • 用js簡單提供增刪改查接口

    用js簡單提供增刪改查接口

    這篇文章主要介紹了用js簡單提供增刪改查接口,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-05-05
  • GRID拖拽行的實例代碼

    GRID拖拽行的實例代碼

    這篇文章介紹了GRID拖拽行的實例代碼,有需要的朋友可以參考一下
    2013-07-07
  • js left,right,mid函數(shù)

    js left,right,mid函數(shù)

    在JAVASCRIPT中LEFT,RIGHT,MID函數(shù)的等價函數(shù),非常適合經(jīng)常用寫asp的朋友
    2008-06-06
  • js實現(xiàn)時間顯示幾天前、幾小時前或者幾分鐘前的方法集錦

    js實現(xiàn)時間顯示幾天前、幾小時前或者幾分鐘前的方法集錦

    這篇文章主要介紹了js實現(xiàn)時間顯示幾天前、幾小時前或者幾分鐘前的方法,實例匯總分析了時間顯示格式轉(zhuǎn)換的常用思路與技巧,需要的朋友可以參考下
    2015-05-05
  • 詳解XMLHttpRequest(一)同步請求和異步請求

    詳解XMLHttpRequest(一)同步請求和異步請求

    這篇文章主要為大家詳細介紹了XMLHttpRequest 同步請求和異步請求,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • javascript中select下拉框的用法總結(jié)

    javascript中select下拉框的用法總結(jié)

    這篇文章主要為大家介紹了javascript中select下拉框的用法,select在開發(fā)中經(jīng)常被用到,用于進行選項選擇,需要的朋友可以參考下
    2016-01-01
  • 詳解Howler.js Web音頻播放終極解決方案

    詳解Howler.js Web音頻播放終極解決方案

    這篇文章主要介紹了詳解Howler.js Web音頻播放終極解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08

最新評論