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

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

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

前言

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

方法詳解

頁面中的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()的方式來獲取圖片的原始尺寸,如下:

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)容,希望能對(duì)大家的學(xué)習(xí)或者工作帶來一定的幫助。如果有疑問大家可以留言交流。

相關(guān)文章

最新評(píng)論

凤冈县| 武山县| 西昌市| 金溪县| 洛宁县| 台湾省| 湘乡市| 炎陵县| 望都县| 宽城| 德令哈市| 齐河县| 福清市| 宿州市| 郯城县| 和硕县| 昆山市| 包头市| 安多县| 新田县| 鄂州市| 苏尼特左旗| 永德县| 白银市| 定日县| 宿州市| 霍邱县| 尚志市| 岳阳市| 郴州市| 东方市| 尼木县| 贵定县| 和平区| 勐海县| 德令哈市| 枝江市| 合阳县| 嘉荫县| 玛纳斯县| 六盘水市|