基于JavaScript实现图片点击弹出窗口而不是保存


Posted in Javascript onFebruary 06, 2016

一直想给安装一个缩略图点击弹出的插件,但是找了找几乎都是用的php来做的,插件的使用和安装极其繁琐,于是上网查了些demo,自己实现了一个纯js的图片弹出插件。

实现的思路是通过编写hook图片的onclick事件的函数,在函数中对body追加div元素,再将传入的图片对象放入元素中,同时再监听div的onclilck事件,当捕捉到点击,再关闭(其实是隐藏)弹出的div。

通过在函数初始化的时候收集页面所有的img元素,再为每个img元素增加onclick="picHook(this)"这条属性,这样当图片在被点击时,这个函数就能自动创建div蒙板背景,并获取被点击图片的宽度和高度,同时生成一个新的和图片一样大小的div来显示图片。当蒙板再次被点击时,hook事件再次响应,并将蒙板和图片div的style置为none,弹出的图片就被关闭了。

说起来很简单,做起来就更简单了,简单到只需要一个函数即可实现。

talking is cheap,show you my code:

<script>
function picHook(pic){
/*图片对象*/
var imgs = document.getElementsByTagName("img");
/*前景div*/
var light = document.getElementById('light') || document.createElement("div");
/*背景div*/
var bg = document.getElementById('bg') || document.createElement("div");
/*图片放大*/
var s_pic = document.getElementById('s_pic') || document.createElement("img");
/*css对象*/
var css = document.createElement("style");
/*css样式*/
var csstext = '\
.pic_bg{\
position: absolute;\
margin:0 auto; \
top: 0%;\
left: 0%;\
width: 100%;\
padding-bottom: 1000%;\
background-color: black;\
z-index:1001;\
opacity:.80;\
filter: alpha(opacity=80);\
overflow:scroll;\
}\
.pic_div {\
margin-bottom: auto;\
position: fixed;\
left:50%;\
top:50%;\
margin-left:-250px;\
margin-top:-100px;\
z-index:1002;\
}';
/*收集页面所有图片对象*/
for(i=0; i<imgs.length;i++){
imgs[i].setAttribute("onclick", "picHook(this)" );
}
css.type = "text/css";

/*关闭图像*/
if( !pic ){
bg.style.display = light.style.display = "none";
}
/*ie兼容*/
if(css.styleSheet){
css.styleSheet.cssText = csstext;
}else{
css.appendChild(document.createTextNode(csstext));
}
s_pic.setAttribute("id", "s_pic");
s_pic.setAttribute("src", pic.src);
light.setAttribute("id", "light");
light.setAttribute("class", "pic_div");
light.style.display = 'block';
light.appendChild(s_pic);
bg.setAttribute("id", "bg");
bg.setAttribute("class", "pic_bg");
bg.setAttribute("onclick", "picHook()");
bg.style.display = light.style.display;
document.getElementsByTagName("head")[0].appendChild(css); 
document.body.appendChild(bg);
document.body.appendChild(light);
}
</script>

将这段代码保存在页面的head中,再将body的onload事件绑定到picHook()函数,你的页面中就也可以实现图片点击弹出大图啦。

还存在一点小bug,主要是因为我不太熟悉css,导致div的样式做的有点难看。

css的样式我是直接声明在js里的,这样就不用再另外创建css文件了。

等过了这个节再琢磨琢磨css,优化下样式。希望本文给大家分享的JavaScript实现图片点击弹出窗口而不是保存的相关知识能够帮助到大家。

Javascript 相关文章推荐
JS下高效拼装字符串的几种方法比较与测试代码
Apr 15 Javascript
JS 面向对象之神奇的prototype
Feb 26 Javascript
jquery 操作日期、星期、元素的追加的实现代码
Feb 07 Javascript
jquery select动态加载选择(兼容各种浏览器)
Feb 01 Javascript
javascript实现依次输入input自动定焦
Dec 23 Javascript
Mongoose中document与object的区别示例详解
Sep 18 Javascript
详解vue-cli中的ESlint配置文件eslintrc.js
Sep 25 Javascript
jQuery实现checkbox全选功能完整实例
Jul 12 jQuery
vue中实现Monaco Editor自定义提示功能
Jul 05 Javascript
layui复选框的全选与取消实现方法
Sep 02 Javascript
layui实现checkbox的目录树tree的例子
Sep 12 Javascript
JS实现关闭小广告特效
Jan 29 Javascript
javascript+css3 实现动态按钮菜单特效
Feb 06 #Javascript
Angularjs全局变量被作用域监听的正确姿势
Feb 06 #Javascript
JavaScript仿商城实现图片广告轮播实例代码
Feb 06 #Javascript
简介AngularJS中$http服务的用法
Feb 06 #Javascript
详解AngularJS中$http缓存以及处理多个$http请求的方法
Feb 06 #Javascript
JavaScript中数组添加值和访问值常见问题
Feb 06 #Javascript
详解Angularjs filter过滤器
Feb 06 #Javascript
You might like
php unset全局变量运用问题的深入解析
2013/06/17 PHP
Php连接及读取和写入mysql数据库的常用代码
2014/08/11 PHP
php文件下载处理方法分析
2015/04/22 PHP
PHP机器学习库php-ml的简单测试和使用方法
2017/07/14 PHP
js类后台管理菜单类-MenuSwitch
2007/09/12 Javascript
jquery 子窗口操作父窗口的代码
2009/09/21 Javascript
JavaScript随机排序(随即出牌)
2010/09/17 Javascript
JS实现悬浮移动窗口(悬浮广告)的特效
2013/03/12 Javascript
Javascript页面添加到收藏夹的简单方法
2013/08/07 Javascript
JS将秒换成时分秒实现代码
2013/09/03 Javascript
jQuery 顶部导航跟随滚动条滚动固定浮动在顶部
2014/06/06 Javascript
JavaScript检测并限制复选框选中个数的方法
2015/08/12 Javascript
jQuery实现的淡入淡出二级菜单效果代码
2015/09/15 Javascript
JS实现网页标题栏显示当前时间和日期的完整代码
2015/11/02 Javascript
js转换对象为xml
2017/02/17 Javascript
结合mint-ui移动端下拉加载实践方法总结
2017/11/08 Javascript
js实现点赞按钮功能的实例代码
2020/03/06 Javascript
Vue+elementUI实现多图片上传与回显功能(含回显后继续上传或删除)
2020/03/23 Javascript
JS图片懒加载技术实现过程解析
2020/07/27 Javascript
vue 出现data-v-xxx的原因及解决
2020/08/04 Javascript
[50:45]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs TNC 第一场
2018/04/10 DOTA
布同 统计英文单词的个数的python代码
2011/03/13 Python
Python使用自带的ConfigParser模块读写ini配置文件
2016/06/26 Python
Python 实现随机数详解及实例代码
2017/04/15 Python
python实现发送邮件及附件功能
2021/03/02 Python
python自动12306抢票软件实现代码
2018/02/24 Python
在Django中URL正则表达式匹配的方法
2018/12/20 Python
Python序列类型的打包和解包实例
2019/12/21 Python
tensorflow实现从.ckpt文件中读取任意变量
2020/05/26 Python
python 模块导入问题汇总
2021/02/01 Python
HTML5新增的表单元素和属性实例解析
2014/07/07 HTML / CSS
俄罗斯一家时尚女装商店:Charuel
2019/12/04 全球购物
幼儿园中班开学寄语
2014/04/03 职场文书
个人求职信格式范文
2015/03/20 职场文书
升职感谢领导的话语及升职感谢信
2019/06/24 职场文书
大学生饮品店创业计划书范文
2019/07/10 职场文书