CSS3制作日历

目标是制作如下面DEMO显示的一个日历效果:

HTML Markup

先来看看其结构:

			<div class="calendar">
				<span class="year">2012</span>
				<span class="day">24</span>
				<span class="month">January</span>
			</div>
		

这个结构很简单,大家一看就清楚,在“div.calendar”标签中包含了三个“span”标签,分别放置的是“year”、“day”和“month”。

初步了解了制作日历的结构看,我们先来看看效果图中各个部分的效果剖析图:

上图对应的就是各标签以及其伪类所起的作用,换句话说就是使用不同的样式绘制出来不同的图形效果,接下来最主要的是样式的制作。

CSS Code

如果你看明白了上图的标记,那么您就很容易整明白下面样式所起的功能效果,下面我们分成几个部分来展示其制作过程,以及所呈现的效果:

1、日历主体制作

第一步很简单,制作日历的主体面板效果:

			.calendar {
			  width: 160px;
			  background-color: #ededef;
			  background-image: -webkit-gradient(linear, left top, left bottom, from(#ededef), to(#ccc));
			  background-image: -webkit-linear-gradient(top,  #ededef,  #ccc);
			  background-image: -moz-linear-gradient(top,  #ededef,  #ccc);
			  background-image: -o-linear-gradient(top,  #ededef,  #ccc);
			  background-image: -ms-linear-gradient(top,  #ededef,  #ccc);
			  background-image: linear-gradient(top,  #ededef,  #ccc);
			  filter: progid:DXImageTransform.Microsoft.gradient(startColorStr=‘#ededef‘, EndColorStr=‘#cccccc‘);
			  font: 30px/60px "Helvetica Neue", Arial, Helvetica, "Nimbus Sans L", sans-serif;
			  text-align: center;
			  float: left;
			  color: #000;
			  text-shadow: 0 1px 0 rgba(255,255,255,1);
			  -moz-border-radius: 3px;
			  -webkit-border-radius: 3px;
			  border-radius: 3px;
			  position: relative;
			  -moz-box-shadow: 0 2px 2px #888;
			  -webkit-box-shadow: 0 2px 2px #888;
			  box-shadow: 0 2px 2px #888;
			}
		

2、绘制日历圆孔效果

第二步,主要通过“div.calendar”标签配合“:before”和“:after”来绘制日历的圆孔效果:

			.calendar:before,
			.calendar:after {
			  content:"";
			  position: absolute;
			  top: 5px;
			  width: 8px;
			  height: 8px;
			  background-color: #111;
			  z-index:1;
			  -moz-border-radius:10px;
			  -webkit-border-radius:10px;
			  border-radius:10px;
			  -moz-box-shadow: 0 1px 1px rgba(255,255,255,1);
			  -webkit-box-shadow: 0 1px 1px rgba(255,255,255,1);
			  box-shadow: 0 1px 1px rgba(255,255,255,1);
			}
			.calendar:before {
			  left: 11px;
			}
			.calendar:after {
			  right: 11px;
			}
		

3、美化年月效果

第三步,主要给“span.year”和“span.month”标签进行样式的美化:

			.calendar span {
			  display: block;
			}
			.month,
			.year {
			  font: bold 20px/30px "Helvetica Neue", Arial, Helvetica, "Nimbus Sans L", sans-serif;
			  color:#fff;
			  text-shadow:#00365a 0 -1px 0;
			  background-color:#04599a;
			  background-image:-webkit-gradient(linear, left top, left bottom, from(#04599a), to(#00365a));
			  background-image:-webkit-linear-gradient(top,  #04599a,  #00365a);
			  background-image:-moz-linear-gradient(top,  #04599a,  #00365a);
			  background-image:-o-linear-gradient(top,  #04599a,  #00365a);
			  background-image:-ms-linear-gradient(top,  #04599a,  #00365a);
			  background-image:linear-gradient(top,  #04599a,  #00365a);
			  filter: progid:DXImageTransform.Microsoft.gradient(startColorStr=‘#04599a‘, EndColorStr=‘#00365a‘);
			  border-top:1px solid #00365a;
			  clear:both;
			  margin-top: 20px;
			}

			.month {
			  padding: 5px;
			  -moz-border-radius: 0 0 3px 3px;
			  -webkit-border-radius: 0 0 3px 3px;
			  border-radius: 0 0 3px 3px;
			  font: normal 30px/40px "Helvetica Neue", Arial, Helvetica, "Nimbus Sans L", sans-serif;
			  margin-top: 0;
			}
		

4、绘制孔钉

这一步,是通过“month:before”和“month:after”来绘制日历的左右钆钉效果:

			.calendar .month:before, .calendar .month:after{
				content:‘‘;
				float:left;
				position:absolute;
				top:-5px;
				width:4px;
				height:14px;
				background-color:#dadada;
				background-image:-webkit-gradient(linear, left top, left bottom, from(#f1f1f1), to(#aaa));
				background-image:-webkit-linear-gradient(top,  #f1f1f1,  #aaa);
				background-image:-moz-linear-gradient(top,  #f1f1f1,  #aaa);
				background-image:-o-linear-gradient(top,  #f1f1f1,  #aaa);
				background-image:-ms-linear-gradient(top,  #f1f1f1,  #aaa);
				background-image:linear-gradient(top,  #f1f1f1,  #aaa);
				filter: progid:DXImageTransform.Microsoft.gradient(startColorStr=‘#f1f1f1‘, EndColorStr=‘#aaaaaa‘);
				z-index:2;
				-moz-border-radius:2px;
				-webkit-border-radius:2px;
				border-radius:2px;
				}
			.calendar .month:before{left:13px;}
			.calendar .month:after{right:13px;}
		

5、制作day效果

这里分了两步来实现效果,首先在“span.day”制作了“日”的立体效果,然后在“day:before”上制作卷纸效果:

			.day {
			  color: #fff;
			  text-shadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0,0,0,0.1), 0 0 5px rgba(0,0,0,0.1),0 1px 3px rgba(0,0,0,0.3),0 3px 5px rgba(0,0,0,0.2),0 5px 10px rgba(0,0,0,0.25);
			  font-size: 60px;
			  margin: 0 auto 50px;
			  padding: 10px 10px 35px;
			  position: relative;
			  text-align: center;
			  width: 80px;
			  position: relative;
				background: #f3f3f3;
				background: -webkit-gradient(linear, 0% 20%, 0% 92%, from(#f3f3f3), to(#fff), color-stop(.1,#f3f3f3));
				background: -webkit-linear-gradient(0 0 270deg, #f3f3f3, #f3f3f3 10%, #fff);
				background: -moz-linear-gradient(0 0 270deg, #f3f3f3, #f3f3f3 10%, #fff);
				background: -o-linear-gradient(0 0 270deg, #f3f3f3, #f3f3f3 10%, #fff);
				border-top: 1px solid #ccc;
				border-right: 1px solid #ccc;
				-webkit-border-radius: 0 0 60px 0 / 0 0 60px 0;
				-moz-border-radius: 0 0 60px 0 / 0 0 60px 0;
				border-radius: 0 0 60px 0 / 0 0 60px 0;
				-webkit-box-shadow: -1px 2px 2px rgba(0, 0, 0, 0.2);
				-moz-box-shadow: -1px 2px 2px rgba(0, 0, 0, 0.2);
				box-shadow: -1px 2px 2px rgba(0, 0, 0, 0.2);
				}
			 .day:before{
				content:‘‘;
				width: 25px;
				height: 20px;
				position: absolute;
				bottom:0;
				right:0;
				-webkit-border-radius: 0 0 30px 0;
				-moz-border-radius: 0 0 30px 0;
				border-radius: 0 0 30px 0;
				-webkit-box-shadow: -2px -2px 5px rgba(0, 0, 0, 0.3);
				-moz-box-shadow: -2px -2px 5px rgba(0, 0, 0, 0.3);
				box-shadow:-2px -2px 5px rgba(0, 0, 0, 0.3);
				-webkit-transform:	rotate(-20deg) skew(-40deg,-3deg) translate(-13px,-13px);
				-moz-transform:	rotate(-20deg) skew(-40deg,-3deg) translate(-13px,-13px);
				-o-transform:	rotate(-20deg) skew(-40deg,-3deg) translate(-13px,-13px);
				transform: rotate(-20deg) skew(-40deg,-3deg) translate(-13px,-13px);
			 }
		

完成这一步的,我们通过CSS3制作的日历的效果就出来了,如下面的效果所示:

最终的CSS代码:

			.calendar {
				  width: 160px;
				  background-color: #ededef;
				  background-image: -webkit-gradient(linear, left top, left bottom, from(#ededef), to(#ccc));
				  background-image: -webkit-linear-gradient(top,  #ededef,  #ccc);
				  background-image: -moz-linear-gradient(top,  #ededef,  #ccc);
				  background-image: -o-linear-gradient(top,  #ededef,  #ccc);
				  background-image: -ms-linear-gradient(top,  #ededef,  #ccc);
				  background-image: linear-gradient(top,  #ededef,  #ccc);
				  filter: progid:DXImageTransform.Microsoft.gradient(startColorStr=‘#ededef‘, EndColorStr=‘#cccccc‘);
				  font: 30px/60px "Helvetica Neue", Arial, Helvetica, "Nimbus Sans L", sans-serif;
				  text-align: center;
				  float: left;
				  color: #000;
				  text-shadow: 0 1px 0 rgba(255,255,255,1);
				  -moz-border-radius: 3px;
				  -webkit-border-radius: 3px;
				  border-radius: 3px;
				  position: relative;
				  -moz-box-shadow: 0 2px 2px #888;
				  -webkit-box-shadow: 0 2px 2px #888;
				  box-shadow: 0 2px 2px #888;
				}

				.calendar:before,
				.calendar:after {
				  content:"";
				  position: absolute;
				  top: 5px;
				  width: 8px;
				  height: 8px;
				  background-color: #111;
				  z-index:1;
				  -moz-border-radius:10px;
				  -webkit-border-radius:10px;
				  border-radius:10px;
				  -moz-box-shadow: 0 1px 1px rgba(255,255,255,1);
				  -webkit-box-shadow: 0 1px 1px rgba(255,255,255,1);
				  box-shadow: 0 1px 1px rgba(255,255,255,1);
				}
				.calendar:before {
				  left: 11px;
				}
				.calendar:after {
				  right: 11px;
				}
				.calendar span {
				  display: block;
				}
				.month,
				.year {
				  font: bold 20px/30px "Helvetica Neue", Arial, Helvetica, "Nimbus Sans L", sans-serif;
				  color:#fff;
				  text-shadow:#00365a 0 -1px 0;
				  background-color:#04599a;
				  background-image:-webkit-gradient(linear, left top, left bottom, from(#04599a), to(#00365a));
				  background-image:-webkit-linear-gradient(top,  #04599a,  #00365a);
				  background-image:-moz-linear-gradient(top,  #04599a,  #00365a);
				  background-image:-o-linear-gradient(top,  #04599a,  #00365a);
				  background-image:-ms-linear-gradient(top,  #04599a,  #00365a);
				  background-image:linear-gradient(top,  #04599a,  #00365a);
				  filter: progid:DXImageTransform.Microsoft.gradient(startColorStr=‘#04599a‘, EndColorStr=‘#00365a‘);
				  border-top:1px solid #00365a;
				  clear:both;
				  margin-top: 20px;
				}

				.month {
				  padding: 5px;
				  -moz-border-radius: 0 0 3px 3px;
				  -webkit-border-radius: 0 0 3px 3px;
				  border-radius: 0 0 3px 3px;
				  font: normal 30px/40px "Helvetica Neue", Arial, Helvetica, "Nimbus Sans L", sans-serif;
				  margin-top: 0;
				}

				.calendar .month:before, .calendar .month:after{
					content:‘‘;
					float:left;
					position:absolute;
					top:-5px;
					width:4px;
					height:14px;
					background-color:#dadada;
					background-image:-webkit-gradient(linear, left top, left bottom, from(#f1f1f1), to(#aaa));
					background-image:-webkit-linear-gradient(top,  #f1f1f1,  #aaa);
					background-image:-moz-linear-gradient(top,  #f1f1f1,  #aaa);
					background-image:-o-linear-gradient(top,  #f1f1f1,  #aaa);
					background-image:-ms-linear-gradient(top,  #f1f1f1,  #aaa);
					background-image:linear-gradient(top,  #f1f1f1,  #aaa);
					filter: progid:DXImageTransform.Microsoft.gradient(startColorStr=‘#f1f1f1‘, EndColorStr=‘#aaaaaa‘);
					z-index:2;
					-moz-border-radius:2px;
					-webkit-border-radius:2px;
					border-radius:2px;
					}
				.calendar .month:before{left:13px;}
				.calendar .month:after{right:13px;}

				.day {
				  color: #fff;
				  text-shadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0,0,0,0.1), 0 0 5px rgba(0,0,0,0.1),0 1px 3px rgba(0,0,0,0.3),0 3px 5px rgba(0,0,0,0.2),0 5px 10px rgba(0,0,0,0.25);
				  font-size: 60px;
				  margin: 0 auto 50px;
				  padding: 10px 10px 35px;
				  position: relative;
				  text-align: center;
				  width:80px;
				  position: relative;
					background:#f3f3f3;
					background: -webkit-gradient(linear, 0% 20%, 0% 92%, from(#f3f3f3), to(#fff), color-stop(.1,#f3f3f3));
					background: -webkit-linear-gradient(0 0 270deg, #f3f3f3, #f3f3f3 10%, #fff);
					background: -moz-linear-gradient(0 0 270deg, #f3f3f3, #f3f3f3 10%, #fff);
					background: -o-linear-gradient(0 0 270deg, #f3f3f3, #f3f3f3 10%, #fff);
					border-top:1px solid #ccc;
					border-right:1px solid #ccc;
					-webkit-border-radius:0 0 60px 0 / 0 0 60px 0;
					-moz-border-radius:0 0 60px 0 / 0 0 60px 0;
					border-radius:0 0 60px 0 / 0 0 60px 0;
					-webkit-box-shadow: -1px 2px 2px rgba(0, 0, 0, 0.2);
					-moz-box-shadow: -1px 2px 2px rgba(0, 0, 0, 0.2);
					box-shadow: -1px 2px 2px rgba(0, 0, 0, 0.2);
					}
				 .day:before{
					content:‘‘;
					width:25px;
					height:20px;
					position: absolute;
					bottom:0;
					right:0;
					-webkit-border-radius:0 0 30px 0;
					-moz-border-radius:0 0 30px 0;
					border-radius:0 0 30px 0;
					-webkit-box-shadow: -2px -2px 5px rgba(0, 0, 0, 0.3);
					-moz-box-shadow: -2px -2px 5px rgba(0, 0, 0, 0.3);
					box-shadow:-2px -2px 5px rgba(0, 0, 0, 0.3);
					-webkit-transform:rotate(-20deg) skew(-40deg,-3deg) translate(-13px,-13px);
					-moz-transform:rotate(-20deg) skew(-40deg,-3deg) translate(-13px,-13px);
					-o-transform:rotate(-20deg) skew(-40deg,-3deg) translate(-13px,-13px);
					transform:rotate(-20deg) skew(-40deg,-3deg) translate(-13px,-13px);
				 }
		

今天有关于CSS3制作日历的教程到这里就算介绍完了,不知道您是否喜欢,如果你喜欢的话就自己也动手一试吧,或者您通过此例的制作方法,制作出更优秀的效果出来。同时希望对大家有所帮助,如果您有更好的分享,随时欢迎在下面的评论中给我们留言。

如需转载烦请注明出处:W3CPLUS

时间: 2024-10-06 00:58:57

CSS3制作日历的相关文章

CSS3制作

目标是制作如下面DEMO显示的一个日历效果: HTML Markup 先来看看其结构: <div class="calendar"> <span class="year">2012</span> <span class="day">24</span> <span class="month">January</span> </div>

CSS3制作精美日历

效果图如下,纯CSS3制作,如下图: demo预览 html如下: <div class="calendar"> <span class="year">2012</span> <span class="day">24</span> <span class="month">January</span> </div> css如下: .c

使用CSS3 制作一个material-design 风格登录界面

使用CSS3 制作一个material-design 风格登录界面 心血来潮,想学学 material design 的设计风格,就尝试完成了一个登录页面制作. 这是整体效果. 感觉还不错吧,结尾会附上代码 在编写的过程中,没有使用任何图片或者字体图标,全部使用css3完成,还是遇到一些难点和bug,所以想笔记下来,以后方便查阅. 响应式设计 在这个页面中,使用下面3点来完成响应式设计 最大宽度 .设定了一个 max-width 的最大宽度,以便在大屏幕时兼容. margin : 20px au

css3制作旋转立方体相册

css3制作旋转立方体相册 首先让我们来看一下最终效果图: 当鼠标放在图片上是介个样子滴: 是不是觉得很好看?那接下来就一起制作吧! 我个人觉得编程,首先是思路,然后是代码,一起分析一下这个效果的思路. 1.背景颜色,它属于一种渐变的背景色(当然这不是重点,可以根据自己的爱好进行设置): 2.我们可以观察一下他是有两个旋转的立方体,大立方体套小立方体: 3.点击图片的时候,外部大立方体向外延伸. 有了这个大体的思路我们就可以开始敲代码了. 1.新建文件夹 将各个不同类型的代码进行归类是很有必要的

【CSS笔记】css3制作立体导航

此例设计到:css3,伪类等. 源码: <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>CSS3制作立体导航</title> <link rel="stylesheet" href="http://www.w3cplus.com/demo/css3/base.css&q

纯CSS3制作卡通场景汽车动画效果

前言 今天分享一下我昨晚做的CSS3动画效果——卡通场景汽车动画.在接触CSS3动画之前,我之前实现一些简单的动画效果都是使用flash完成的.但是自从CSS3横空出世,在移动端对CSS3动画的运用越来越多.今天这个分享是PC端的案例,因为我做的是大场景来的,起因还是我无意间看到一张卡通图片.于是我突发灵感,就趁热打铁使用CSS3动画把它按照自己的想法实现了出来.接下来,就让我们一起进入这个好玩的分享吧! 预览 学习一个案例要有热情,就应该先看一下案例的效果,所以,下图为我录的gif图片,大家先

纯css3制作写轮眼开眼及进化过程

原文:纯css3制作写轮眼开眼及进化过程 今天是火影忍者(漫画)宣告完结的日子,也是我首发的第一个随笔.看过火影的朋友都知道,写轮眼是什么,这里就不多说了.下面就直接展示整个效果,上张图,先睹为快: 目前已经测试 IE10.Firefox浏览器.Chrome浏览器.Opera浏览器.360浏览器(两种模式)兼容已通过. 温馨提示:以上浏览器版本号均最新的:动画过程中每个阶段大约会停留5秒钟,希望你不会中幻术^_^. 在线演示 源码下载 HTML代码: 1 <div class="conta

3D Grid Effect – 使用 CSS3 制作网格动画效果

今天我们想与大家分享一个小的动画概念.这个梦幻般的效果是在马库斯·埃克特的原型应用程序里发现的??.实现的基本思路是对网格项目进行 3D 旋转,扩展成全屏,并呈现内容.我们试图模仿应用程序的行为,因此创建了两个演示,分别演示垂直和水平旋转网格项. 温馨提示:为保证最佳的效果,请在 IE10+.Chrome.Firefox 和 Safari 等现代浏览器中浏览. 您可能感兴趣的相关文章 创意无限!一组网页边栏过渡动画[附源码下载] 真是好东西!13种非常动感的页面加载动画效果 你见过吗?9款超炫的

利用avalon+原生js来制作日历空间(一)

url:http://zjingwen.github.io/SetTimeOutGoBlog/funui/fundate/index.html (如果打开过慢,或者打不开,原因你懂得.)一.思路 1.制作日历这种ui组件,我们第一步需要拿到的就是数据,我们需要知道例如今天属于,那一年.那一月.星期几. 2.数据的呈现形式应该是什么样子的,以我制作的这个为例,理性分析,以图为例,6X7的格子,我们要获得42个数据,其中当月数据占数组的中间,下月数据占数组的尾部,上月数据占数组的头部. 那么问题来了