主题:设置图片的最大宽度 解决网页的table或div被图片撑开的问题
 楼主 xupeil 发表于2010-9-16 9:58:27
设置图片的最大宽度 解决网页的table或div被图片撑开的问题

一、直接在网页里设置图片大小,比如代码:< img src="img1.jpg" width="600" height="500" border="0">,这样虽然可以限制了图片大小,但是需要在上传图片之前手动修改图片大小,否则上传的图片就会变形。

二、使用如下代码:< img src="img2.jpg" onload="javascript:if(this.width>600}{this.resized=true;this.style.width=600;}">

这种方法会在调用图片的时候,自动按比例缩小到指定的宽度,不会引起图片的变形,并且也不 会撑破表格,但是缺点是,如果图片太大,在图片下载过程中,也就是图片显示过程中,会先以图片原大小显示,这时就会撑破表格,页面很难看,二当图片完全显 示后,图片又会自动缩小。

三、我们可以针对表格的属性来限制大小防止被撑开,比如在< table width="600" border="0" cellpadding="0" cellspacing="0">里添加代码“style="table-layout:fixed;word-wrap:break-word; word-break;break-all;"”,其中“table-layout:fixed; ”是为了将表格布局固定住,就可以有效地防止表格被撑开,“word-wrap:break-word; ”是控制换行的,也就是强制执行换行,这个在文本内容较多的情况下需要使用到,特别是重复的内容出现,不执行换行的话,表格就被撑开了;而“word- break: break-all; ”可以解决IE的框架被英文(非亚洲语言文本行)撑开的问题,但是不会强制换行,只显示表格宽度里的内容。一般情况下只要用到 “style="table-layout:fixed;word-wrap:break-word;"”就可以。当然,上面调用的语句可以定义在css 里,比如

table {

table-layout: fixed;

word-wrap:break-word;

}

四、用css控制图片自适应大小,代码如:

img {

max-width: 600px;

width:expression(this.width > 600 ? "600px" : this.width+"px"); overflow:hidden;

}

其中 max-width:600px; 在IE7、FireFox等其他非IE浏览器下最大宽度为600px,但在IE6中无效;width:600px; 在所有浏览器中图片的大小为600px,当图片大小大于600px,自动缩小为600px,在IE6中有效;而 overflow:hidden; 指将超出设置大小的部分隐藏,避免控制图片大小失败而引起的表格撑开变形。

五、最后总结一下最实用的代码:

如果是表格,请用:

table {

table-layout: fixed;

word-break: break-all;

}

如果是div层,请用:

div {

table-layout: fixed;

word-wrap: break-word;

width: 加上宽度;

overflow: hidden;(让多出来的不显示。) 

}

第二种 :js解决方法

<div><img height="800" alt="" width="1280" src="/down/js/images/12498880470.jpg" /></div>

<script >

//缩放图片到合适大小

function ResizeImages()

{

var myimg,oldwidth,oldheight;

var maxwidth=550;

var maxheight=880

var imgs = document.getElementById('article').getElementsByTagName('img');   //如果你定义的id不是article,请修改此处

for(i=0;i<imgs.length;i++){

myimg = imgs[i];

if(myimg.width > myimg.height)

{

if(myimg.width > maxwidth)

{

oldwidth = myimg.width;

myimg.height = myimg.height * (maxwidth/oldwidth);

myimg.width = maxwidth;

}

}else{

if(myimg.height > maxheight)

{

oldheight = myimg.height;

myimg.width = myimg.width * (maxheight/oldheight);

myimg.height = maxheight;

}

}

}

}

 

//缩放图片到合适大小

ResizeImages();

</script>

 

 1 hongfei1123 发表于2010-9-16 19:00:55

不错,感谢楼主。

 2 koftin 发表于2010-9-21 9:48:12

楼主辛苦了,感谢分享!

奇新云平台
切换