这是一个非常实用的功能,在网页里难免会出现一些尺寸过大的图片,会将页面撑开或者图片被部分隐藏,我们通常会用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)});

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

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

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

    var array={}; var arrChk=$("input[name='bike']:checked"); if(arrChk.length<=0){ alert(' ...

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

    var len=$("input[name='bike']:checked").length; //len为0未选中

  3. Linux就这个范儿 第15章 七种武器 linux 同步IO: sync、fsync与fdatasync Linux中的内存大页面huge page/large page David Cutler Linux读写内存数据的三种方式

    Linux就这个范儿 第15章 七种武器  linux 同步IO: sync.fsync与fdatasync   Linux中的内存大页面huge page/large page  David Cut ...

  4. JQ获取URL中是否含有某个字符的话,对页面进行某种操作

    一.//JQ获取URL中是否含有某个字符的话,对页面进行某种操作 例:如果URL中含有xia的字符,就在页面引入一个cssvar str=window.location.href; //获取地址栏UR ...

  5. js中尺寸类样式

    js中尺寸类样式 一:鼠标尺寸类样式 都要事件对象的配合 Tip:注意与浏览器及元素尺寸分开,鼠标类尺寸样式都是X,Y,浏览器及元素的各项尺寸时Height,Width 1:检测相对于浏览器的位置:e ...

  6. WEB页面中常见的四种控件的必须的测试

    以下为常规的需求,除非需求有明确说明,如密码输入框中可以输入空格.   输入框 1. 为空,但页面中明确说明不能为空(带有星号或者只有这一个输入框),有以下两种情况: a. 不进行输入或者使其为空:焦 ...

  7. JSP页面以及JSP九大隐式对象

    €JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术. €JSP这门技术的最大的特点在于,写jsp就像在写html,但它相比 ...

  8. CI框架中怎么传递大数据给PHP?

    CI中怎么将HTML页面中的大数据(如富文本)通过CONTROLLER传递给MODEL中的函数?难道还是通过构造链接的形式传递吗?求指点.

  9. Python抓取页面中超链接(URL)的三中方法比较(HTMLParser、pyquery、正则表达式) <转>

    Python抓取页面中超链接(URL)的3中方法比较(HTMLParser.pyquery.正则表达式) HTMLParser版: #!/usr/bin/python # -*- coding: UT ...

随机推荐

  1. IIS常见错误

    1.IIS7运行时访问报错,先安装VS,再启用的IIS,那么需要为IIS进行注册,在VS工具命令行中执行“aspnet_regiis.exe -ir -enable”即可 2.错误“未能加载文件或程序 ...

  2. linux网络协议

    网络协议 本章节主要介绍linxu网络模型.以及常用的网络协议分析以太网协议.IP协议.TCP协议.UDP协议 一.网络模型 TCP/IP分层模型的四个协议层分别完成以下的功能: 第一层 网络接口层 ...

  3. 注解:【有连接表的】Hibernate单向1->1关联

    Person与Address关联:单向1->1,[有连接表的] (使用较少!) Person.java package org.crazyit.app.domain; import javax. ...

  4. 在ubuntu中安装maven

    安装环境 操作系统:ubuntu 14.04.1 server amd64 安装jdk 在安装maven之前,必须确保已经安装过jdk. 安装jdk的方法请参考文章<在ubuntu中安装jdk& ...

  5. ASP.NET MVC使用过滤器进行权限控制

    1.新建MVC项目 2.找到Models文件夹,新建 LoginCheckFilterAttribute 类 public class LoginCheckFilterAttribute : Acti ...

  6. 解决Eclipse建Maven项目module无法转换为2.3

    Maven项目在Project Facets里面修改Dynamic web module为2.3的时候就会出现Cannot change version of project facet Dynami ...

  7. 5分钟弄懂Docker--转载

    编者按:7月3日的“CSDN在线培训:Docker之道”,同时在线人数达到了历史新高,但是最后的QA环节,笔者发现大家的问题 还是很初级的,Docker技术还处在Gartner技术曲线的萌芽期.刚好前 ...

  8. Cgroups控制cpu,内存,io示例

    Cgroups是control groups的缩写,最初由Google工程师提出,后来编进linux内核. Cgroups是实现IaaS虚拟化(kvm.lxc等),PaaS容器沙箱(Docker等)的 ...

  9. java synchronized修饰普通方法,修饰静态方法,修饰代码块,修饰线程run方法 比较

    synchronized用于多线程设计,有了synchronized关键字,多线程程序的运行结果将变得可以控制.synchronized关键字用于保护共享数据. synchronized实现同步的机制 ...

  10. HDU4080 Stammering Aliens(二分 + 后缀数组)

    题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=4080 Description Dr. Ellie Arroway has establish ...