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 数组排序详解
Oct 22 Javascript
js实现带有介绍的Select列表菜单实例
Aug 18 Javascript
AngularJs解决跨域问题案例详解(简单方法)
May 19 Javascript
javascript常用经典算法详解
Jan 11 Javascript
JS中使用 after 伪类清除浮动实例
Mar 01 Javascript
javaScript手机号码校验工具类PhoneUtils详解
Dec 08 Javascript
vue 对象添加或删除成员时无法实时更新的解决方法
May 01 Javascript
微信小程序+腾讯地图开发实现路径规划绘制
May 22 Javascript
JS中的算法与数据结构之列表(List)实例详解
Aug 16 Javascript
浅谈对于“不用setInterval,用setTimeout”的理解
Aug 28 Javascript
原生js滑动轮播封装
Jul 31 Javascript
vue项目页面嵌入代码块vue-prism-editor的实现
Oct 30 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
使用adodb lite解决问题
2006/12/31 PHP
joomla jce editor 解决上传中文名文件失败问题
2013/06/09 PHP
ThinkPHP表单自动提交验证实例教程
2014/07/18 PHP
网站被恶意镜像怎么办 php一段代码轻松搞定(全面版)
2018/10/23 PHP
关于Blog顶部的滚动导航条代码
2006/09/25 Javascript
jquery 获取json数据实现代码
2009/04/27 Javascript
javascript 处理事件绑定的一些兼容写法
2009/12/24 Javascript
JavaScript 设计模式之组合模式解析
2010/04/09 Javascript
javascript实现2048游戏示例
2014/05/04 Javascript
Javascript学习笔记之 对象篇(四) : for in 循环
2014/06/24 Javascript
JavaScript获取鼠标移动时的坐标(兼容IE8、chome谷歌、Firefox)
2014/09/13 Javascript
nodejs通过phantomjs实现下载网页
2015/05/04 NodeJs
JavaScript中getUTCSeconds()方法的使用详解
2015/06/11 Javascript
JS函数的定义与调用方法推荐
2016/05/12 Javascript
Angularjs 创建可复用组件实例代码
2016/10/09 Javascript
使用travis-ci如何持续部署node.js应用详解
2017/07/30 Javascript
用vue2.0实现点击选中active其他选项互斥的效果
2018/04/12 Javascript
浅析Vue.js 中的条件渲染指令
2018/11/19 Javascript
Element中的Cascader(级联列表)动态加载省\市\区数据的方法
2019/03/27 Javascript
浅析JavaScript预编译和暗示全局变量
2020/09/03 Javascript
Python求导数的方法
2015/05/09 Python
Python的迭代器和生成器
2015/07/29 Python
Python文件夹与文件的相关操作(推荐)
2016/07/25 Python
python从zip中删除指定后缀文件(推荐)
2019/12/05 Python
python扫描线填充算法详解
2020/02/19 Python
使用BeautifulSoup4解析XML的方法小结
2020/12/07 Python
科尔士百货公司官网:Kohl’s
2016/07/11 全球购物
找到您丢失的钥匙、钱包和手机:Tile
2017/05/19 全球购物
几个Shell Script面试题
2012/08/31 面试题
餐饮管理自我介绍信
2014/01/15 职场文书
电子信息科学专业自荐信
2014/01/30 职场文书
酒店保安员岗位职责
2014/01/31 职场文书
优秀教师先进事迹材料
2014/12/15 职场文书
关于运动会的广播稿
2015/08/19 职场文书
Django显示可视化图表的实践
2021/05/10 Python