如何使用jQuery使用视口宽度动态更改图像的高度。
例如
当网站宽度为450像素时,我想将图像宽度从300更改为100。
我也使用timthumb来调整图像大小。
HTML代码
<img src="timthumb.php?src=myimage.jpg&h=300&w=750&q=100" class="MyImages">
如何使用jQuery执行此操作?
答案 0 :(得分:2)
这应该有效。只需在jQuery获取视口宽度后添加src-attribute,并在window resize上更新它。
<img id="img1" src="" class="MyImages">
<script type="text/javascript">
$(function() {
update_image();
$( window ).resize(function() {
update_image();
});
});
function update_image(){
var width = $( window ).width();
if(width<450) { var picwidth=100; } else { var picwidth=300; }
$('#img1').attr('src','timthumb.php?src=myimage.jpg&h=300w='+picwidth+'&q=100');
}
</script>
回答你的问题: 编辑图像如下所示:
<img src="" class="MyImages" data-src="myimage.jpg">
现在使用jQuery获得正确的大小:
<script type="text/javascript">
$(function() {
$('img').each(function(){
update_image(this);
});
$( window ).resize(function() {
$('img').each(function(){
update_image(this);
});
});
});
function update_image(e){
var width = $( window ).width();
if(width<450) { var picheight=100; } else { var picheight=300; }
var image = $(e).attr('data-src');
$(e).attr('src','timthumb.php?src='+image+'&h='+picheight+'&q=100');
}
</script>
像这样,在调整视口大小时,所有图像都会更新。
答案 1 :(得分:1)
如果您不具备基于CSS2的旧浏览器(如IE7)的兼容性,您可以编写CSS3媒体查询。
表示例如:
@media (max-width: 450px) {
.MyImages{width:100px;}
}
如果你想要纯粹的基于javascript / jQuery的解决方案:
function viewport() {
var e = window, a = 'inner';
if (!('innerWidth' in window )) {
a = 'client';
e = document.documentElement || document.body;
}
return { width : e[ a+'Width' ] , height : e[ a+'Height' ] };
}
$(function(){
if(viewport().width<=450){
$(".MyImages").css("width":"100px");
}
});
如果你想确保它甚至可以在浏览器调整大小时起作用:
$(window).on("resize",function(){
if(viewport().width<=450){
$(".MyImages").css("width":"100px");
}
});
警告:JavaScript方式比CSS3解决方案更昂贵 浏览器。
答案 2 :(得分:0)
你不需要jQuery。只需将图像的宽度和高度属性设置为您想要的值:
<img src="myimage.jpg" id="varimage" width="100" height="200">
....
var img = getElementById("varimage");
img.height = 400;
img.width = 200;
和jQuery(就像你要求的那样):
$("#varimage").width(400);
$("#varimage").height(200);