`
longxingtx520
  • 浏览: 18356 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

仿QQ空间图片弹出效果

    博客分类:
  • js
阅读更多

参考网上代码,自己做了一个仿QQ空间图片弹出效果,但现在还无法在弹出层切换图片。

以下是js代码:

function imageShow(which_click) {
		var image_path = which_click.src;
		//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:absolute;background:black;top:0;filter: Alpha(Opacity=80);Opacity:0.8;";
		document.body.appendChild(index_tag);
		index_tag.ondblclick = 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.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:red;border:1px solid white;filter:Alpha(Opacity=50);Opacity:0.5;cursor:pointer;'>&nbsp;关闭&nbsp;</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);
		}
}

 

分享到:
评论
31 楼 alask2011 2011-05-17  
要是能切换图片就好了,楼主努力尝试下
30 楼 Dev|il 2011-05-17  
nnnnn分vcxzcv
29 楼 Dev|il 2011-05-17  
没图,求真相
28 楼 gongrunlian 2011-05-16  
虽然有点小bug但还是很不错的,加油,向你学习
27 楼 小手冰凉 2011-05-13  
挺不错的。感谢
26 楼 4268146 2011-05-06  
呵,我先看看……可以的话,当然要支持一下了
25 楼 ws347575294 2011-05-05  
不错啊 ,学习了。。
24 楼 wj6175256 2011-04-29  
很强大,学习学习!
23 楼 yjhailsl 2011-03-11  
刚下了,很不错,不过 杨幂的qq号是真  的不是?
22 楼 tanchong 2011-03-03  
[html]
    [span]aaaa[/span]
[/html]
21 楼 bn922 2011-03-03  
菜鸟,怎么图片很多 弹出的图片居中 但页面跑到顶部去了 要让他显示在弹出的图片那里 怎么改?
20 楼 jiahch 2011-02-24  

colorbox!
19 楼 andyfish915 2011-02-23  
是的,做得真不错,大家需要用的也可以在这基础上改改,和楼主交流交流
18 楼 dir_murong 2011-02-22  
做的不错 赞一个
17 楼 satanultra 2011-02-21  
用心了         
16 楼 TonyBug 2011-02-21  
里面存在脚本错误,上面所有楼上面的大虾们都没有发现吗?在火狐浏览器下面执行是没有错的,但是在IE下面执行就报脚本错误。请用IE8试试就可以到脚本错误了。错误的大致内容是尚未实现。
15 楼 sbzk 2011-02-21  
snowstone 写道
2.在loading时候,div 灰色的层占满屏幕,但是如果页面很长,灰色的div就无法遮罩全部了.


clientHeight换成scrollheight
14 楼 抢街饭 2011-02-21  
首先感谢楼主 看见你这个列子 我颇受启发 就是在火狐加载有点慢
13 楼 yangleilt 2011-02-21  
snowstone 写道
2.在loading时候,div 灰色的层占满屏幕,但是如果页面很长,灰色的div就无法遮罩全部了.

例子挺好 功能不全自己不会改改呀!
12 楼 snowstone 2011-02-20  
2.在loading时候,div 灰色的层占满屏幕,但是如果页面很长,灰色的div就无法遮罩全部了.

相关推荐

    自定义ListView仿QQ空间下拉图片放大效果(雷惊风)

    本示例“自定义ListView仿QQ空间下拉图片放大效果”由雷惊风实现,旨在模仿QQ空间顶部图片在用户下拉时的放大动画,当用户松手时,图片会有一个反弹的效果。这一功能的实现涉及到多个Android开发的关键知识点,包括...

    带阻尼效果的scrollview,仿QQ空间

    "带阻尼效果的scrollview,仿QQ空间"就是一个这样的案例,它涉及到移动应用开发中的滚动视图(ScrollView)设计,以及如何通过模拟真实物理世界的阻尼现象来提升用户体验。在此项目中,开发者修复了上一个版本的已知...

    js仿QQ空间相册照片展示效果

    综上所述,实现"js仿QQ空间相册照片展示效果"涉及到前端开发的多个方面,包括响应式布局、图片处理、事件处理、动画效果、模态窗口、事件委托、性能优化和无障碍性设计。掌握这些技术,不仅能提升你的编程能力,还能...

    仿QQ空间列表显示

    5. 图片加载库:仿QQ空间的列表通常会包含图片,因此需要一个图片加载库,如Glide或Picasso,来处理网络图片的加载、缓存和显示。这些库能够优化图片加载过程,防止内存溢出,并提供图片占位符、错误图等功能。 6. ...

    jQuery js-实现高仿朋友圈QQ空间图片相册查看效果插件.zip

    本教程将详细讲解如何利用jQuery实现一个高仿朋友圈或QQ空间图片相册查看的效果,这涉及到JavaScript编程、CSS样式设计以及响应式布局等多个知识点。 首先,jQuery的核心在于它的选择器,它可以方便地选取HTML元素...

    仿qq空间列表

    在iOS开发中,"仿qq空间列表"是一个常见的需求,主要涉及到UITableView的自定义和高度自适应。这个项目标签为"tableView",意味着我们将深入探讨UITableView的使用技巧以及如何实现类似QQ空间的时间线布局。 首先,...

    仿qq空间登录UI

    首先,我们来看“仿qq空间登录UI”这个标题,它表明我们要构建的界面与QQ空间的登录界面类似。QQ空间作为一款流行的社交媒体平台,其登录界面设计简洁、易于操作,因此在模仿时需要考虑用户体验和视觉效果。这通常...

    仿QQ空间相片展示GreyBox

    【图片之间的切换】在仿QQ空间的照片展示效果中,用户不仅能看到单个图片的大图,还能方便地切换到其他图片。这通常通过JavaScript或者jQuery实现,通过监听上一张/下一张按钮的点击事件,更新GreyBox显示的图片URL...

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

    整体而言,文章介绍了一种利用JavaScript实现仿QQ空间图片弹出效果的技术方案,覆盖了JavaScript、CSS以及前端开发的多个关键知识点,适合需要提高网页交互效果和用户体验的前端开发者学习和参考。

    JQ仿QQ空间相册插件

    "JQ仿QQ空间相册插件"就是这样一个解决方案,它旨在为用户提供类似QQ空间相册的浏览体验,具备相册封面展示以及照片的上下循环切换功能。这个插件基于JavaScript库jQuery构建,jQuery以其简洁易用的API,大大简化了...

    jquery仿QQ空间装扮预览图片的感应鼠标提示效果

    本教程将深入探讨如何使用jQuery来实现一个仿QQ空间装扮预览图片的感应鼠标提示效果,这一功能是用户界面设计中常见且吸引人的元素。 首先,我们需要了解jQuery的基本语法。jQuery的核心概念是选择器,它允许我们...

    仿QQ空间js代码

    总的来说,“仿QQ空间js代码”项目是一个典型的前端开发实践,它涵盖了JavaScript基础、DOM操作、事件处理、图片加载与显示等多个方面,对于学习和理解Web开发有很好的帮助。通过实现这个功能,开发者可以深入理解...

    QQ空间高仿源码

    QQ空间是中国最受欢迎的社交平台之一,用户可以在这里分享生活点滴、照片、日志以及与朋友们互动。"QQ空间高仿源码"指的是开发者或设计师为了创建一个与QQ空间外观和功能相似的网站或应用,所编写的源代码。这类源码...

    仿QQ空间图片放大

    【标题】"仿QQ空间图片放大" 描述的是一个针对图片查看体验的增强插件,其设计灵感来源于QQ空间的图片浏览功能。QQ空间作为中国流行的社交媒体平台之一,其图片展示方式具有一定的用户基础和认可度,这款插件旨在...

    仿QQ空间时间轴特效

    本文将深入探讨如何实现这样一个仿QQ空间的时间轴特效,主要基于JavaScript库jQuery进行开发。 首先,我们需要理解时间轴的基本结构。一个典型的时间轴由两部分组成:时间线(timeline)和事件(events)。时间线...

    仿QQ空间时光轴

    总的来说,"仿QQ空间时光轴"项目利用jQueryTimelinr插件实现了类似QQ空间的时光轴功能,为用户提供了一种直观的方式来展示和浏览一系列时间相关的事件。通过理解和应用这个插件,开发者可以轻松地在自己的网站上创建...

    仿QQ空间广告图

    "仿QQ空间广告图"这个主题表明我们关注的是如何创建类似于QQ空间中出现的广告图像,这些图像通常用来吸引用户的注意力,推广产品或服务。在这个过程中,我们将探讨几个关键的知识点: 1. **设计原则**:广告图的...

    仿QQ空间底部UI设计

    本项目标题“仿QQ空间底部UI设计”旨在创建一个与QQ空间底部导航栏相似的用户界面,以提供类似的功能和交互体验。QQ空间作为一款广受欢迎的社交应用,其底部导航栏设计简洁且易于操作,是很多开发者学习和模仿的对象...

    jquery实现图片浏览类似qq空间图片查看

    综上所述,实现"jquery实现图片浏览类似qq空间图片查看"这一功能,需要掌握jQuery的选择器、DOM操作、事件监听、CSS样式控制、动画效果、图片预加载和Ajax等技术,并结合layer.min.js插件进行实现。理解并熟练运用...

Global site tag (gtag.js) - Google Analytics