JS实现的仿QQ空间图片弹出效果代码


Posted in Javascript onFebruary 23, 2016

本文实例讲述了JS实现的仿QQ空间图片弹出效果代码。分享给大家供大家参考,具体如下:

<script type="text/javascript">
function imageShow(which_click) {
  var image_path = which_click;
  //alert(image_path);
  var tag_top = Math.max(document.documentElement.scrollTop, document.body.scrollTop);
  //创建底层灰色DIV
  var index_tag = document.createElement("div");
  index_tag.style.cssText = "width:100%;height:"+Math.max(document.body.clientHeight,document.body.offsetHeight,document.documentElement.clientHeight)+"px;position:relative;background:black;top:0;filter: Alpha(Opacity=80);Opacity:0.8;";
  document.body.appendChild(index_tag);
  //index_tag.ondblclick = closeIndexTag;
  index_tag.onclick = closeIndexTag;
  //创建图片DIV
  var img_tag = document.createElement("div");
  img_tag.style.cssText = "font:12px/18px verdana;overflow:auto;text-align:center;position:absolute;width:200px;border:5px solid white;background:white;color:white;left:"+(parseInt(document.body.offsetWidth)/2-100)+"px;top:"+(document.documentElement.clientHeight/3+tag_top)+"px;";
  img_tag.innerHTML = "<div style='padding:10px;background:#cccccc;border:1px solid white'><img src='images/loading.gif' /><br /><br /><b style='color:#999999;font-weight:normal'>Image loading...</b><br /></div>";
  img_tag.oncontextmenu = function() {
    var clsOK=confirm("是否确定关闭图片显示");
    if(clsOK)
      closeIndexTag();
    return false;
  }
  img_tag.onclick = closeIndexTag;
  //img_tag.onmousemove = barDidplay;
  document.body.appendChild(img_tag);
  //构建图片关闭按钮
  var close_tag = document.createElement("div");
  close_tag.style.cssText = "display:none;position:absolute;left:10px;top:10px;color:black;";
  close_tag.innerHTML = "<b style='background:none;border:0px solid white;filter:Alpha(Opacity=50);Opacity:0.5;cursor:pointer;'> 关闭 </b>";
  close_tag.onclick = closeIndexTag;
  var img = new Image();
  img.src = image_path;
  img.style.cssText = "border:1px solid #cccccc;filter: Alpha(Opacity=0);Opacity:0;cursor:pointer";
  img.onload = imgOK();
  function imgOK() {
    var temp = 0;
    var stop_x = false;
    var stop_y = false;
    var img_tag_x = img_tag.offsetWidth;
    var img_tag_y = img_tag.offsetHeight;
    var img_x = img.width;
    var img_y = img.height;
    var scroll_x=document.documentElement.clientWidth;
    var scroll_y=window.innerHeight||document.documentElement.clientHeight;
    var yy = 0;
    var xx = 0;
    if(img_y > scroll_y || img_x > scroll_x){
      yy = scroll_y - 100;
      xx = (img_x / img_y) * yy;
    }else{
      xx = img_x + 4;
      yy = img_y + 3;
    }
    img.style.width=xx-4+'px';
    img.style.height=yy-3+'px';
    var maxTime = setInterval(function() {
      temp += 30;
      if((img_tag_x + temp) < xx) {
        img_tag.style.width = (img_tag_x + temp) + "px";
        img_tag.style.left = (scroll_x - img_tag_x - temp)/2 + "px";
      } else {
        stop_x = true;
        img_tag.style.width = xx + "px";
        img_tag.style.left = (scroll_x - xx)/2 + "px";
      }
      if((img_tag_y + temp) < yy) {
        img_tag.style.height = (img_tag_y + temp) + "px";
        img_tag.style.top = (tag_top + (scroll_y - img_tag_y - temp)/2) + "px";
      } else {
        stop_y = true;
        img_tag.style.height = yy + "px";
        img_tag.style.top = (tag_top + (scroll_y - yy)/2) + "px";
      }
      if(stop_x && stop_y) {
        clearInterval(maxTime);
        img_tag.appendChild(img);
        temp = 0;
        imgOpacity(temp);
      }
    }, 1);
    img_tag.innerHTML="";
    img_tag.appendChild(close_tag);
  }
  function closeIndexTag() {
    document.body.removeChild(index_tag);
    document.body.removeChild(img_tag);
  }
  function imgOpacity(temp_imgOpacity) {
    var temp = temp_imgOpacity;
    temp += 10;
    img.style.filter = "alpha(opacity=" + temp + ")";
    img.style.opacity = temp/100;
    var imgTime = setTimeout(function() {imgOpacity(temp);}, 10);
    if(temp > 100)
      clearTimeout(imgTime);
  }
  var bar_show;
  function barDidplay(){
    clearTimeout(bar_show);
    close_tag.style.display = "block";
    bar_show = setTimeout(function() {close_tag.style.display = "none"}, 1000);
  }
}
</script>

html部分:

<a class="add" href="javascript:;" onclick="imageShow('img/hn_bg.jpg')">
<span>图片效果</span>
</a>

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
JavaScript入门教程(12) js对象化编程
Jan 31 Javascript
MooTools 页面滚动浮动层智能定位实现代码
Aug 23 Javascript
dojo学习第一天 Tab选项卡 实现
Aug 28 Javascript
用jquery等比例控制图片宽高的具体实现
Jan 28 Javascript
通过实例理解javascript中没有函数重载的概念
Jun 03 Javascript
jquery实现TAB选项卡鼠标经过带延迟效果的方法
Jul 27 Javascript
完美解决IE不支持Data.parse()的问题
Nov 24 Javascript
图文详解Javascript中的上下文和作用域
Feb 15 Javascript
Angular 2父子组件之间共享服务通信的实现
Jul 04 Javascript
vue打包相关细节整理(小结)
Sep 28 Javascript
js+html5 canvas实现ps钢笔抠图
Apr 28 Javascript
JavaScript 作用域实例分析
Oct 02 Javascript
理解javascript封装
Feb 23 #Javascript
学习Javascript面向对象编程之封装
Feb 23 #Javascript
javascript每日必学之封装
Feb 23 #Javascript
jQuery常用知识点总结以及平时封装常用函数
Feb 23 #Javascript
使用Javascript实现选择下拉菜单互移并排序
Feb 23 #Javascript
jQuery拖拽排序插件制作拖拽排序效果(附源码下载)
Feb 23 #Javascript
JavaScript tab选项卡插件实例代码
Feb 23 #Javascript
You might like
如何使用动态共享对象的模式来安装PHP
2006/10/09 PHP
php+ajax实现无刷新分页的方法
2014/11/04 PHP
thinkphp框架实现路由重定义简化url访问地址的方法分析
2020/04/04 PHP
PHP7 标准库修改
2021/03/09 PHP
HR vs CL BO3 第二场 2.13
2021/03/10 DOTA
基于jquery的jqDnR拖拽溢出的修改
2011/02/12 Javascript
JQUERY实现左侧TIPS滑进滑出效果示例
2013/06/27 Javascript
JS简单实现浮动窗口效果示例
2016/09/07 Javascript
省市区三级联动jquery实现代码
2020/04/15 Javascript
canvas的神奇用法
2017/02/03 Javascript
html+javascript+bootstrap实现层级多选框全层全选和多选功能
2017/03/09 Javascript
Angular.JS中指令ng-if、ng-show/ng-hide和ng-switch的使用教程
2017/05/07 Javascript
JavaScript初学者必看“new”
2017/06/12 Javascript
js实现本地图片文件拖拽效果
2017/07/18 Javascript
JQuery 获取多个select标签option的text内容(实例)
2017/09/07 jQuery
微信小程序页面间跳转传参方式总结
2019/06/13 Javascript
如何基于filter实现网站整体变灰功能
2020/04/17 Javascript
介绍Python中的fabs()方法的使用
2015/05/14 Python
用python写个自动SSH登录远程服务器的小工具(实例)
2017/06/17 Python
浅谈python和C语言混编的几种方式(推荐)
2017/09/27 Python
Python开发的十个小贴士和技巧及长常犯错误
2018/09/27 Python
完美解决python3.7 pip升级 拒绝访问问题
2019/07/12 Python
Python csv模块使用方法代码实例
2019/08/29 Python
Python如何获取Win7,Win10系统缩放大小
2020/01/10 Python
python super用法及原理详解
2020/01/20 Python
CSS3中Color的一些特性介绍
2012/05/27 HTML / CSS
Html5上传图片 移动端、PC端通用代码
2016/06/08 HTML / CSS
澳大利亚领先的宠物用品商店:VetSupply
2017/09/08 全球购物
世界上最大的铁人三项商店:Tri UK
2020/11/04 全球购物
几道PHP面试题
2013/04/14 面试题
中学生差生评语
2014/01/30 职场文书
小学六年级班主任工作经验交流材料
2015/11/02 职场文书
python实现层次聚类的方法
2021/11/01 Python
javascript的setTimeout()使用方法总结
2021/11/20 Javascript
MySQL数据库事务的四大特性
2022/04/20 MySQL
Go web入门Go pongo2模板引擎
2022/05/20 Golang