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)});
如此等等…根据需要再添加了。
jQ处理页面中尺寸过大的图片的更多相关文章
- jq 获取页面中checkbox已经选中的checkbox
var array={}; var arrChk=$("input[name='bike']:checked"); if(arrChk.length<=0){ alert(' ...
- jq获取页面中checkbox已经选中的checkbox
var len=$("input[name='bike']:checked").length; //len为0未选中
- 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 ...
- JQ获取URL中是否含有某个字符的话,对页面进行某种操作
一.//JQ获取URL中是否含有某个字符的话,对页面进行某种操作 例:如果URL中含有xia的字符,就在页面引入一个cssvar str=window.location.href; //获取地址栏UR ...
- js中尺寸类样式
js中尺寸类样式 一:鼠标尺寸类样式 都要事件对象的配合 Tip:注意与浏览器及元素尺寸分开,鼠标类尺寸样式都是X,Y,浏览器及元素的各项尺寸时Height,Width 1:检测相对于浏览器的位置:e ...
- WEB页面中常见的四种控件的必须的测试
以下为常规的需求,除非需求有明确说明,如密码输入框中可以输入空格. 输入框 1. 为空,但页面中明确说明不能为空(带有星号或者只有这一个输入框),有以下两种情况: a. 不进行输入或者使其为空:焦 ...
- JSP页面以及JSP九大隐式对象
JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术. JSP这门技术的最大的特点在于,写jsp就像在写html,但它相比 ...
- CI框架中怎么传递大数据给PHP?
CI中怎么将HTML页面中的大数据(如富文本)通过CONTROLLER传递给MODEL中的函数?难道还是通过构造链接的形式传递吗?求指点.
- Python抓取页面中超链接(URL)的三中方法比较(HTMLParser、pyquery、正则表达式) <转>
Python抓取页面中超链接(URL)的3中方法比较(HTMLParser.pyquery.正则表达式) HTMLParser版: #!/usr/bin/python # -*- coding: UT ...
随机推荐
- python调用系统命令popen、system
python调用Shell脚本,有两种方法:os.system(cmd)或os.popen(cmd),前者返回值是脚本的退出状态码,后者的返回值是脚本执行过程中的输出内容.所以说一般我们认为popen ...
- windows多线程详解
转自:http://blog.csdn.net/zhouxuguang236/article/details/7775232 在一个牛人的博客上看到了这篇文章,所以就转过来了,地址是http://bl ...
- 提升 LaTeX 效率的小工具:Detexify LaTeX handwritten symbol recognition
Detexify LaTeX handwritten symbol recognition 用 LaTeX 的人找符号的表示方法通常很费事,需要去翻长长的列表.Detexify 是一个省事的小网站,只 ...
- 64位ubuntu下重新编译hadoop2.2流水账
hadoop官方网站中只提供了32位的hadoop-2.2.0.tar.gz,如果要在64位ubuntu下部署hadoop-2.2.0,就需要重新编译源码包,生成64位的部署包.建议以下操作使用roo ...
- 使用postMesssage()实现跨域iframe页面间的信息传递----转载
由于web同源策略的限制,当页面使用跨域iframe链接时,主页面与子页面是无法交互的,这对页面间的信息传递造成了不小的麻烦,经过一系列的尝试,最后我发现有以下方法可以实现: 1. 子页面url传参 ...
- 自己yy的Splay
#include <iostream> #include <cstdio> #include <queue> using namespace std; ; stru ...
- 【HTML+CSS】七小时快速入门~~~~~~~
由于网络化的原因,学习很方便,但是也由于太方便了,学习资料很多会给刚想要入门却没有什么自制力的初学者造成困难,我自己来说学html和css先看了一本书,后来又辗转在慕课网.w3cschool等学习网站 ...
- SpringJDBC解析4-query方法
重要步骤说明: 首先是从PersonServiceImpl方法进去,调用JdbcTemplate的query方法,然后执行一连串错中复杂的调用,而且里面有很多函数都是以回调形式处理, 1)JdbcTe ...
- Uva10635 LCS
题目链接:http://vjudge.net/contest/137498#problem/G 题意:有两个长度为p+1和q+1的序列,每个序列的中的各个元素互不相同,且都是1~n^2之间的整.两个序 ...
- Ue4 Shader博客
http://blog.csdn.net/noahzuo/article/details/51133166 国外HLSL网站 https://www.shadertoy.com/browse