最近项目中要使用js来实现模态窗口显示图片,打开一个子页面,在网上倒是有很多开源的基于jquery的实现,如ColorBox, LightBox等等,试用了几个,在IE标准模式下倒是没有问题,不过如果在quirks(杂项)模式下,就惨不忍睹了,而我们的项目模板中定义的html头比较老,是下面这样的写法:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
要想让IE工作在标准模式,就要这样声明了:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
这样的结果是,在IE中运行时,会自动工作在杂项模式中,导致css3的很多效果出不来,那些插件自然也就工作不正常了,于是继续找找找,碰巧找到了prettyPhoto,它默认的显示也是有问题,不过问题比其它插件要少一些,于是继续深入研究它,发现它在light_rounded这个theme下,显示几乎完全正常,除了边角有点稍微的毛刺感,不仔细看看不出来,就是它了。它的功能覆盖了我们常用的所有功能---打开图片、打开iframe、嵌入html、以画廊的方式浏览图片。
下面是一个打开图片和iframe的例子:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="jquery-1.6.1.min.js" type="text/javascript"></script>
<script src="jquery.prettyPhoto.js" type="text/javascript" charset="utf-8"></script>
<link rel="stylesheet" href="css/prettyPhoto.css" type="text/css" media="screen" title="prettyPhoto main stylesheet" charset="utf-8" />
<title>Insert title here</title>
</head>
<script type="text/javascript">
$(window).load(function(){
initPrettyPhoto()
})
function openImage(){
$.prettyPhoto.open('images/fullscreen/1.jpg')
}
function openIframe(){
$.prettyPhoto.open("http://news.163.com?iframe=true")
}
//init prettyPhoto
function initPrettyPhoto() {
$("a[rel^='prettyPhoto']").prettyPhoto({
default_width:900, //iframe width
default_height:700, //iframe height
show_title:false, //no title shown
theme:'light_rounded',
modal:true, //modal window
callback:function () {
alert('window is closed!')// invoked after closing this popup window
},
social_tools:false // disable display of facebook,twitter icons and links
});
}
</script>
<body>
<a href="#" rel='prettyPhoto' style="display: none;">open it</a>
<input type="button" value="oepn image" style="height: 30px;" onclick="javascript:openImage()"/>
<input type="button" value="oepn iframe" style="height: 30px;" onclick="javascript:openIframe()"/>
</body>
</html>
先看运行效果吧:
打开图片的
打开iframe的
注意图中红色方框标出的图标,如果弹出窗口不足以显示所有内容,会自动出现此图标,点击它会完整显示出来,非常方便。
下面讲解一下使用步骤:
- 定义一个link,这个link不是为了点击而用,而是为了初始化prettyPhoto,为了不在页面显示,可以用样式隐藏起来。
下面是示例代码:
function initPrettyPhoto() {
$("a[rel^='prettyPhoto']").prettyPhoto({
default_width:900, //iframe width
default_height:700, //iframe height
show_title:false, //no title shown
theme:'light_rounded',
modal:true, //modal window
callback:function () {
alert('window is closed!')// invoked after closing this popup window
},
social_tools:false // disable display of facebook,twitter icons and links
});
}
示例中的json风格的参数意义在注释中阐明了,完整的参数列表后面会贴出
- 打开图片
这个很简单,调用其open方法并传入图片地址即可
- 打开iframe
这个有个小trick,打开一个iframe的时候,最后一个参数一定是iframe=true,否则不会以iframe形式打开页面
$.prettyPhoto.open("http://news.163.com?iframe=true")
这里是打开163的新闻首页,至于其大小,则在初始化时通过default_width和default_height指定了
要注意的是,引入prettyPhoto的js之前,要先引入jquery的js,完整的参数列表:
<script type="text/javascript" charset="utf-8">
$(document).ready(function(){
$("a[rel^='prettyPhoto']").prettyPhoto({
animation_speed: 'fast', /* fast/slow/normal */
slideshow: 5000, /* false OR interval time in ms */
autoplay_slideshow: false, /* true/false */
opacity: 0.80, /* Value between 0 and 1 */
show_title: true, /* true/false */
allow_resize: true, /* Resize the photos bigger than viewport. true/false */
default_width: 500,
default_height: 344,
counter_separator_label: '/', /* The separator for the gallery counter 1 "of" 2 */
theme: 'pp_default', /* light_rounded / dark_rounded / light_square / dark_square / facebook */
horizontal_padding: 20, /* The padding on each side of the picture */
hideflash: false, /* Hides all the flash object on a page, set to TRUE if flash appears over prettyPhoto */
wmode: 'opaque', /* Set the flash wmode attribute */
autoplay: true, /* Automatically start videos: True/False */
modal: false, /* If set to true, only the close button will close the window */
deeplinking: true, /* Allow prettyPhoto to update the url to enable deeplinking. */
overlay_gallery: true, /* If set to true, a gallery will overlay the fullscreen image on mouse over */
keyboard_shortcuts: true, /* Set to false if you open forms inside prettyPhoto */
changepicturecallback: function(){}, /* Called everytime an item is shown/changed */
callback: function(){}, /* Called when prettyPhoto is closed */
ie6_fallback: true,
markup: '<div class="pp_pic_holder"> \
<div class="ppt"> </div> \
<div class="pp_top"> \
<div class="pp_left"></div> \
<div class="pp_middle"></div> \
<div class="pp_right"></div> \
</div> \
<div class="pp_content_container"> \
<div class="pp_left"> \
<div class="pp_right"> \
<div class="pp_content"> \
<div class="pp_loaderIcon"></div> \
<div class="pp_fade"> \
<a href="#" class="pp_expand" title="Expand the image">Expand</a> \
<div class="pp_hoverContainer"> \
<a class="pp_next" href="#">next</a> \
<a class="pp_previous" href="#">previous</a> \
</div> \
<div id="pp_full_res"></div> \
<div class="pp_details"> \
<div class="pp_nav"> \
<a href="#" class="pp_arrow_previous">Previous</a> \
<p class="currentTextHolder">0/0</p> \
<a href="#" class="pp_arrow_next">Next</a> \
</div> \
<p class="pp_description"></p> \
{pp_social} \
<a class="pp_close" href="#">Close</a> \
</div> \
</div> \
</div> \
</div> \
</div> \
</div> \
<div class="pp_bottom"> \
<div class="pp_left"></div> \
<div class="pp_middle"></div> \
<div class="pp_right"></div> \
</div> \
</div> \
<div class="pp_overlay"></div>',
gallery_markup: '<div class="pp_gallery"> \
<a href="#" class="pp_arrow_previous">Previous</a> \
<div> \
<ul> \
{gallery} \
</ul> \
</div> \
<a href="#" class="pp_arrow_next">Next</a> \
</div>',
image_markup: '<img id="fullResImage" src="{path}" />',
flash_markup: '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="{width}" height="{height}"><param name="wmode" value="{wmode}" /><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="{path}" /><embed src="{path}" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="{width}" height="{height}" wmode="{wmode}"></embed></object>',
quicktime_markup: '<object classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" codebase="http://www.apple.com/qtactivex/qtplugin.cab" height="{height}" width="{width}"><param name="src" value="{path}"><param name="autoplay" value="{autoplay}"><param name="type" value="video/quicktime"><embed src="{path}" height="{height}" width="{width}" autoplay="{autoplay}" type="video/quicktime" pluginspage="http://www.apple.com/quicktime/download/"></embed></object>',
iframe_markup: '<iframe src ="{path}" width="{width}" height="{height}" frameborder="no"></iframe>',
inline_markup: '<div class="pp_inline">{content}</div>',
custom_markup: '',
social_tools: '<div class="pp_social"><div class="twitter"><a href="http://twitter.com/share" class="twitter-share-button" data-count="none">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div class="facebook"><iframe src="http://www.facebook.com/plugins/like.php?locale=en_US&href='+location.href+'&layout=button_count&show_faces=true&width=500&action=like&font&colorscheme=light&height=23" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:500px; height:23px;" allowTransparency="true"></iframe></div></div>' /* html or false to disable */
});
});
</script>
有点乱,不过官方网站就这样写的,没有条理,好在后面都写着注释,一看就明白了。
官方网址:http://www.no-margin-for-errors.com/projects/prettyphoto-jquery-lightbox-clone/
除了这两个常用的场景,它还可以画廊的形式显示一系列图片、幻灯片的播放效果等等,有待各位有兴趣的同学探索了。 附件中有sample工程
- 大小: 127.8 KB
- 大小: 214.2 KB
分享到:
相关推荐
prettyPhoto是一款广泛应用于网页设计中的图片弹出插件,它为用户提供了一种优雅的方式来展示多媒体内容,如图片、视频和嵌入式媒体。这个插件以其美观的界面和丰富的功能而受到设计师们的喜爱。在本篇文章中,我们...
图片滚动展示单击放大代码,使用prettyPhoto插件,代码兼容:IE6,IE7,IE8,Firefox,chrome 使用方法: 1.head区域引用样式文件prettyphoto.css,htmldivcss.css 2.head区域引用JS文件jquery.js,jquery....
PrettyPhoto可以处理各种类型的媒体内容,包括图片、视频等,使其在弹出窗口中无缝播放。"prettyPhoto"目录包含了这个插件的所有相关资源,如CSS样式表、JavaScript文件以及可能的图片图标。 在实际应用中,...
在网页设计和开发中,弹出层插件是不可或缺的一部分,它们可以用于展示图片、视频、内容等,为用户提供更好的浏览体验。本文将详细对比两个流行的弹出层插件:prettyPhoto和fancybox,帮助开发者选择更适合自己的...
"prettyPhoto图片滚动展示"是一个基于jQuery的轻量级弹出式图片查看插件,它扩展了传统的lightbox功能,提供了一种优雅的方式来展示网站上的多媒体内容。这个插件设计得非常用户友好,允许用户在同一个界面下浏览...
首先,prettyPhoto的核心功能是创建一个浮动在页面上的全屏或者半屏的图片展示层,这通常被称为“弹出层”或“模态窗口”。当用户点击图片链接时,prettyPhoto会将图片加载到这个弹出层中,使用户能够更专注于查看...
前端项目-prettyPhoto,prettypoto是一个基于jquery的lightbox克隆。它不仅支持图像,还添加了对视频、Flash、YouTube、iFrames的支持。这是一个全方位的媒体灯箱。设置简单快捷,而且脚本在每个主要浏览器中都是兼容...
一、prettyPhoto简介 prettyPhoto是一款基于jquery的轻量级的lightbox图片播放浏览...prettyPhoto插件的项目地址:http://www.no-margin-for-errors.com/projects/prettyphoto-jquery-lightbox-clone/ 建议英文好的
PrettyPhoto允许通过CSS调整弹出窗口的外观,例如改变边框颜色、背景透明度等。你可以在CSS文件中找到预定义的类名进行修改。此外,还可以通过JavaScript监听和响应PrettyPhoto的事件,如打开、关闭、切换等,以...
当用户点击带有该类名的元素时,prettyphoto会自动处理并弹出一个全屏的图片预览窗口,提供导航和关闭按钮。 为了使左右按钮与prettyphoto结合,可能需要在点击按钮时触发图片的预览,这可以通过调用`$.prettyPhoto...
当用户在网页上看到一个包含图片的链接时,单击该链接会启动prettyPhoto插件,将图片在一个全屏或半屏的弹出层中显示。这个弹出层不仅提供了图片的放大功能,还支持左右导航,方便用户查看图片集。此外,prettyPhoto...
它提供了类似于Lightbox的效果,使得用户可以点击图片预览并以弹出窗口的形式查看大图。prettyPhoto支持多种媒体类型,包括图像、视频(YouTube、Vimeo等)和SWF(Flash)文件。其主要功能包括: - **全屏模式**:...
jquery三级下拉菜单 基于jquery.prettyPhoto.js插件,风格清新漂亮,还有圆角效果,鼠标悬停于主菜单任意项时,若该主菜单包括有子菜单的话,会向下滑出二级菜单,若二级菜单仍有子菜单的话,会向右伸出对应的子菜单...
在网页设计中,jQuery弹出大图效果是一种常见的交互元素,它可以增强用户体验,使网站更加生动有趣。"5种jQuery弹出大图效果"这个主题涵盖了多种不同的技术,旨在实现图片预览、放大以及优雅地展示高分辨率图像。...
内容插件,可基于“ prettyPhoto”显示引擎(jQuery灯箱克隆:http://www.no-margin-for-errors.com/projects/prettyPhoto-jquery-lightbox-clone)创建简单的图片库。 文件夹中的图像或直接插入内容/文章中的图像...
不幸的是, 存储库已经好几年没有更新了,并且不包含允许 composer 安装它的bower.json 。 这个扩展不是手动复制文件或创建另一个分支来添加bower.json , bower.json定义了所需的内联存储库包。 由于 composer ...