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


Posted in Javascript onJanuary 14, 2014

这里所说的弹出消息指的是在网页右下角升起又下去的那种框框,在这里用到了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里测试的时候,就会发现动画本来应该是从下往上的,可是现在却是从上往下,为什么会这样子呢???
经本人多方查证,并在老师的帮助下,终于解决该问题:

这个问题的关键在于,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>
Javascript 相关文章推荐
js利用div背景,做一个竖线的效果。
Nov 22 Javascript
关于firefox的ElementTraversal 接口 使用说明
Nov 11 Javascript
JavaScript版DateAdd和DateDiff函数代码
Mar 01 Javascript
将list转换为json失败的原因
Dec 17 Javascript
使用jQuery动态加载js脚本文件的方法
Apr 03 Javascript
原生js和jQuery实现淡入淡出轮播效果
Dec 25 Javascript
微信小程序 页面传值详解
Mar 10 Javascript
vue2.0 自定义日期时间过滤器
Jun 07 Javascript
浅谈VUE监听窗口变化事件的问题
Feb 24 Javascript
微信小程序实现文字跑马灯
May 26 Javascript
原生js实现公告滚动效果
Jan 10 Javascript
在Layui中实现开关按钮的效果实例
Sep 29 Javascript
js中opener与parent的区别详细解析
Jan 14 #Javascript
解决window.opener=null;window.close(),只支持IE6不支持IE7,IE8的问题
Jan 14 #Javascript
IE与FF下javascript获取网页及窗口大小的区别详解
Jan 14 #Javascript
JavaScript自定义日期格式化函数详细解析
Jan 14 #Javascript
javascript日期对象格式化为字符串的实现方法
Jan 14 #Javascript
JS获取各种浏览器窗口大小的方法
Jan 14 #Javascript
js鼠标滑轮滚动事件绑定的简单实例(兼容主流浏览器)
Jan 14 #Javascript
You might like
php实现两个数组相加的方法
2015/02/17 PHP
PHP工程师VIM配置分享
2015/12/15 PHP
浅谈php中curl、fsockopen的应用
2016/12/10 PHP
JavaScript起点(严格模式深度了解)
2013/01/28 Javascript
Jquery自定义button按钮的几种方法
2014/06/11 Javascript
对之前写的jquery分页做下升级
2014/06/19 Javascript
基于Jquery+div+css实现弹出登录窗口(代码超简单)
2015/10/27 Javascript
javascript常用经典算法详解
2017/01/11 Javascript
JavaScript 事件流、事件处理程序及事件对象总结
2017/04/01 Javascript
详解angular用$sce服务来过滤HTML标签
2017/04/11 Javascript
Express之托管静态文件的方法
2018/06/01 Javascript
详解vuex持久化插件解决浏览器刷新数据消失问题
2019/04/15 Javascript
Vue 刷新当前路由的实现代码
2019/09/26 Javascript
Vue执行方法,方法获取data值,设置data值,方法传值操作
2020/08/05 Javascript
Python中实现远程调用(RPC、RMI)简单例子
2014/04/28 Python
python定时检查某个进程是否已经关闭的方法
2015/05/20 Python
Python列出一个文件夹及其子目录的所有文件
2016/06/30 Python
利用python批量检查网站的可用性
2016/09/09 Python
Django框架教程之正则表达式URL误区详解
2018/01/28 Python
基于MTCNN/TensorFlow实现人脸检测
2018/05/24 Python
对Python Class之间函数的调用关系详解
2019/01/23 Python
Python流程控制常用工具详解
2020/02/24 Python
python安装mysql的依赖包mysql-python操作
2021/01/01 Python
如何用Python编写一个电子考勤系统
2021/02/08 Python
孕妇内衣和胸罩:Cake Maternity
2018/07/16 全球购物
美国经典刺绣和字母儿童服装特卖:Smocked Auctions
2018/07/16 全球购物
新西兰网上购物,折扣店:BestDeals.co.nz
2019/03/20 全球购物
IGK Hair官网:喷雾、洗发水、护发素等
2020/11/03 全球购物
大专应届生个人简历的自我评价
2013/10/15 职场文书
《孔繁森》教学反思
2014/04/17 职场文书
技术合作协议书范本
2014/04/18 职场文书
大学生活动总结怎么写
2014/04/29 职场文书
运动会的口号
2014/06/09 职场文书
员工工作能力评语
2014/12/31 职场文书
财务经理岗位职责
2015/01/31 职场文书
幼儿园小班班务总结
2015/08/03 职场文书