jQ处理页面中尺寸过大的图片

这是一个非常实用的功能,在网页里难免会出现一些尺寸过大的图片,会将页面撑开或者图片被部分隐藏,我们通常会用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 为选择器,根据实际网页结构进行修改,比如下面的结构:

<div class="content">
<img src="eyouhome.jpg" width="800" height="600"/>
</div>

三、兼容性:

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

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

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

1)高宽为空:<img src=”eyouhome.jpg” width=”” height=””/>

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

2)没有高宽属性:<img src=”eyouhome.jpg”/>

在这种情况下,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)});

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

时间: 2024-10-23 05:44:48

jQ处理页面中尺寸过大的图片的相关文章

jq实现页面中锚点滚动跳转

$(function(){ $('a[href*=#],area[href*=#]').click(function() { if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) { var $target = $(this.hash); $target = $target.length && $t

jq 获取页面中checkbox已经选中的checkbox

var array={}; var arrChk=$("input[name='bike']:checked"); if(arrChk.length<=0){ alert('请先勾选数据,在进行批量清档!'); } var i=0; $(arrChk).each(function(){ array["bike[" + i + "]"] =this.value;//组装数组 i++; }); var url="./index.php

oKit-解决运营过程中产生的大数据图片造成的困扰

案例: 某企业最近上了一套项目管理软件,大概有700多人在用,而该企业对图片编辑和保存特别多,基本都是大型图片直接粘贴保存入库. 在软件运营了一段时间后,管理员发现出了一些问题,在每天图片数据不断增长的情况下,数据库数据急剧增加,变得十分庞大,导致运行速度并的非常慢.给备份还原也带来了很大的压力,光数据库数据就10多G. 您是否也遇到过这样的问题?是否也在为庞大的图片数据不断增加而担心?所以选择一套好的解决方案是非常重要的,oKit项目管理软件在这方面有非常大的优势. 解决方案: oKit能自动

解决运营过程中产生的大数据图片造成的困扰

案例: 某企业最近上了一套项目管理软件,大概有700多人在用,而该企业对图片编辑和保存特别多,基本都是大型图片直接粘贴保存入库. 在软件运营了一段时间后,管理员发现出了一些问题,在每天图片数据不断增长的情况下,数据库数据急剧增加,变得十分庞大,导致运行速度并的非常慢.给备份还原也带来了很大的压力,光数据库数据就10多G. 您是否也遇到过这样的问题?是否也在为庞大的图片数据不断增加而担心?所以选择一套好的解决方案是非常重要的,oKit项目管理软件在这方面有非常大的优势. 解决方案: oKit能自动

jsp页面中显示二维码图片

最近做的一个项目需要在前台页面显示二维码:因为以前做过二维码生成方面的东西,就沿用以前的方式:导入qrcode.jar包,然后后台生成图片保存,前台获取图片的路径,并显示.大家可以看得出来这个过程是比较耗时的,一个人测试半小时,会有好几百张二维码图片,那么后台生成的临时二维码图片什么时候删除呢?第一种选择是我前台显示后立即删除,因为系统需求的原因,这样交互会很频繁,影响效率:第二种选择是job定时去删除.两种方式虽然都能解决问题但都有点勉强. 能不能在前台把数据封装成二维码呢?YES,回答如此的

解决 “页面中文字增多,字号突然变大” 的问题

在之前一篇文章中,曾记录过一个开发中遇到的问题,在页面中文字增加到一定数量,或者文字大小设置为某一个值时,页面中的文字字号会突然变大,超出自己设置的字号大小. 如下图所示: 虽然我设置的字号大小是24px,但是在computed下却是28.7px,超出我所设置的大小,那么问题来源是什么? 经高人指点后,该问题终于得到了解决,主要问题在于 Font Boosting 特性. 这个特性被称做「Text Autosizer」,又称「Font Boosting」.「Font Inflation」,是 W

解决父页面加载iframe时,src链接中参数值过大导致加载失败的问题

有时候我们在使用iframe时,喜欢这么写 <iframe src="*******.do?param=****" id="leftFrame" name="leftFrame" frameborder="0"></iframe> 或者是使用js加载src: var params = "?pk_id="+pk_id; var frameLeftSrc = "<%=pa

ckeditor4.x操作之在页面中引入(一)

一.使用方法:1.在页面<head>中引入ckeditor核心文件ckeditor.js <script src="ckeditor/ckeditor.js"></script> 2.在使用编辑器的地方插入HTML控件<textarea> <textarea class="ckeditor"></textarea> 3.将相应的控件替换成编辑器代码 4.配置编辑器 ckeditor的配置都集中在

页面中查询模块的设计与实现思路

在做一个物品的展示管理页面,想把增删改查都放到页面中,用axure画了一个页面,比较简单,主要分为上下两部分,上半部分是查询模块,下半部分是表格,用来展示数据.新增按钮单独在页面中,修改按钮在表的每一行数据后面,删除按钮在表格下面,将表格中的数据每一行设为可选,选择后进行删除操作.查询部分没有考虑很多,只是列了几个物品的主要属性,有下拉框有文本框,可选可填,然后查询,其实默认的就是这些查询条件之间是"与"的关系. 图1 自己设计的查询模块??项目在讨论的时候,技术领导说了一下这个地方设