`
zhangyaochun
  • 浏览: 2614905 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

首发一个自己写的右下角弹出菜单的jQuery插件

阅读更多

前言

 

前期也做了一些已有的类似控件调研,从可配置角度和api饱和度设计等角度简单地写了这个插件,有问题欢迎讨论

 

提供一个右下角的弹出提示窗体。

 

正文

 

功能介绍:

               1。支持常规的宽度高度设置(说明这里的设计和一般的不是很一样)

               2。支持初始显示和关闭的动画效果可配置

               3。可设置auto进行自动关闭

               4。兼容各大浏览器包括ie6下的select遮盖问题,但是需要引入插件jquery.bgiframe.js

               5。支持外部资源的应用

               6。支持关闭按钮的显示与否(这个需求也是部分调用增加的)

               7。关于内容支持html语义化的标签写入

 

/*
@右下角弹出提示窗体插件--jquery-popMessage.js
@author zhangyaochun
@baidu fe
@info 和一般的弹出窗体设计思路一样,只是可以不用考虑关闭后的remove
      只是特点在于右下角弹出同时支持开始和结束的animated的效果可配置
	  缺点是没有对外的api支持例如控制显示和隐藏
@relay jquery lib
@http://zhangyaochun.iteye.com/ 	  
*/
(function(){
    /*
	设计定位为
	作为一般的插件
	*/
    $.extend($.fn,{
	   popMessage : function(options){
	         //合并配置
             options = $.extend({},$.fn.popMessage.defaults,options);
	         
			 //render container
			 var container = $('<div></div>').addClass('Pop-Message-container').css({'width':options.width,'display':'none','height':'auto','zIndex':options.zIndex});
	         //这边为了防止ie6下select的遮盖问题
			 //思路是判断是否加载了jquery.bgiframe.js
			 if($.fn.bgiframe){
			    container.bgIframe();
			 }
			 
			 //title
			 var title = $('<div></div>').addClass('Pop-Message-title').appendTo(container);
			 title.text(options.title);
			 
			 //conWrap
			 //更改策略可以设置高度 但是container还是auto的设置的是conWrap的高度
			 var conWrap = $('<div></div>').addClass('Pop-Message-con').appendTo(container).css('height',options.height != 'auto' ? options.height : 'auto');
			 
			 //messageBody
			 var messageBody = $('<div></div>').addClass('Pop-Message-body').appendTo(conWrap);
			 
			 //增加一个尾部
			 var footer = $('<div></div>').addClass('Pop-Message-footer').appendTo(container);
			 //footer的具体
			 var footerCon = $('<input type="checkbox" class="" /><span class="noNotice">下次不在提醒</span>').appendTo(footer);
			 
			 
			 //判断是否支持远程调用
			 if(options.loadUrl != ''){
			    messageBody.load(options.loadUrl);
			 }else{
			    if(options.html){
				   messageBody.html(options.content);
				}else{
				   messageBody.text(options.content);
				}
			 }
			 
			 //关闭按钮
			 if(options.closeBtn){
			    var closeBtn = $('<span></span').addClass('Pop-Message-close').appendTo(title).hover(function(){
				    $(this).addClass('Pop-Message-close-hover');
				},function(){
				    $(this).removeClass('Pop-Message-close-hover');
				}).click(function(){
				     //其实就是调用关闭的api
				     closeMessage();
				});
			 }
			 
			 //计算右下角
			 var interval = setInterval(function(){
			       var h = (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) +document.documentElement.clientHeight -container.height() -12;
				   if(h < document.body.offsetHeight){
				       container.css('top',h+ 'px');
				   }else{
				       container.css('top',document.body.offsetHeight+ 'px');
				   }
			 },20);
			 
			 //最后在appendTo
			 container.appendTo($(document.body));
			 
			 //初始显示
			 if(options.openAnimType){
			    switch(options.openAnimType.type){
					case 'slideUp': container.slideUp(options.openAnimType.speed);
					case 'slideDown': container.slideDown(options.openAnimType.speed);
					case 'show': container.show(options.openAnimType.speed);
					case 'fadeIn': container.fadeIn(options.openAnimType.speed);
					};
			 }
			 /*container.slideDown('slow');*/
			 
			 //关闭
			 function closeMessage(){
			    if(options.closeAnimType){
			      switch(options.closeAnimType.type){
					case 'slideDown': container.slideDown(options.closeAnimType.speed);
					case 'slideUp': container.slideUp(options.closeAnimType.speed);
					case 'hide': container.hide(options.closeAnimType.speed);
					case 'fadeOut': container.fadeOut(options.closeAnimType.speed);
					};
			     }
				/* container.slideUp('slow');*/
			 }
			 
			 
			 
			 //是否自动关闭
			 if(options.auto){
			     setTimeout(function(){
				    closeMessage();
                    clearInterval(interval);
                    //container.remove();					
				 },options.time);
			 }
		}
	});

	/*
   默认设置
   */
   $.fn.popMessage.defaults ={
         title : '提醒',
		 content : '您有新的提醒',
		 closeBtn: true,   //关闭按钮是否默认显示
         width : 250,
		 height: 'auto',   //规则目前为了适应高度最后的效果是设置内容区域的高度
		 zIndex: 10000,
		 loadUrl:'',   //远程调用
		 html: false,  //支持html语义化的内容,默认关了
		 openAnimType:{'type':'slideUp','speed':'slow'},  //支持开始的动画配置
		 closeAnimType:{'type':'hide','speed':'slow'},   //支持结束的动画配置
         auto:true,   //自动关闭
		 time:4000    //定时
   }; 
})(jQuery)

/*考虑到scroll*/
$(window).scroll(function(){
    var topHeight = (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) +document.documentElement.clientHeight -$('Pop-Message-container').height() -12;
	if(topHeight < document.body.offsetHeight){
	   $('Pop-Message-container').css('top',topHeight+ 'px');
    }else{
	   $('Pop-Message-container').css('top',document.body.offsetHeight+ 'px');
    }
});
1
2
分享到:
评论
1 楼 nianshi 2011-11-02  
能有个显示就好了。。。

相关推荐

    jQuery手机端右侧弹出菜单.zip

    这个压缩包包含了一个能够实现点击右上角图标时从右侧弹出菜单的特效,同时也提供了通过代码触发弹出菜单的可能性。 jQuery是一个轻量级、高性能的JavaScript库,它的API简洁易用,使得开发人员能够快速地创建动态...

    兼容ie8的jquery圆形弹出按钮菜单插件

    针对“兼容ie8的jquery圆形弹出按钮菜单插件”,我们可以深入探讨jQuery的使用,以及如何构建兼容旧版浏览器(如IE8)的前端组件。 首先,jQuery库的核心功能包括选择器、事件处理、动画效果和Ajax操作。对于这个...

    常用Jquery插件,有弹出框、进度条和右键菜单等

    1. **基于cookie的右下角弹出广告**:此插件利用Jquery和cookie技术,在用户访问网站时,在页面右下角显示广告信息。通过cookie,插件可以记忆用户的访问状态,避免频繁弹出广告,提高用户体验。它还可以设置广告...

    jQuery响应式弹出菜单插件popmenu.zip

    《jQuery响应式弹出菜单插件popmenu:打造个性化的导航体验》 在现代网页设计中,用户体验成为了至关重要的考量因素。为了提升用户在网站上的交互体验,许多开发者选择使用JavaScript库,如jQuery,来创建动态和...

    jQuery响应式右下角悬浮图标导航菜单特效.zip

    标题中的“jQuery响应式右下角悬浮图标导航菜单特效”是指一种使用jQuery库实现的网页交互功能,这种功能通常在网站的右下角显示一个图标或按钮,当用户滚动页面时,该图标会始终保持在屏幕的可见范围内。...

    js模拟土豆官网右下角广告导航菜单.zip

    【标题】"js模拟土豆官网右下角广告导航菜单.zip" 涉及的主要知识点是使用JavaScript(特别是jQuery库)来实现动态的网页交互效果,尤其是模拟网站右下角的广告导航菜单。jQuery是一个轻量级、高性能的JavaScript库...

    jQuery菜单插件AnimatedBorderMenus.zip

    AnimatedBorderMenus 是个 jQuery 插件,用来创建各种边界隐藏菜单的动画效果,左上角,右上角,左下角,右下角等等地方的边缘菜单,用不同的方式弹出,用户可以自定义图标和菜单的内容。在线演示

    25种JQuery插件

    这个可能是一个模拟Mac风格Dock栏的jQuery插件,用于创建响应式的导航栏,提供类似Mac系统的滑动效果和缩放动画,增加网站的视觉吸引力。 7. **checkboxStyle.rar** 这个插件可能用于美化网页中的复选框...

    js+css3全屏折角导航菜单和右下角悬浮分享按钮特效.zip

    标题中的"js+css3全屏折角导航菜单和右下角悬浮分享按钮特效.zip"指的是一款结合JavaScript(JS)和CSS3技术实现的网页交互效果,包括一个全屏的折角导航菜单和页面右下角的悬浮分享按钮。这种特效能够提升网站的...

    JQuery&CSS;&CSS;+DIV实例大全.rar

    10.jquery仿卓越亚马逊网鼠标移到按钮弹出菜单的效果代码 11.jquery浮动变化的个性菜单插件floatmenu下载 12.jQuery黑色风格仿Flash版下滑菜单效果 13.jquery黑色循环滚动菜单特效插件下载 14.jquery灰色...

    jQuery菜单插件用法实例

    Keleyi菜单插件是众多jQuery菜单插件中的一种,它允许开发者以非常简单的方式创建复杂而美观的下拉式或弹出式导航菜单。此类插件不仅能够提升用户的浏览体验,还可以实现各种复杂的导航交互效果,是现代Web开发中...

    在myeclipse中添加apatna插件,用于JQUERY开发

    2. 安装插件:打开MyEclipse,进入“Window”菜单,选择“Preferences”,然后在弹出的窗口中依次点击“MyEclipse” -&gt; “Install/Update” -&gt; “Available Software Sites”。 3. 添加更新源:点击右上角的“Add.....

    jquery.dialog插件参数说明

    其中,`jQuery.dialog`插件更是为创建弹出对话框提供了丰富的功能和高度的自定义选项,极大地提升了网页的交互性和用户体验。本文将深入解析`jQuery.dialog`插件的关键参数,帮助开发者更好地理解和运用这一工具。 ...

    Eclipse配置Javascript开发环境图文教程

    - 在弹出的对话框中选择项目名称,然后系统会显示一个新的设置对话框。 - 在此对话框中选择JQuery并设置为Default,这样就只会在这个项目中使用JQuery作为默认的Profile。 完成以上步骤之后,你就可以在Eclipse中...

    Zend Studio 10 安装Aptana及配置说明

    对于熟悉jQuery的开发者,安装jQuery插件是一个不错的选择: - 打开“View Plugin Manager”(通常位于主界面左侧,若未显示可重启Zend Studio)。 - 点击右上角的绿色加号,进入插件市场。 - 在搜索框中输入关键词...

    layer界面显示

    总的来说,Layer是一个功能强大且易于使用的弹出层插件,通过结合CSS、JavaScript和图片资源,可以构建出各种各样的交互效果,提升网页的用户体验。理解并熟练掌握其用法,对于前端开发者来说是非常有价值的。

    基于jQuery实现收缩展开功能

    在当今的网页设计中,收缩展开功能被广泛应用于折叠菜单、问答组件、内容摘要以及弹出窗口等交互设计中,为用户提供简洁的界面与丰富的交互体验。 首先,通过jQuery实现收缩展开功能的基本原理是监听一个触发元素...

    Bootstrap3.3.7开发手册

    - **警告提示**:如警告警报(alerts)、模态框(modals)、弹出提示(tooltips)和弹出气泡(popovers)。 - **图像(image)**:包括响应式的图像样式,以及圆角和边框控制。 - **进度条**:显示任务完成度的进度条...

    选择搜索「Selection Search」-crx插件

    0.8.44:-修复了阻止子菜单在选项页面上被拖动/移动的错误0.8.43:-即使禁用了嵌入式弹出菜单,也启用了搜索引擎热键0.8.42:-修复了无法弹出菜单的错误当“双击打开”选项处于活动状态时,可以使用单击激活器打开-...

    ExtAspNet v2.2.1 (2009-4-1) 值得一看

    -修正了弹出菜单的位置在Firefox下不正确的BUG(feedback:eroach)。 -为TriggerBox和TwinTriggerBox增加EnableEdit属性。 -使用Hidden来显示隐藏ExtAspNet控件,而不是使用Visible属性(Visible目前设置为只读属性...

Global site tag (gtag.js) - Google Analytics