JQuery+CSS3实现封装弹出登录框效果

原文:JQuery+CSS3实现封装弹出登录框效果

上次发了一篇使用Javascript来实现弹出层的效果,这次刚好用了JQuery来实现,所以顺便记录一下:

因为这次使用了Bootstrap来做一个项目,但是由于不使用Bootstrap自带的JS插件,所以这个弹出登录框就自己实现封装来调用,做出来的效果其实和Bootstrap自带的效果差不多。OK,看一下效果图:

其实很简单,首先是html结构:

<div id="mask"></div>     <!-- 半透明遮罩层 -->
<div id="login">
       <h3>弹出层标题</h3>
       <div class="loginCon">
                 表单内容
        </div>
</div>

然后先设置一下css样式:

#mask{
    background-color:#000;
    opacity:0.5;
    filter: alpha(opacity=50);
    position:absolute;
    left:0;
    top:0;
    z-index:9998;
    display:none;
}
#login{
    position:fixed;
    width:400px;
    z-index:9999;
    background-color:#fff;
    border-radius:15px;
    box-shadow:0 3px 4px #eee;
    display:none;
}

应该很容易理解吧,一般先将样式设置好,然后再添加display:none;将其默认隐藏,然后,我们通过JQuery来获取并计算遮罩层的宽高和登录框的水平垂直居中位置的top/left值。

这里我将实现登录框效果封装成一个函数:

//弹出层
function openDialog(id,className)
{
    var mask = $(‘#mask‘);
    var login = $(‘#‘+id);
    var sWidth = $(document.body).outerWidth(true);   //获取窗口文档body的总宽度,包括border和padding
    var sHeight = $(document.body).outerHeight(true);   //获取窗口文档body的总高度,包括border和padding
    var cHeight = $(window).height();                 //获取浏览器窗口的可视区高度
    var lWidth = login.width();                     //登录框的宽度
    var lHeight = login.height();                  //登录框的高度
    var left = (sWidth - lWidth) / 2;              //计算登录框的left值:等于总宽度减去登录框宽度再除以2
    var top = (cHeight - lHeight) / 2;             //计算登录框的top值:等于可视区高度减去登录框高度再除以2
    mask.css({
        ‘display‘: ‘block‘,
        ‘width‘: sWidth + ‘px‘,
        ‘height‘: sHeight + ‘px‘
    });
    login.css({
        ‘display‘: ‘block‘,
        ‘top‘: top + ‘px‘,
        ‘left‘: left + ‘px‘
    }).addClass(‘animated zoomInDown‘);          //添加动画类

    $(‘.‘ + className).click(function () {
        close();
    });
    mask.click(function () {
        close();
    });

    //隐藏遮罩层和登录框
    function close() {
        mask.css(‘display‘, ‘none‘);
        login.css(‘display‘, ‘none‘);
    }
    return false;
}

其中,函数参数中 id 指的是登录框的id值,而 className 是关闭按钮的类名,为什么不是id值而是类名呢,我的考虑是一个登录框可能不止一个关闭取消按钮,所以用类名更直接。

接下来就是通过事件调用此函数:

//登录注册
$(‘#btnLogin‘).click(function () {
    openDialog(‘login‘, ‘close‘);
    return false;
});

点击你设置的登录注册按钮来实现弹出层效果,传入你的登录框ID值 和 取消关闭按钮的类名即可,至于怎么命名就看你用于什么了,这里实现的是登录框。

这里当点击登录按钮的时候,我添加了动画效果,让登录框出来的时候是弹出来的。我使用的是animate.css里的一个效果 zoomInDown,但由于我只用这一个效果,所以不需要引入整个animate.css文件,直接拿里面zoomInDown对应的样式规则就行,如果zoomInDown效果的代码为:

@-webkit-keyframes zoomInDown {
  0% {
    opacity: 0;
    -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);
            transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);
    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
            animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
  }

  60% {
    opacity: 1;
    -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
            transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
            animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
  }
}

@keyframes zoomInDown {
  0% {
    opacity: 0;
    -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);
            transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);
    -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
            animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
  }

  60% {
    opacity: 1;
    -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
            transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
            animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
  }
}

.zoomInDown {
  -webkit-animation: zoomInDown 1s both;
          animation: zoomInDown 1s both;
}

这些效果自己写确实比较耗时,所以直接拿来用确实很方便。自己想要什么效果可以去animate.css动画库那里选一个喜欢的,然后拿对应的代码即可。

OK,这样就实现一开始的效果了。

时间: 2024-10-31 11:32:55

JQuery+CSS3实现封装弹出登录框效果的相关文章

基于jQuery鼠标点击弹出登陆框效果

基于jQuery鼠标点击弹出登陆框效果.这是一款扁平样式风格的jQuery弹出层登陆框特效.效果图如下: 在线预览   源码下载 实现的代码. html代码: <input type="button" class="one" value="点击我查看效果" /> <div class="box"> <div class="box2"> <div class=&quo

基于Jquery 简单实用的弹出提示框

引言: 原生的 alert 样子看起来很粗暴,网上也有一大堆相关的插件,但是基本上都是大而全,仅仅几句话可以实现的东西,可能要引入好几十k的文件,所以话了点时间自己写了个弹出效果,放到项目上去发现效果还不错,这里贴出来,做个备忘,有需要的同学可以拿去,也可以作为一个参考. 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.d

第一百三十三节,JavaScript,封装库--弹出登录框

JavaScript,封装库--弹出登录框 封装库,增加了两个方法 yuan_su_ju_zhong()方法,将获取到的区块元素居中到页面,chuang_kou_shi_jian()方法,浏览器窗口事件,当窗口的大小变化时触发函数 /** yuan_su_ju_zhong()方法,将获取到的区块元素居中到页面, * 注意:使用此方法时,首先要在css里将目标区块设置成(绝对定位,position: absolute;) **/ feng_zhuang_ku.prototype.yuan_su_j

ecshop实现弹出登录框

自从远通汽配商城上线到现在已经两个多月了,一个问题一直困扰着我,就是在未登录状态下,点击购买商品时,跳转到登录页面,登录后,又不能自动跳转到购物车页面,甚至连刚才浏览的商品都要重新回去查找,客户体验非常不好,在把小京东V4的注册页面整合到我们商城后,对整个系统的架构有了进一步的了解,于是就开始解决这个问题,经过两天的努力,终于实现了在未登录状态下,点击购买,弹出登录框,登录后,跳转到购物车页面.效果链接:http://www.ytpjsc.com/goods.php?id=719效果图如下:由于

JQuery实现感应鼠标弹出气泡框悬停提示的js特效

<!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> <meta http-equiv="Content-

win10锁屏或睡眠一段时间后弹不出登录框

win10锁屏或睡眠一段时间后弹不出登录框 文:铁乐与猫 通常发生在win10更新到10周年版后发生,也就是会卡在登录状态,但不见输入登录框. 我出现这种情况的时候不是很严重,一般等久些也能出现,但问题是这很闹心. 如果碰巧遇上重要或紧急事务要处理那更是遭心. 人无远虑,必有近忧. 总不能等到某天发生紧急事故,老板都站在你身后看你操作的时候而你在这个时候被win10的这个bug给挡在系统之外, 什么操作都不行,会给人一种什么感觉,那就是你到底行不行? 所以这个bug是一个很严重的炸弹,必需马上排

弹出登录框

案例弹出登录框 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> .login-header { width: 100%; text-align: center; height: 30px; font-size: 24px; line-heigh

JQuery+CSS3实现Ajax加载时loading效果

之前通过Ajax请求加载数据的时候,在数据还没有呈现出来前,为了更好的用户体验,总会弄个loading告诉用户其实内容正在加载,而不是网站崩了.但是貌似之前使用gif图片的情况比较多,可能是为了兼容各个浏览器,但是CSS3已经很强大到我们可以自己使用动画写出一个loading效果出来,然后再通过调用JQuery的ajaxStart()和ajaxStop()这两个事件处理函数,就可以实现我们想要的loading效果了. 这里主要介绍一个CSS3 loading的网站:http://cssload.

javascript实现弹出登陆框效果

先来看看效果吧 初始情况下 2.点击登陆按钮  3.点击close按钮,或者单击灰色区域后,登陆窗口会消失. html结构 <body> <span class="btn" id="BTN">login</span> </body> css样式 *{ margin: 0; padding: 0; } .btn{ position: absolute; top: 50px; right: 100px; display: