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 相关文章推荐
使用js对select动态添加和删除OPTION示例代码
Aug 12 Javascript
JS可以控制样式的名称写法一览
Jan 16 Javascript
jQuery+PHP+MySQL二级联动下拉菜单实例讲解
Oct 27 Javascript
js console.log打印对像与数组用法详解
Jan 21 Javascript
浅谈JS之iframe中的窗口
Sep 13 Javascript
微信小程序 定义全局数据、函数复用、模版等详细介绍
Oct 27 Javascript
AngularJS压缩JS技巧分析
Nov 08 Javascript
three.js快速入门【推荐】
Jan 21 Javascript
JavaScript 实现 Tab 点击切换实例代码
Mar 25 Javascript
详解redux异步操作实践
Aug 15 Javascript
node.js处理前端提交的GET请求
Aug 30 Javascript
vue 使用async写数字动态加载效果案例
Jul 18 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
回答PHPCHINA上的几个问题:URL映射
2007/02/14 PHP
php程序员应具有的7种能力小结
2014/11/27 PHP
php处理带有中文URL的方法
2016/07/11 PHP
PHP PDOStatement::fetchColumn讲解
2019/01/31 PHP
个人总结的一些关于String、Function、Array的属性和用法
2007/01/10 Javascript
Javascript 获取LI里的内容
2008/12/17 Javascript
JavaScript 解析Json字符串的性能比较分析代码
2009/12/16 Javascript
javascript 单例/单体模式(Singleton)
2011/04/07 Javascript
基于jquery的一个拖拽到指定区域内的效果
2011/09/21 Javascript
Jquery同辈元素选中/未选中效果的实例代码
2013/08/01 Javascript
javascript 获取浏览器版本
2015/01/21 Javascript
基于JavaScript实现鼠标悬浮弹出跟随鼠标移动的带箭头的信息层
2016/01/18 Javascript
Node.js编写爬虫的基本思路及抓取百度图片的实例分享
2016/03/12 Javascript
vue如何将v-for中的表格导出来
2018/05/07 Javascript
小程序实现留言板
2018/11/02 Javascript
Element Table的row-class-name无效与动态高亮显示选中行背景色
2018/11/30 Javascript
vue draggable resizable 实现可拖拽缩放的组件功能
2019/07/15 Javascript
微信小程序使用Vant Weapp组件库的方法步骤
2019/08/01 Javascript
微信小程序以ssm做后台开发的实现示例
2020/04/08 Javascript
python实现随机梯度下降(SGD)
2020/03/24 Python
python 限制函数调用次数的实例讲解
2018/04/21 Python
Django模板语言 Tags使用详解
2019/09/09 Python
tensorflow使用range_input_producer多线程读取数据实例
2020/01/20 Python
python使用nibabel和sitk读取保存nii.gz文件实例
2020/07/01 Python
Python 实现RSA加解密文本文件
2020/12/30 Python
moosejaw旗下的户外商品促销网站:Mountain Steals
2017/02/27 全球购物
菲律宾酒店预订网站:Hotels.com菲律宾
2017/07/12 全球购物
Perfume’s Club法国站:购买香水和化妆品
2019/05/02 全球购物
分解成质因数(如435234=251*17*17*3*2,据说是华为笔试题)
2014/07/16 面试题
《长城和运河》教学反思
2014/04/14 职场文书
推广普通话标语
2014/06/27 职场文书
交通安全责任书范本
2014/07/24 职场文书
学生评语集锦
2015/01/04 职场文书
高中军训感想
2015/08/07 职场文书
nginx限制并发连接请求数的方法
2021/04/01 Servers
收音机爱好者玩机13年,简评其使用过的19台收音机
2022/04/30 无线电