登录形式是任何动态网站的一个重要组成部分。他们为网站用户提供了一种机制来访问受限制的内容(比方 会员的账户啊,敏感的信息啊,什么的)。今天,我将做一个包含很多像文字阴影,阴影框,线性渐变和过渡的特效的建立一个堆叠纸外观与古朴典雅的登录表单。最终做出来的效果如下所示
1. 创建基本的html标记
html标记我们将使用符合html5属性的标记来声明,里面包含<head>和<title>标记在bod标签内,当然其中肯定也要有一个section标签 ,这个标签来定义内容的宽度和对齐方式,我们也定义一个CSS样式通过给<section class="定义的类">来具体的控制样式,然后在正文内容添加一个<form>标签,增加两个input文本框,分别是邮件和密码 通过一个sumbit提交按钮来提交,值得注意的的是我们把 input type="email"属性,这是html5当中的声明,并且在旧的浏览器当中他会自动转换成符合旧浏览器的属性
创建的html代码如下
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-type" content="text/html; charset=utf-8"> 5 <title>Simple Login Form</title> 6 <link rel="stylesheet" href="master.css"> 7 <link href='http://fonts.googleapis.com/css?family=Open+Sans:400,700,600' rel='stylesheet' type='text/css'> 8 </head> 9 <body> 10 <div class="wrap"> 11 <div class="stacked"> 12 <h2>Login</h2> 13 <form action="" method="post" id="login"> 14 <div class="field"> 15 <label for="email">Email</label> 16 <input type="email" name="email" id="email" class="text-input" placeholder="john@doe.com" /> 17 </div> 18 <!--field--> 19 20 <div class="field"> 21 <label for="password">Password</label> 22 <input type="password" name="password" id="password" class="text-input" placeholder="Secret Password" /> 23 </div> 24 <!--field--> 25 26 <div class="action clearfix"> 27 <input type="submit" /> 28 </div> 29 <!--action--> 30 </form> 31 </div> 32 <!--stacked--> 33 </div> 34 <!--wrap--> 35 </body> 36 </html>
创建完之后的样式预览
2. 添加基本的css样式属性
创建一个新的CSS样式文件命名为master.css,在这个css文件当中要我要创建一些基本的CSS定义,包含body的背景图片,对各种浏览器的兼容性代码,在这个例子当中我使用开放的sans 字体关于这个字体,你可以访问谷歌的web字体 如下面的代码定义了body和html属性
1 /* --------Base Styles--------- */ 2 body, html { 3 margin: 0; 4 padding: 0; 5 } 6 7 body { 8 background: url("http://images.cnblogs.com/cnblogs_com/web8cn/331616/o_bg.png") left top repeat; 9 font: 16px/1.5 "Open Sans", Helvetica, Arial, sans-serif; 10 } 11 12 div.wrap { 13 400px; 14 margin: 80px auto; 15 }
3。叠纸效果
这个是最重要的一部分CSS代码效果了
现在是开始基本的布局了,我先设计一个表格,获得叠纸的效果,我将使用将使用:after
和:before
伪元素。这些伪元素大多用于视觉效果;
伪元素:before 被用作要展现的选择的内容之前,伪元素:after就不用说了吧,^^
给seciton元素定义一个 stacked的类,规定 宽度是400PX 高度是300PX,此外将登录框的背景颜色设为较深的灰色#f6f6f6,边框设为1PX颜色是#bbb,(效果可以自己看看),这里最最要的还是边界半径的渲染和阴影效果,不过我这里用"-moz-"和"-webkit-"前缀属性定义他们在不同浏览器的显示效果,哈哈
边界半径 border-radius声明非常简单,用于创建圆角,宽度是3PX。box-shadow框阴影声明的语法写起来复杂,将要一个个的定义,废话少说,CSS代码如下
1 /* --------Border Radius--------- */ 2 -webkit-border-radius: 3px; 3 -moz-border-radius: 3px; 4 border-radius: 3px; 5 6 /* --------Box Shadow--------- */ 7 -webkit-box-shadow: 0 0 3px rgba(0,0,0,.2); 8 -moz-box-shadow: 0 0 3px rgba(0,0,0,.2); 9 box-shadow: 0 0 3px rgba(0,0,0,.2);
上面的CSS代码x和y坐标的偏移量是3PX,其次是阴影颜色的声明,
1 .stacked { 2 background: #f6f6f6; 3 border: 1px solid #bbb; 4 height: 300px; 5 margin: 50px auto; 6 position: relative; 7 400px; 8 -webkit-box-shadow: 0 0 3px rgba(0,0,0,.2); 9 -moz-box-shadow: 0 0 3px rgba(0,0,0,.2); 10 box-shadow: 0 0 3px rgba(0,0,0,.2); 11 12 -webkit-border-radius: 3px; 13 -moz-border-radius: 3px; 14 border-radius: 3px; 15 }
现在,我们已经创造了基本的边界框的形式,下面开始创建伪元素前后的代码
1 .stacked:after, 2 .stacked:before { 3 background: #f6f6f6; 4 border: 1px solid #aaa; 5 bottom: -8px; 6 content: ''; 7 height: 250px; 8 left: 2px; 9 position: absolute; 10 394px; 11 z-index: -10; 12 -webkit-box-shadow: 0 0 3px rgba(0,0,0,.2); 13 -moz-box-shadow: 0 0 3px rgba(0,0,0,.2); 14 box-shadow: 0 0 3px rgba(0,0,0,.2); 15 16 -webkit-border-radius: 3px; 17 -moz-border-radius: 3px; 18 border-radius: 3px; 19 } 20 21 .stacked:before { 22 bottom: -14px; 23 left: 5px; 24 388px; 25 -webkit-border-radius: 3px; 26 -moz-border-radius: 3px; 27 border-radius: 3px; 28 29 -webkit-box-shadow: 0 0 15px rgba(0,0,0,0.5); 30 -moz-box-shadow: 0 0 15px rgba(0,0,0,0.5); 31 box-shadow: 0 0 15px rgba(0,0,0,0.5); 32 }
代码:after和伪元素:before几乎完全类似。唯一要注意的是,这些伪元素绝对定位与边界框。每个伪元素逐步降低几个像素,来呈现一种叠纸的外观
4。输入字段
在HTML标记中,我添加了一个“文字输入”的电子邮件字段和密码字段的类,下面对这些类进行声明
1 form input.text-input { 2 outline: 0; 3 display: block; 4 330px; 5 padding: 8px 15px; 6 border: 1px solid gray; 7 font-size: 16px; 8 font-weight: 400; 9 10 -webkit-border-radius: 25px; 11 -moz-border-radius: 25px; 12 border-radius: 25px; 13 14 box-shadow: inset 0 2px 8px rgba(0,0,0,0.3); 15 }
在这里,我再次使用边界半径和阴影声明。在文本字段的情况下,边界半径被赋予了更高的像素,以确保更多的曲率。
5。提交按钮
我要完成的最后一部分是submit按钮。输入字段类似,我会提交“按钮的使用边界半径属性25px。一个box-shadow属性与Y-偏移量为1px,还添加了一个“内阴影”的效果.CSS代码如下
1 form input[type='submit'] { 2 float: right; 3 padding: 10px 20px; 4 display: block; 5 cursor: pointer; 6 7 font-size: 16px; 8 font-weight: 700; 9 color: #fff; 10 text-shadow: 0 1px 0 #000; 11 background-color: #0074CC; 12 border: 1px solid #05C; 13 14 -webkit-border-radius: 25px; 15 -moz-border-radius: 25px; 16 border-radius: 25px; 17 18 background-image: -moz-linear-gradient(top, #08C, #05C); 19 background-image: -ms-linear-gradient(top, #08C, #05C); 20 background-image: -webkit-linear-gradient(top, #08C, #05C); 21 background-image: linear-gradient(top, #08C, #05C); 22 23 -webkit-box-shadow: inset 0 1px 0px rgba(255, 255, 255, 0.5); 24 -moz-box-shadow: inset 0 1px 0px rgba(255, 255, 255, 0.5); 25 box-shadow: inset 0 1px 0px rgba(255, 255, 255, 0.5); 26 }
这里要注意的最重要的是为这个按钮添加渐变的声明。对于这个submit按钮,我们将增加一个线性渐变,从#08C#05C。这个效果就完成了,以后在用到这样叠纸的效果你就可以下载使用了