> 웹 프론트엔드 > JS 튜토리얼 > js 및 jquery_javascript 기술을 사용하여 이미지의 실제 너비와 높이를 얻는 방법

js 및 jquery_javascript 기술을 사용하여 이미지의 실제 너비와 높이를 얻는 방법

WBOY
풀어 주다: 2016-05-16 16:35:00
원래의
914명이 탐색했습니다.

1. 이미지의 실제 너비와 높이를 구해야 하는 경우

PC 웹페이지를 만들 때 삽입되는 사진의 크기에 따라 사진이 가로인지 세로인지 판단하는 것을 고려하게 되는 경우가 있습니다. 그런 다음 판단 후 다른 표시 방법을 제공하십시오!

다른 하나는 모바일 페이지입니다. 뉴스 페이지에 삽입된 사진은 사진의 원본 크기에 맞춰 표시되는 경우가 많습니다. 휴대폰 화면이 너무 작으면 너무 큰 사진이 이를 초과하게 됩니다! 현재로서는 두 가지 해결책이 있습니다

1) 모든 사진에 이 스타일을 추가합니다

1

코드 복사 코드는 다음과 같습니다.

.news img{margin:5px auto; display:block;width:100%; 높이:auto;}

하지만 이 방법의 또 다른 문제점은 삽입된 사진 자체가 매우 작을 경우 바로 100% 표시로 늘어납니다. 이는 분명히 불합리합니다! 여기 js를 통해 이미지의 크기를 동적으로 표시하는 또 다른 방법이 있습니다!

2) js는 이미지 크기를 동적으로 가져옵니다

jquery 방식

코드는 다음과 같습니다

var _w = parseInt($(window).width());//获取浏览器的宽度
$(".new_mess_c img").each(function(i){
var img = $(this);
var realWidth;//真实的宽度
var realHeight;//真实的高度
//这里做下说明,$("<img/>")这里是创建一个临时的img标签,类似js创建一个new Image()对象!
$("<img/>").attr("src", $(img).attr("src")).load(function() {
/*
如果要获取图片的真实的宽度和高度有三点必须注意
1、需要创建一个image对象:如这里的$("<img/>")
2、指定图片的src路径
3、一定要在图片加载完成后执行如.load()函数里执行
*/
realWidth = this.width;
realHeight = this.height;
//如果真实的宽度大于浏览器的宽度就按照100%显示
if(realWidth>=_w){
$(img).css("width","100%").css("height","auto");
}
else{//如果小于浏览器的宽度按照原尺寸显示
$(img).css("width",realWidth+'px').css("height",realHeight+'px');
}
});
});
로그인 후 복사

js 방식

코드는 다음과 같습니다

window.onload = function(){
function getViewSize() {//获取浏览器视口的宽高
return {
"w": window['innerWidth'] || document.documentElement.clientWidth,
(www.jb51.net) "h": window['innerHeight'] || document.documentElement.clientHeight
}
}
function getFullSize() {//获取浏览器最大的宽度
var w = Math.max(document.documentElement.clientWidth, document.body.clientWidth) +
Math.max(document.documentElement.scrollLeft, document.body.scrollLeft);
var h = Math.max(document.documentElement.clientHeight, document.body.clientHeight) +
Math.max(document.documentElement.scrollTop, document.body.scrollTop);
w = Math.max(document.documentElement.scrollWidth, w);
h = Math.max(document.documentElement.scrollHeight, h);
return {
"w": w,
"h": h
};
}
var _sv_w = getViewSize()["w"];
var _sf_w = getFullSize()["w"];
var _w = _sv_w;//这里用视口的宽度,具体视情况
var Imgarray = document.getElementsByTagName("img");
var realWidth;//真实的宽度
var realHeight;//真实的高度
for(var i =0;i<Imgarray.length;i++){
var imgtemp = new Image();//创建一个image对象
imgtemp.src = Imgarray[i].src;
imgtemp.index = i;//指定一个检索值,用于确定是哪张图
imgtemp.onload = function(){//图片加载完成后执行
var _stemp = this;//将当前指针复制给新的变量,不然会导致变量共用
realWidth = this.width;
realHeight = this.height;
if(realWidth >=_w )
{
Imgarray[_stemp.index].style.width = _w+'px';
Imgarray[_stemp.index].style.height = 'auto';
}
else{
Imgarray[_stemp.index].style.width = realWidth+'px';
Imgarray[_stemp.index].style.height = realHeight+'px';
}
}
}
}
로그인 후 복사

위의 두 가지 방법 중 jquery가 더 간단하고 구현이 빠릅니다. 두 번째 방법은 더 복잡하지만 jquery보다 실행이 빠릅니다!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿