发布网友 发布时间:2022-04-24 12:14
共2个回答
懂视网 时间:2022-05-14 08:01
通常,我们可以给图片<img>设置一个CSS属性,定义其高度和宽度。但有时候,我们只希望控制图片的最大可见大小。这样的操作,一般有两种办法:1.直接使用CSS属性值;2.使用JavaScript动态设置CSS值。<img src="http://www.linuxfly.org/logo.gif" width="600" height="500" border="0"> img { width: 600px; height: 500px; }
但这样的设置太死板,不够灵活。
二、利用CSS属性值
img.qtipImg { max-width: 500px; width: 500px; width:expression(this.width > 500 ? "500px" : this.width); overflow:hidden; }
这里定义了一个qtipImg类下面的img标签用CSS规则,通过max-width属性把图片控制在500px的宽度范围,并且是自适应比例的。
但是,各浏览器对该属性的支持并不一致,如IE6不支持该属性。
所以,后面又增加了一个expression的动作,该操作符后面括号中的语句是JavaScript脚本,用于动态的调整图片大小的。
而最后的,overflow:hidden 则是为了防止上述两属性定义失效时,将超出设置大小的部分隐藏起来,避免显示异常。
该设定经测试,在IE7、IE8、FireFox 3.5 下使用都很正常。
三、利用JavaScript 脚本
每个浏览器(包括版本不同)对CSS的支持都会有区别。例如:IE 8下就取消了对expression动作的支持。这时,利用JavaScript来调整图片大小也是一个不错的方法。但它的缺陷在于,使用纯JavaScript脚本,在图片下载期间,大小会溢出,直到下载完成,JavaScript才会把其大小调整到合适的值。
1、借助一个中转的Image对象
两个JavaScript函数:
function getImageSize(FilePath) { var imgSize={width:0,height:0}; image=new Image(); image.src=FilePath; imgSize.width = image.width; imgSize.height = image.height; return imgSize; } function fixImageSize(originalImage) { fixSize = 500; if ( originalImage.width > fixSize ) { originalImage.height = Math.round( originalImage.height * fixSize / originalImage.width ); originalImage.width = fixSize; } return originalImage; }
使用时,把图片的地址传递给这两个函数,返回值即为调整后的图片:
img = getImageSize("http://www.linuxfly.org/logo.gif"); img = fixImageSize(img); finalresult = '<img src="'+attachUrl+'" width="'+img.width+'" height="'+img.height+'" alt="'+filename+'"/>';
2、在加载完DOM后即调整大小
虽然CSS的expression方式将会被取消,但直接使用JavaScript方式计算合适的CSS值还是一个不错的方法。例如jQuery的$(document).ready()方法可以避免加载图片时溢出的问题。
以下脚本来自:这里
$(document).ready(function() { $('.post img').each(function() { var maxWidth = 100; // 图片最大宽度 var maxHeight = 100; // 图片最大高度 var ratio = 0; // 缩放比例 var width = $(this).width(); // 图片实际宽度 var height = $(this).height(); // 图片实际高度 // 检查图片是否超宽 if(width > maxWidth){ ratio = maxWidth / width; // 计算缩放比例 $(this).css("width", maxWidth); // 设定实际显示宽度 height = height * ratio; // 计算等比例缩放后的高度 $(this).css("height", height * ratio); // 设定等比例缩放后的高度 } // 检查图片是否超高 if(height > maxHeight){ ratio = maxHeight / height; // 计算缩放比例 $(this).css("height", maxHeight); // 设定实际显示高度 width = width * ratio; // 计算等比例缩放后的高度 $(this).css("width", width * ratio); // 设定等比例缩放后的高度 } }); });
热心网友 时间:2022-05-14 05:25
html代码如下:
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>div中放置图片</title> <link rel="stylesheet" href="liu.css"/> </head> <body> <div class="center"> <img src="./image/1.jpg"rel=""/> </div> </body> </html>
css代码如下:
*{
margin: 0;
padding: 0;
}
/*方法一*/
.center{
width: 500px;
height: 300px;
background: pink;
/*实现div里的图片水平垂直居中*/
display: table-cell;
text-align: center;
vertical-align: middle;
}
.center>img{
/*1,图片过大1024*1024,让图片和布局高度宽度等比例缩放*/
width: 300px;
height: 180px;
}