视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
jQ处理页面中尺寸过大的图片_html/css
2020-11-27 16:01:16 责编:小采
文档
 这是一个非常实用的功能,在网页里难免会出现一些尺寸过大的图片,会将页面撑开或者图片被部分隐藏,我们通常会用css的max-width来加以 控制,但ie6却不吃这套。我在做一个站时,就遇到这种困惑,因为最近也在学习jQuery,就想到用jq来处理这个问题。经过一番思索,觉得这个问题其 实并不难,下面就具体来说:

一、思路:

要解决尺寸问题,首先要先获取图片的宽和高,然后定义一个最大宽度,进行判断,如果实际宽度大于设定的最大宽度,那么就让实际宽度等于最大宽度,至于高度就按照高宽比进行比例缩小即可。将思路整理了一下然后列出中文语句:

1) 设定最大宽度
2) 获取图片宽度
3) 获取图片高度
4) 定义高度的比例关系(新的高度 = 高 / 宽 * 设定的宽度)
5) 判断,如果宽度>设定的最大宽度
6) 那么宽度=最大宽度;高度=新的高度
7) 结束

二、代码:

将上面中文语句写成完整jQ语句:

$(function() {
$('.content img').each(function() {
var maxWidth = 600;
var width = $(this).width();
var height = $(this).height();
var newHeight = height / width * maxWidth;
if(width > maxWidth) {
$(this).width(maxWidth);
$(this).height(newHeight);
}
});
});

这里面 .content img 为选择器,根据实际网页结构进行修改,比如下面的结构:



三、兼容性:

做兼容性测试是必不可少的步骤,毕竟浏览器品种也太杂了。我这里在ie6、ie9、firefox、chrome下做了测试,很好很成功!

但思考问题不能太局限,因为代码中首先要获取图片的宽和高,如果未定义高和宽,那还能否正常?

毛教导我们?实际出真知!疑问当然要实际测试才能知道,我在jq中添加 alert(width); 看看浏览器会告诉我们什么。

1)高宽为空:

这种情况下,ie6、ie9获取的实际宽度为1,firefox获取的是800,chrome获取的是0,也就是说只有firefox能够正常运行。

2)没有高宽属性:

在这种情况下,ie6、ie9和firefox获取值均为800,chrome获取的是0,也就是说ie9和firefox正常,chrome失败了,一向受人崇拜的chrome让人有点失望。

由此来看,在网站设计时,应该将图片的高宽属性正确添加进来,才能使用前面的jq来控制图片的尺寸。

四、功能扩展:

好啦,前面的代码已经能够对尺寸过大的图片加以控制了,那么在此基础上再进行一些扩展。

1),如果尺寸过大,给图片添加css类:

$(this).addClass("bigpic");

2),如果尺寸过大,设置图片的css:

$(this).css("cursor","pointer");

3),如果尺寸过大,设置图片的属性:

$(this).attr("title","点击放大");

4),如果尺寸过大,让其点击后在新窗口打开原图:

$(this).click(function(){window.open(this.src)});

如此等等…根据需要再添加了。

下载本文
显示全文
专题