`
niunan
  • 浏览: 721368 次
  • 性别: Icon_minigender_1
  • 来自: 南宁
社区版块
存档分类
最新评论

制作符合WEB标准的QQ弹出消息(jQuery)

阅读更多
这里所说的弹出消息指的是在网页右下角升起又下去的那种框框,在这里用到了jQuery的自定义动画,感觉这个自定义动画就是像flash里的形状和渐变动画一样,只要定义了开头和结尾的两个关键帧,中间的动画过程会自动完成,不用会jQuery的可去查下jQuery的帮助文档.

基本思路是这样子滴:首先弹出消息框其实就是一个div层,页面加载完了以后我们应该通过CSS把div层定位到页面右下角的下方,并且把他隐藏起来,然后当我们点击页面中的按钮的时候就触发动画函数,div层开始从下往上升,在这里我们为了增加视觉感,在上升的过程中有透明度的渐变,然后div层中有一个关闭按钮,点击后又触发另一个动画函数,div层就往下降,如此而已,思路想好了以后就正式开始代码的编写工作,以下是我test.html的源码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>QQ弹出消息</title>
    <style type="text/css">
        #pop{
            width: 250px;
            height: 150px;
            border: 1px solid #fcc;
            background-color: yellow;
            position: absolute;
            right: 16px;
            bottom: -150px;
            display: none;
        }
    </style>
    <script src="jquery.min.js" type="text/javascript"></script>
    <script type="text/javascript">
     $(document).ready(function() {
            $("#pop").css("opacity", 0);
			$("#btn").click(fun);
			$("#cloPop").click(fun2);
        });
        
        function fun() {   /* 弹出框从下往上慢慢升起,其中还包括了透明度的变化 */
            $("#pop").css("display", "block");
                $("#pop").animate({
                    bottom: "16px",
                    opacity: 1
                },1000);
        }

	function fun2() {   /* 弹出框从上往下降下去 */
            $("#pop").css("display", "block");
                $("#pop").animate({
                    bottom: "-150px",
                    opacity: 0
                },1000);
        }
    </script>
</head>
<body style="height: 1800px;">
    <form id="form1" runat="server">
    <div>
    <input type="button" value="缓缓升起的窗口" id="btn" />
    <div id="mes"></div>
    </div>
    </form>
    <div id="pop">
        <a href="http://g.cn" target="_blank">有新用户注册</a>
		<a id="cloPop" href="#">关闭</a>
    </div>
</body>
</html>


以上代码经测试,是有效果出来了,不过如果大家放在多个浏览器里测试一下就能看到,在IE6,IE7,IE8B2,OPERA,CHROME浏览器里的效果都是一样的,可是当你放到firefox里测试的时候,就会发现动画本来应该是从下往上的,可是现在却是从上往下,为什么会这样子呢???
经本人多方查证,并在http://learning.artech.cn老师的帮助下,终于解决该问题:

这个问题的关键在于,Firefox以html为页面的根元素,而IE以body为根元素。你设置了body为1800px高,但是在Firefox中,html元素的高度仍然是0,因此你的div#pop,实际上起点是最上面。

修改方法很简单,增加一条CSS设置即可:

html{
    height:100%;
}   

这样,一开始的时候,html的高度充满浏览器窗口,pop就到底下去了,效果和在IE中完全相同。

所以搞JS,CSS是非常重要的基础,一定要把CSS搞的非常清楚。


下面是最终源码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>QQ弹出消息</title>
    <style type="text/css">
	html{
	    height: 100%;
	}
        #pop{
            width: 250px;
            height: 150px;
            border: 1px solid #fcc;
            background-color: yellow;
            position: absolute;
            right: 16px;
            bottom: -150px;
            display: none;
        }
    </style>
    <script src="jquery.min.js" type="text/javascript"></script>
    <script type="text/javascript">
     $(document).ready(function() {
            $("#pop").css("opacity", 0);
			$("#btn").click(fun);
			$("#cloPop").click(fun2);
        });
        
        function fun() {   /* 弹出框从下往上慢慢升起,其中还包括了透明度的变化 */
            $("#pop").css("display", "block");
                $("#pop").animate({
                    bottom: "16px",
                    opacity: 1
                },1000);
        }

		function fun2() {   /* 弹出框从上往下降下去 */
            $("#pop").css("display", "block");
                $("#pop").animate({
                    bottom: "-150px",
                    opacity: 0
                },1000);
        }
    </script>
</head>
<body style="height: 1800px;">
    <form id="form1" runat="server">
    <div>
    <input type="button" value="缓缓升起的窗口" id="btn" />
    <div id="mes"></div>
    </div>
    </form>
    <div id="pop">
        <a href="http://g.cn" target="_blank">有新用户注册</a>
		<a id="cloPop" href="#">关闭</a>
    </div>
</body>
</html>


5
0
分享到:
评论
1 楼 niunan 2008-10-29  
之前把问题发到ITCAST.NET上,得到个最新的回复.
itcast.net王老师的回复 写道

关于这个问题,我又看了一下JQuery的源码。我觉得这个解答稍微一点不准确,其实设置了bottom为-160px之后,pop就已经在页面可见区域的下方了,并不需要设置了html告诉之后才使pop到底下去
我觉得之所以在firefox中出现这个问题,和FF对于getComputedStyle这个js方法的实现有关,JQuery内部在做animate之前会计算元素执行动画效果的开始和结束位置,其中开始位置会利用getComputedStyle这个方法来计算元素css的‘Computed values’ 。而这个值我理解在FF中和你提到的height是否设定有关。当没有设定html元素的高时,这个值计算出来的就是一个几百的整数(我这里是959),这就意味这JQuery将会把这个元素从bottom为959的位置移动到bottom为16的位置,所以出现了从上向下的动画效果。


牛人就牛人,研究得够深入了...

相关推荐

    利用JQuery制作符合Web标准的QQ弹出消息

    这里所说的弹出消息指的是在网页右下角升起又下去的那种框框,在这里用到了jQuery的自定义动画,感觉这个自定义动画就是像flash里的形状和渐变动画一样,只要定义了开头和结尾的两个关键帧,中间的动画过程会自动完成,...

    JQuery消息插件仿QQ消息弹出提醒

    **jQuery消息插件仿QQ消息弹出提醒** 在网页开发中,实时的用户交互和反馈是提高用户体验的关键因素之一。为了实现这样的效果,开发者经常利用JavaScript库,如jQuery,来创建各种动态效果,其中就包括模拟类似QQ的...

    jquery版web消息弹出小窗口

    "jquery版web消息弹出小窗口"指的是利用jQuery来实现一种轻量级、用户友好的Web通知功能,这种功能通常用于向用户显示实时更新的信息或者提醒,而不会中断他们的浏览体验。 在设计这样的消息弹出小窗口时,首先需要...

    jquery ui仿腾讯web qq界面desktop酷炫特效

    1. **对话框(Dialog)**:在Web QQ中,好友聊天窗口通常以弹出对话框的形式展现,jQuery UI的Dialog组件可以帮助开发者实现类似的功能,提供可定制的标题、内容、按钮和拖动行为。 2. **窗口拖放(Draggable)和可...

    仿QQ即时弹出消息框

    在实现仿QQ弹出消息框时,可以利用JQuery的函数来创建动态效果,如淡入淡出、滑动等,增强用户体验。 5. **页面刷新**:在网页刷新后,如何保持消息提示的连续性是一项挑战。这需要开发者考虑本地存储或Cookie来临...

    Jquery实现类似QQ窗口抖动效果

    在网页开发中,jQuery是一个非常流行的JavaScript库,它简化了DOM操作、事件处理以及动画制作等任务。"Jquery实现类似QQ窗口抖动效果"是一个常见的需求,常用于吸引用户注意力或者模拟即时通讯软件中的通知功能。...

    jquery点击弹出登陆窗口.rar

    // 弹出登录窗口的逻辑 }); ``` 登录窗口通常由HTML构建,可能包含输入字段(如`&lt;input type="text"&gt;`或`&lt;input type="password"&gt;`)以及提交和取消按钮。这些元素可以通过jQuery的DOM操作方法添加到页面上,或者...

    访QQ消息提示框 jquery

    在创建消息提示框时,jQuery的强大功能可以使得弹出框的实现更加便捷高效。 1. **动态显示**:动态显示指的是提示框在需要时才出现,如用户触发某个操作后。这通常涉及到jQuery的事件监听和DOM操作。例如,我们可以...

    jQuery点击弹出QQ登录框带下拉二维码登录框

    在本文中,我们将深入探讨如何使用jQuery实现一个功能丰富的QQ登录框,该登录框支持点击弹出,并且具有下拉的二维码登录选项。这在现代Web应用中是一种常见的用户认证方式,尤其对于那些希望整合社交账号登录的网站...

    jquery分享插件,分享微信、qq空间、微博、人人网

    描述中提到的分享是弹出窗形式,这通常是通过JavaScript或jQuery动态创建一个模态对话框实现的。当用户点击分享按钮时,弹出窗口显示分享选项和预设的分享内容,用户可以选择相应平台进行分享。 4. **index.html**...

    《jQuery+BootstrapWeb开发案例教程(在线实训版)》案例源码.zip

    5. **插件集成**:jQuery和Bootstrap的许多高级功能是通过插件实现的,比如轮播组件、时间线、工具提示和弹出窗口。查看源码,你可以学习如何引入和初始化这些插件,提升网页的互动性和功能多样性。 6. **性能优化*...

    仿 qq 弹出框效果

    QQ弹出框是一种常见的用户界面元素,用于向用户显示临时通知、消息提示或者进行交互操作。在网页设计中,仿照QQ的弹出框效果,能够提供一种熟悉且直观的用户体验,让用户在浏览网页时得到类似移动应用的交互感受。...

    基于jquery仿QQ相册

    【基于jQuery仿QQ相册】的知识点解析 在网页设计和开发中,创建一个美观、大气的相册功能是常见的需求。"基于jQuery仿QQ相册"项目就是针对这一需求,利用JavaScript库jQuery来实现一个类似QQ相册的交互效果。jQuery...

    jQueryMobile 仿qq侧滑删除以及动态添加

    当用户触发删除操作时,通常会弹出确认对话框,确认后向服务器发送请求,删除对应的数据。同时,前端需要同步更新显示,移除对应的列表项。 总结来说,实现“jQueryMobile 仿qq侧滑删除以及动态添加”涉及的主要...

    DIV弹出窗(兼容主流浏览器)

    在网页设计中,"DIV弹出窗(兼容主流浏览器)"是一种常见的用户界面元素,用于在用户与页面交互时提供额外的信息或者功能。这个技术基于HTML的`&lt;div&gt;`元素,通过CSS样式和JavaScript实现动态效果,以确保在各种主流...

    最新的QQ空间弹出提示插件

    QQ空间弹出提示插件是腾讯为提升用户体验而设计的一款前端交互组件,主要应用于QQ空间这一社交平台。这款插件的出现,旨在提供更加直观、及时的信息反馈,增强用户与平台之间的互动性。在本文中,我们将深入探讨弹出...

    jQuery UI仿webqq桌面系统WebOS界面操作

    点击图标会弹出一个窗口,窗口内部可能嵌入了一个iframe或者使用Ajax加载内容,以实现类似桌面应用的功能。此外,系统还可能有任务栏、通知中心、设置面板等常见桌面系统的功能。 总的来说,这个项目展示了如何利用...

    模仿QQ消息提示右下角弹出窗口提示代码源文件4种不同方式

    "模仿QQ消息提示右下角弹出窗口提示代码源文件4种不同方式"是一个专注于实现这一功能的资源,它提供了多种实现此类通知的技术手段。下面将详细阐述这四种不同的实现方式以及它们在实际应用中的价值。 首先,右下角...

    QQ弹出对话框

    "QQ弹出对话框"是一个常见的交互元素,广泛应用于即时通讯软件如QQ中,用于显示通知、提示信息或进行简单的用户交互。本文将深入探讨如何使用JavaScript实现QQ弹出对话框,并讨论其在提升用户体验上的作用。 ...

Global site tag (gtag.js) - Google Analytics