关键词:
一直想给安装一个缩略图点击弹出的插件,但是找了找几乎都是用的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%;
right: 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:30%; top:20%; width: 100%; padding-top:25px; 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);
s_pic.setAttribute("width","70%");
s_pic.setAttribute("height","65%");
s_pic.setAttribute("margin","0 auto");
s_pic.style.display = 'block';
light.setAttribute("id", "light");
light.setAttribute("class", "pic_div");
light.style.display = 'block';
light.appendChild(s_pic);
light.setAttribute("onclick", "picHook()");
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学习——完成页面定时弹出广告
...数”,3000);2、步骤分析(此案例页面定时弹出广告基于JavaScript学习——实现首页轮播图效果实现的)第一步:在页面指定位置隐藏一个广告图片(使用display属性的none值)第二 查看详情
点击弹出固定大小的新窗口(js实现)
<SCRIPT LANGUAGE="javascript"> <!-- window.open (‘page.html‘) --> </SCRIPT> 固定大小:<SCRIPT LANGUAGE="javascript">& 查看详情
怎么用js实现图片点击时放大,再点击恢复
用JavaScript实现图片点击放大再次点击恢复代码如下:JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,... 查看详情
使用javascript实现弹出层效果
声明阅读本文需要有一定的HTML、CSS和JavaScript基础设计实现弹出层效果的思路非常简单:将待显示的内容先隐藏,在触发某种条件后(如点击按钮),将原本隐藏的内容显示出来。实现 <!DOCTYPEhtml><html><head><titl... 查看详情
怎么用javascript实现自动点击由confirm弹出的对话框中的“确定”按钮?
...个网页游戏,可游戏中会弹出确定对话框,要怎样才能用JavaScript代码自动点击或直接跳过,实现真正的无人值守玩游戏?这个没有搞过,但是可以给个思路:在页面上添加下面的js试试,即把js自己的alert、confirm、prompt给覆盖掉... 查看详情
图片点击后出现模态框效果的实现
...口。这就是图片模态框效果。这个效果可以使用某些js库实现,如bpopupJs。但是在这里我们使用纯js实现,能够更好理解效果原理和实现方法。一.实现思路我们点击小图片之后,图片模态框出现,同时图片模态框上有一个关闭按钮... 查看详情
二十一天——打卡第十五天(javascript实现登录弹出框)(代码片段)
今天写个点击出现弹出框的效果。HTML:<h2>点击,弹出对话框</h2> <divid="login"> <h3>登录会员</h3> <divclass="yonghuming"><span>用户名:</sp 查看详情
通过 webdriver 点击 javascript 弹出窗口
】通过webdriver点击javascript弹出窗口【英文标题】:Clickthejavascriptpopupthroughwebdriver【发布时间】:2012-01-2717:24:18【问题描述】:我在Python中使用Seleniumwebdriver抓取网页我正在处理的网页有一个表格。我可以填写表格,然后点击提交... 查看详情
网页上如何实现点击一张图片弹出qq聊天窗口?
...该是调用电脑的软件。通过自动弹出QQ对话框的方法能够实现很高的客户咨询量,相比“左一个、右一个、中间再弹一个”的客服组 查看详情
ueditor单独图片上传
...URL地址栏面点击确定的时候再吧信息发送到编辑器里面能实现吗?请大虾们帮帮搞定吧~参考技术A可以实现,我之前做过 查看详情
js实现长按事件
参考技术A最近在做一个项目,点击一个按钮,弹出一张图片,长按图片保存图片,点击图片图片隐藏。在做的时候发现,当我们长按图片的时候也会执行点击图片的事件,这时候我们就需要判断长按事件和点击事件了。htmljs 查看详情
javascript点击button更换背景图片如何实现?
...; <script type="text/javascript"> setTimeout("validate()",24*60*60*1000); ... 查看详情
html中怎么点击图片弹出视频?
...; rel="stylesheet"> <script type="text/javascript" src="js/jquery.layerModel.js"></script><script type="text/javascript">$(function() $("#demoBtn1").click(function() &nbs... 查看详情
javascript中有几种模态框
JavaScript中常见的模态框有以下几种:1.alert:用于弹出一个警示框,只能显示一段文字信息和一个“确定”按钮。2.confirm:用于弹出带有确认和取消两个选项的对话框,用户点击确认返回true,点击取消返回false。3.prompt:用于弹... 查看详情
高分求教:如何实现javaweb按钮点击弹出登陆界面,并登陆
请看图片,用java实现点击登陆按钮,并在弹出的登陆界面上实现登陆简单的js就可以啊。在页面上写一个隐藏的div,里面放上登录用的表单,这个div是绝对定位在浏览器中间的,看起来比较好看。你还可以加个灰色透明的遮罩,... 查看详情
unity点击图片不弹出原图
...如下图所示的地方,其他按照要求进行设置:这样就可以实现,按钮调出自制弹出框的功能了。家常炸萝卜丸子的做法精选推荐广告unity自定义弹出框功能11下载·0评论2020年8月25日点击按钮随机显示一张图片.rar15下载... 查看详情
网页上点登陆弹出一个登录对话框使用啥技术实现的ajax吗?怎么做啊?急
使用JavaScript即可,仅仅是弹出对话框的话没有涉及到Ajax。具体做法,可以使用JavaScript给登陆按钮注册一个点击事件处理函数,当点击这个按钮的时候,就触发该函数,在这个函数中生成一个弹出层,该弹出层就是登陆对话框了... 查看详情
javascript,有很多个li,给每个li写同一个单击事件,怎么让它实现点击其中一个li,弹出对应的innerhtml.
我知道可以给每个li写不同事件,但是有很多个li呢?您好,您可以将声明放在函数外面。没必要写onclick属性在标签内varnr=document.getElementsByTagName('li');for(i=0;i<nr.length;i++)nr[i].onclick=function()alert(this.innerHTML )参考技术Aaler... 查看详情