我有一个应用程序通过html定义图像的宽度,如下所示:
↓↓↓↓↓↓↓↓↓↓↓↓
<img id="teste" class="item" src="../img/fotos/4medium.jpg" style="width: 430px; display: block; margin-top: -7px; margin-left: 0px; max-width: 9999em; height: auto;"/>`
但是,如果图像的宽度小于430像素,应用程序会扩展图像可能会扭曲或像素化它。
有没有办法检查style="width"
是否大于原始图片宽度,如果是,请将src更改为另一张图片?
我认为它应该是这样的:
if ($('#teste').width() > $(4medium.jpg).width()) {
$('img').attr('src', '../img/fotos/4larger.jpg');
} else {
$('img').attr('src', '../img/fotos/4medium.jpg');
}
提前致谢。
答案 0 :(得分:2)
理想情况下,您可以使用服务器上的脚本进行检查(否则您可能必须将两个图像下载到客户端)。这样的事情应该有效:
var testImg = new Image();
testImg.src = '../img/fotos/4medium.jpg';
testImg.onLoad = check_image_size( testImg );
然后测试宽度以查看是否需要加载较大的图像:
function check_image_size( obj ) {
var url = obj.src;
if ( obj.width > 430 )
url = '../img/fotos/4larger.jpg';
$('#teste').attr( 'src', url );
}
这是一种丑陋的方法(并且可能因为它可能会加载两个图像而变慢),但我不确定是否有更优雅的方式来做客户端。
答案 1 :(得分:0)
尝试:
var teste_img = document.getElementById('teste');
var teste_width = teste_img.clientWidth;
var medium_img = document.getElementById('medium');
var medium_width = teste_img.clientWidth;
if(test_width > medium_width ){
$('img').attr('src', '../img/fotos/4larger.jpg');
}else{
$('img').attr('src', '../img/fotos/4medium.jpg');
}