使用 CSS3 的褪色和动画效果构建消息提醒框

使用 CSS3 的褪色和动画效果构建消息提醒框

现代Web设计技术允许开发者快速实现大多数浏览器支持的动画。我想警告消息是很常见的,因为默认的JavaScript警告框的样式往往(与你自己设计的漂亮样式)很不协调很囧。这使开发者步入找出哪种解决方案能更好地实现更友好的用户界面的道路。

在这个教程中我想解释一下我们如何能把几个将要出现在网页上方的CSS3通知框放在一起。用户可以点击这些通知框使它们逐渐淡出消失,最终将他们从DOM中移除。作为一个有趣的附加功能,我还包括了一个按钮,你可以点击它来添加一个新的警告框到页面顶部。你可以下载查看一下我的示例演示,以对我们将做的事情有一个更好的了解。

实际演示 – 下载源代码

建立页面

首先, 我们需要创建两个文件命名为“index.html” 和 “style.css”. 我将从Google CDN上调用最新的jQuery 库. HTML是非常简单的,因为我们只需要在警告框里加入一些文本. 所有的JavaScript代码被加在了页面的底部,这样可以节省HTTP请求时间.

01 <!doctype html>
02 <html lang="en-US">
03 <head>
04   <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
05   <title>CSS3 Notification Boxes Demo</title>
06   <link rel="shortcut icon" href="http://designshack.net/favicon.ico">
07   <link rel="icon" href="http://designshack.net/favicon.ico">
08   <link rel="stylesheet" type="text/css" media="all" href="style.css">
09   <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
10 </head>

头部代码设置了外部调用文件和 HTML5文档规范 . 不是很复杂因为我们只是建立一个简单的示例. 对于提示窗口我定义两个不同的样式 – 成功的和错误的. 还有一些其它风格的例如警告框和信息框, 但是我没有创建更多的,因为我更关注的是效果.

01 <div id="content">
03   <div class="notify successbox">
04     <h1>Success!</h1>
05     <span class="alerticon"><img src="images/check.png" alt="checkmark" /></span>
06     <p>Thanks so much for your message. We check e-mail frequently and will try our best to respond to your inquiry.</p>
07   </div>
08    
09   <div class="notify errorbox">
10     <h1>Warning!</h1>
11     <span class="alerticon"><img src="images/error.png" alt="error" /></span>
12     <p>You did not set the proper return e-mail address. Please fill out the fields and then submit the form.</p>
13   </div>
14    
15   <p>Click the error boxes to dismiss with a fading effect.</p>
16    
17   <p>Add more by appending dynamic HTML into the page via jQuery. Plus the notifications are super easy to customize.</p>
18    
19   <div class="btns clearfix">
20     <a href="#" id="newSuccessBox" class="flatbtn">New Success Box</a>
21     <a href="#" id="newAlertBox" class="flatbtn">New Alert Box</a>
22   </div>
23 </div><!-- @end #content -->

每个图标文件来自 免费的PSD 和UI作品. 这些图标被我调整为适当的大小.如何你需要警告/信息图标你可以变变颜色创建成你自己的. 这个类名 .notify 被添加到每一个消息DIV上. 它定义了DIV的阴影和字体类型.

其它的类例如 .successbox 和 .errorbox 充许我们改变颜色和alert窗口里的细节. 你可以看到在我的测试页里加载了两个alert窗口. 每个页面底部的按钮点击后可以在页上下方追加一个新的alert窗口.

CSS 盒子样式

我不会将太多 CSS 重置的细节,那些在我之前的教程中很明了了。我创建了一个默认的排版,并将内置 #content 的div居中。这样创建了一个允许jQuery在页面最上面添加新警告元素的盒子区域。

001 /** typography **/
002 h1 {
003   font-family'Helvetica Neue'HelveticaArialsans-serif;
004   font-size2.5em;
005   line-height1.5em;
006   letter-spacing-0.05em;
007   margin-bottom20px;
008   padding: .1em 0;
009   color#444;
010     positionrelative;
011     overflowhidden;
012     white-spacenowrap;
013     text-aligncenter;
014 }
015 h1:before,
016 h1:after {
017   content"";
018   positionrelative;
019   display: inline-block;
020   width50%;
021   height1px;
022   vertical-alignmiddle;
023   background#f0f0f0;
024 }
025 h1:before {   
026   left: -.5em;
027   margin0 0 0 -50%;
028 }
029 h1:after {   
030   left: .5em;
031   margin0 -50% 0 0;
032 }
033 h1 > span {
034   display: inline-block;
035   vertical-alignmiddle;
036   white-spacenormal;
037 }
038  
039 p {
040   displayblock;
041   font-size1.35em;
042   line-height1.5em;
043   margin-bottom22px;
044 }
045  
046  
047 /** page structure **/
048 #w {
049   displayblock;
050   width750px;
051   margin0 auto;
052   padding-top30px;
053 }
054  
055 #content {
056   displayblock;
057   width100%;
058   background#fff;
059   padding25px 20px;
060   padding-bottom35px;
061   -webkit-box-shadow: rgba(0000.10px 1px 2px 0px;
062   -moz-box-shadow: rgba(0000.10px 1px 2px 0px;
063   box-shadow: rgba(0000.10px 1px 2px 0px;
064 }
065  
066 .flatbtn {
067   -webkit-box-sizing: border-box;
068   -moz-box-sizing: border-box;
069   box-sizing: border-box;
070   display: inline-block;
071   outline0;
072   border0;
073   color#f9f8ed;
074   text-decorationnone;
075   background-color#b6a742;
076   border-color: rgba(0000.1) rgba(0000.1) rgba(0000.25);
077   font-size1.2em;
078   font-weightbold;
079   padding12px 22px 12px 22px;
080   line-heightnormal;
081   text-aligncenter;
082   vertical-alignmiddle;
083   cursorpointer;
084   text-transformuppercase;
085   text-shadow0 1px 0 rgba(0,0,0,0.3);
086   -webkit-border-radius: 3px;
087   -moz-border-radius: 3px;
088   border-radius: 3px;
089   -webkit-box-shadow: 0 1px 0 rgba(1515150.3);
090   -moz-box-shadow: 0 1px 0 rgba(1515150.3);
091   box-shadow: 0 1px 0 rgba(1515150.3);
092 }
093 .flatbtn:hover {
094   color#fff;
095   background-color#c4b237;
096 }
097 .flatbtn:active {
098   -webkit-box-shadow: inset 0 1px 5px rgba(0000.1);
099   -moz-box-shadow:inset 0 1px 5px rgba(0000.1);
100   box-shadow:inset 0 1px 5px rgba(0000.1);
101 }

让效果更醒目的网页布局非常简单。任何熟悉前端网页开发的人都应该能够将其移植到自己的样式表中。我在这个扁平按钮中使用了特殊的样好似,并生成新的警告窗口。同样的,我更新了每个.notify类元素的内部样式。

01 /** notifications **/
02 .notify {
03   displayblock;
04   background#fff;
05   padding12px 18px;
06   max-width400px;
07   margin0 auto;
08   cursorpointer;
09   -webkit-border-radius: 3px;
10   -moz-border-radius: 3px;
11   border-radius: 3px;
12   margin-bottom20px;
13   box-shadow: rgba(0000.30px 1px 2px 0px;
14 }
15  
16 .notify h1 margin-bottom6px; }
17  
18 .successbox h1 color#678361; }
19 .errorbox h1 color#6f423b; }
20  
21 .successbox h1:before, .successbox h1:after { background#cad8a9; }
22 .errorbox h1:before, .errorbox h1:after { background#d6b8b7; }
23  
24 .notify .alerticon {
25   displayblock;
26   text-aligncenter;
27   margin-bottom10px;
28 }

我设置了一些在我的布局示例中运行良好的默认假设。所有消息通知窗口都被限定为 400px 宽,并通过使用 margin: 0 auto 在页面中居中。同时,我更新了鼠标图标为手指指针,这样用户就知道该元素可点击。我们需要创建一个 jQuery 事件监听器以用于获取用户对取消通知窗口的点击,并运行相应函数。

jQuery动画

我的JS代码实际执行了两个不同的操作。我们首先检测包含在#content DIV中的任何现有.notify元素。一旦用户点击这个.notify框元素,我们需要淡出这个通知盒到透明度为0%(display: none),然后从DOM中移除()此元素。

1 $(function(){
2   $('#content').on('click''.notify'function(){
3     $(this).fadeOut(350, function(){
4       $(this).remove(); // after fadeout remove from DOM
5     });
6   });

如果你熟悉jQuery,可能首先对这个选择器感到有些奇怪。我们并不是选择#content这个div,而是在寻找这个内容容器里面的任何.notify通知框。如果你查看一下jQuery的 .on() 方法文档,你会注意到我们可以传递另外一个选择器来作为第二个参数,它将在页面被渲染后更新。 这是一个Stack Overflow里出色的帖子,它非常详细地解释了这个概念。

我的脚本的另一部分将会检查用户何时点击了页面下方的两个按钮之一。这两个按钮的ID是#newSuccessBox 和 #newAlertBox。无论用户何时点击,我们会停止加载HREF值的默认行为,代之以创建一个新的HTML块并前置在页面上。

01   // handle the additional windows
02   $('#newSuccessBox').on('click'function(e){
03     e.preventDefault();
04     varsamplehtml = $('<div class="notify successbox"> <h1>Success!</h1> <span class="alerticon"><img src="images/check.png" alt="checkmark" /></span> <p>You did not set the proper return e-mail address. Please fill out the fields and then submit the form.</p> </div>').prependTo('#content');
05   });
06   $('#newAlertBox').on('click'function(e){
07     e.preventDefault();
08     varsamplehtml = $('<div class="notify errorbox"> <h1>Warning!</h1> <span class="alerticon"><img src="images/error.png" alt="error" /></span> <p>You did not set the proper return e-mail address. Please fill out the fields and then submit the form.</p> </div>').prependTo('#content');
09   });
10 });

每个函数都有它自己的变量,来包含一个我用于警告框的HTML的复制/粘贴镜像。这个HTML内容存储在一个字符串中用jQuery选择器转化为一个对象。我可以使用prependTo()方法选择这个内容DIV使新的警告框出现在页面的最上方。所有新的盒子也可以同样的方式被解除,因为它们的HTML代码和用静态HTML硬编码的盒子完全相同。

css3 notification alert windows messages jquery tutorial

实际演示 – 下载源代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值