最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

前言

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

方法詳解

頁(yè)面中的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屬性,比如圖片實(shí)際寬度是600,設(shè)置了width為400。這時(shí)候innerWidth為400,而不是600。顯然,用innerWidth獲取圖片原始尺寸是不靠譜的。

這是因?yàn)?innerWidth屬性獲取的是元素盒模型的實(shí)際渲染的寬度,而不是圖片的原始寬度。

<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提供了一個(gè)新屬性naturalWidth/naturalHeight可以直接獲取圖片的原始寬高。這兩個(gè)屬性在Firefox/Chrome/Safari/Opera及IE9里已經(jīng)實(shí)現(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中的兼容性實(shí)現(xiàn):

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

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

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é)

以上就是這篇文章的全部?jī)?nèi)容,希望能對(duì)大家的學(xué)習(xí)或者工作帶來(lái)一定的幫助。如果有疑問(wèn)大家可以留言交流。

相關(guān)文章

最新評(píng)論

东乡族自治县| 华池县| 河津市| 南漳县| 临澧县| 修水县| 固原市| 枣庄市| 海晏县| 镇原县| 红桥区| 五指山市| 易门县| 酒泉市| 桦甸市| 顺昌县| 南城县| 抚远县| 烟台市| 如东县| 海安县| 抚宁县| 克山县| 崇左市| 龙口市| 玉龙| 胶州市| 凌源市| 榆林市| 泽普县| 东辽县| 聂拉木县| 兴安县| 阳西县| 潮州市| 永嘉县| 织金县| 嵊州市| 永德县| 阿拉善盟| 孙吴县|