图片预览所遇到的获取图片尺寸问题
来源:互联网 发布:软件授权使用协议书 编辑:程序博客网 时间:2024/06/05 15:27
这两天在做图片预览的效果,显示在文字内部的时候限制max-width,显示在遮幕上的时候希望显示原尺寸,这就遇到了问题,如果直接获取当前图片的width,获取的并不是原始的大小,而是设置的max-width,那么如何让解决呢?
需要先var img = new Image(),然后给这个img的src赋值,之后就可以获取到当前图片的原始大小了,然后在各浏览器测试都是成功的(chrome,Firefox,IE9,QQ,UC,Opera,360兼容模式),唯有360的极速模式不可以。
当时特别费解,360的极速模式是chrome内核啊,为什么在chrome可以,在极速模式却不可以。
百度后知道,有可能是网络延迟原因,需要优化代码,代码如下:
function ShowImg(oCtl){var img = new Image();img.src =$(oCtl).attr("src") ;var w = 0,h = 0;if(window.ActiveXObject) {//IE使用onreadystatechange监听readyState为 loaded或complete时再获取 img.onreadystatechange = function() { if(img.readyState == "loaded" || img.readyState == "complete") {img.onreadystatechange = null;w = img.width;h = img.height;ShowPop(img.src , w, h); } }} else {//其它浏览器可使用onload获取 img.onload = function() {img.onload = null;w = img.width;h = img.height;ShowPop(img.src , w, h); }}}
这样,图片的预览就解决了,可是遮罩层显示的时候如果页面很长,有滚动条,这时滚动鼠标,原页面还是可以滚动,尽管可以禁止鼠标滚动时造成的页面滚动,假若用键盘上的上下键也是会造成页面滚动。
解决思路就是,将页面的样式改为overflow:hidden。
这里还有一点可以优化的地方,就是设置为hidden的时候,滚动条不见了,页面宽度比原来多了一个滚动条的宽度,这样展示的时候页面会来回跳动。
优化思路就是加一个右边距,大部分浏览器是17px,这里偷个懒,就直接设置为17px,代码如下:
function ShowPop(src,w,h){var ml = -Number(w/2);var mt = -Number(h/2);$("#popDiv").css("display","block");//弹出层$("#popFade").css("display","block");//遮罩层$("#popImg").attr("src",src);//弹出层内图片$(".pop-content").css("width",w+"px").css("height",h+"px").css("margin-left",ml+"px").css("margin-top",mt+"px");//设置大小且居中显示document.documentElement.style.cssText = 'overflow:none;overflow:hidden;_overflow:hidden;height:100%;';document.body.style.cssText = 'overflow:hidden;overflow:none;_overflow:none;padding:0 17px 0 0;height:100%;';}function ClosePop(){$("#popDiv").css("display","none");$("#popFade").css("display","none");document.documentElement.style.cssText = 'overflow:auto;+overflow:auto;_overflow:auto;';document.body.style.cssText = 'overflow:auto;+overflow:auto;_overflow:auto;padding:0 0px 0 0;';}
2 0
- 图片预览所遇到的获取图片尺寸问题
- 图片轮播所遇到的问题
- ImagePreviewd.js 选择图片预览遇到的问题
- 使用SmartUpload 上传图片时所遇到的问题
- 根据图片url获取图片尺寸
- 下载图片先获取图片尺寸
- 根据图片url获取图片尺寸
- 根据图片url获取图片尺寸
- 图片所遇到的坑
- hibernate 所遇到的问题
- 今天所遇到的问题
- qt所遇到的问题
- EditText所遇到的问题
- selenium 所遇到的问题
- javascript图片预加载快速获取图片尺寸
- javascript图片预加载快速获取图片尺寸
- OC - 网络图片压缩,获取网络图片尺寸
- flexpape2.3在线预览遇到的问题
- Plist文件的操作
- sql无法启动MSSQLSERVER,报错17051
- 图——操作用邻接表存储的图
- linux下配置Qt5 开发环境
- 网站大并发处理
- 图片预览所遇到的获取图片尺寸问题
- HDU 1027 STL
- hdu 4578 Transformation 线段树
- 【教程】爱玩吧QQ空间说说刷赞网怎么刷秒赞教程
- 数据结构与算法(3)--链表
- Subversion版本管理工具服务器搭建与基本用法
- 01 docker 安装操作
- 输入三条边,判断三角形
- java类静态域、块,非静态域、块,构造函数的初始化顺序