CSS3打造的10种创意动画菜单效果
CSS3新增添了实现动画效果的新功能,通过本文,你可以对这些新功能有个初步了解。本文将为大家带来一些充满创意的菜单悬停效果。它由图标,主标题,副标题等简单的元素构成,通过CSS3最新的过渡(transition)和动画(animation)两个功能实现鼠标悬停时的动画效果
演示下载
示例中所用的图标实际上是一种网络符号字体,包含在@font-face。这种字体是有Just Be Nice工作室所开发。
标记
菜单的HTML架构是一个无序列表,其中的每个选项都是由图标跨度和内容层组成的链接元素。内容层包含主标题和副标题:
- <ul class="ca-menu">
- <li>
- <a href="#">
- <span class="ca-icon">A</span>
- <div class="ca-content">
- <h2 class="ca-main">Exceptional Service</h2>
- <h3 class="ca-sub">Personalized to your needs</h3>
- </div>
- </a>
- </li>
- ...
- </ul>
因为我们使用符号字体作为图标,我们为图标写上字母。
CSS
所有示例中的共有的样式都包含符号字体:
- @font-face {
- font-family: 'WebSymbolsRegular';
- src: url('websymbols/websymbols-regular-webfont.eot');
- src: url('websymbols/websymbols-regular-webfont.eot?#iefix') format('embedded-opentype'),
- url('websymbols/websymbols-regular-webfont.woff') format('woff'),
- url('websymbols/websymbols-regular-webfont.ttf') format('truetype'),
- url('websymbols/websymbols-regular-webfont.svg#WebSymbolsRegular') format('svg');
- font-weight: normal;
- font-style: normal;
- }
文件的路径是相对于CSS文件而言的,因此,它们应放在css目录下的websymbols中(css/websymbols/)。
用图标作为字体的好处在于,可以为它运用漂亮的效果,比如说,文本投影(text shadow)。还可以根据需求按比例放大或缩小。
每个示例中的无序列表样式都相同。我们只是让它的宽度适合,方便其居于屏幕中央:
- .ca-menu{
- padding: 0;
- margin: 20px auto;
- width: 500px;
- }
在下面的示例中,会向大家展示元素的样式是如何为最终效果服务的。
在第1个示例中,我们会研究所有元素的样式,其它示例,我们侧重对代码进行改写。
注意:以下示例中,我不会写任何浏览器特定的前缀,但是你会在示例文件夹中看到所有必要前缀。
CSS3打造的10种创意动画菜单效果-1
在示例1的堆叠菜单中,可实现各个元素的大小,以及各个菜单项的背景颜色的改变。
为列表项定义样式:
- .ca-menu li{
- width: 500px;
- height: 100px;
- overflow: hidden;
- display: block;
- background: #fff;
- -webkit-box-shadow: 1px 1px 2px rgba(0,0,0,0.2);
- -moz-box-shadow: 1px 1px 2px rgba(0,0,0,0.2);
- box-shadow: 1px 1px 2px rgba(0,0,0,0.2);
- margin-bottom: 4px;
- border-left: 10px solid #000;
- -webkit-transition: all 300ms ease-in-out;
- -moz-transition: all 300ms ease-in-out;
- -o-transition: all 300ms ease-in-out;
- -ms-transition: all 300ms ease-in-out;
- transition: all 300ms ease-in-out;
- }
过渡效果适合所有属性,因为鼠标移上时,边框颜色和背景色都会发生相应的变化。
链接元素样式见下:
- .ca-menu li a{
- text-align: left;
- display: block;
- width: 100%;
- height: 100%;
- color: #333;
- position:relative;
- }
为单个元素定义样式。
图标位于左边,它的跨度样式见下:
- .ca-icon{
- font-family: 'WebSymbolsRegular', cursive;
- font-size: 20px;
- text-shadow: 0px 0px 1px #333;
- line-height: 90px;
- position: absolute;
- width: 90px;
- left: 20px;
- text-align: center;
- -webkit-transition: all 300ms linear;
- -moz-transition: all 300ms linear;
- -o-transition: all 300ms linear;
- -ms-transition: all 300ms linear;
- transition: all 300ms linear;
- }
如你所见,我们使用了网络符号做字体。每个字母都是一个图标。
内容元素的封装见下面的样式:
- .ca-content{
- position: absolute;
- left: 120px;
- width: 370px;
- height: 60px;
- top: 20px;
- }
在代码中修改内容元素的字体值,为transition添加linear属性实现匀速过渡效果:
- .ca-main{
- font-size: 30px;
- -webkit-transition: all 300ms linear;
- -moz-transition: all 300ms linear;
- -o-transition: all 300ms linear;
- -ms-transition: all 300ms linear;
- transition: all 300ms linear;
- }
- .ca-sub{
- font-size: 14px;
- color: #666;
- -webkit-transition: all 300ms linear;
- -moz-transition: all 300ms linear;
- -o-transition: all 300ms linear;
- -ms-transition: all 300ms linear;
- transition: all 300ms linear;
- }
现在,我们进行最有趣的部分,当鼠标悬停在列表元素上时,我们会看到字体大小和颜色的变化:
- .ca-menu li:hover{
- border-color: #fff004;
- background: #000;
- }
- .ca-menu li:hover .ca-icon{
- color: #fff004;
- text-shadow: 0px 0px 1px #fff004;
- font-size: 50px;
- }
- .ca-menu li:hover .ca-main{
- color: #fff004;
- font-size: 14px;
- }
- .ca-menu li:hover .ca-sub{
- color: #fff;
- font-size: 30px;
- }
由于我们为每一个元素定义了过渡效果,切换时就会看到动画效果。
CSS3打造的10种创意动画菜单效果-2
在示例2中,我们让内容元素分别从上和下两个方向实现的动画效果。
- .ca-menu li:hover{
- background: #e1f0fa;
- }
- .ca-menu li:hover .ca-icon{
- font-size: 40px;
- color: #259add;
- opacity: 0.8;
- text-shadow: 0px 0px 13px #fff;
- }
- .ca-menu li:hover .ca-main{
- opacity: 1;
- color:#2676ac;
- -webkit-animation: moveFromTop 300ms ease-in-out;
- -moz-animation: moveFromTop 300ms ease-in-out;
- -ms-animation: moveFromTop 300ms ease-in-out;
- }
- .ca-menu li:hover .ca-sub{
- opacity: 1;
- -webkit-animation: moveFromBottom 300ms ease-in-out;
- -moz-animation: moveFromBottom 300ms ease-in-out;
- -ms-animation: moveFromBottom 300ms ease-in-out;
- }
首先定义两种动画效果。第一种将各个元素沿着Y轴下移200%(即translateY的值为200%)。另外,它的不透明度设为0(即opacity 的值设为0)。鼠标移开时,即回到原始效果,在下面代码所示的”to“后面将 translateY的值设为0%即可。
- @-webkit-keyframes moveFromBottom {
- from {
- opacity: 0;
- -webkit-transform: translateY(200%);
- }
- to {
- opacity: 1;
- -webkit-transform: translateY(0%);
- }
- }
第二种动画效果实现元素从上到下滑入,遵循同样的规则,只是相应的数要进行修改:
- @-webkit-keyframes moveFromTop {
- from {
- opacity: 0;
- -webkit-transform: translateY(-200%);
- }
- to {
- opacity: 1;
- -webkit-transform: translateY(0%);
- }
- }
CSS3打造的10种创意动画菜单效果-3
在示例3中,当鼠标悬停时,会看到背景和文本颜色发生改变,并同时伴有图标旋转和放大效果。通过改变transform属性和修改图标的字体大小的值,即可实现以上效果:
- .ca-menu li:hover{
- background-color: #000;
- }
- .ca-menu li:hover .ca-icon{
- color: #f900b0;
- font-size: 120px;
- opacity: 0.2;
- left: -20px;
- -webkit-transform: rotate(20deg);
- -moz-transform: rotate(20deg);
- -ms-transform: rotate(20deg);
- transform: rotate(20deg);
- }
- .ca-menu li:hover .ca-main{
- color: #f900b0;
- opacity: 0.8;
- }
- .ca-menu li:hover .ca-sub{
- color: #fff;
- opacity: 0.8;
- }
CSS3打造的10种创意动画菜单效果-4
示例4到示例8都采用了不同布局的菜单。各个菜单项相邻排列,呈浮动状。
- .ca-menu li{
- width: 200px;
- height: 300px;
- overflow: hidden;
- position: relative;
- float: left;
- border: 5px solid #fff;
- background: #e2f0ff;
- -webkit-box-shadow: 1px 1px 2px rgba(0,0,0,0.2);
- -moz-box-shadow: 1px 1px 2px rgba(0,0,0,0.2);
- box-shadow: 1px 1px 2px rgba(0,0,0,0.2);
- margin-right: 4px;
- -webkit-transition: all 300ms linear;
- -moz-transition: all 300ms linear;
- -o-transition: all 300ms linear;
- -ms-transition: all 300ms linear;
- transition: all 300ms linear;
- }
- .ca-menu li:last-child{
- margin-right: 0px;
- }
图标的位置在菜单项的中上位置:
- .ca-icon{
- font-family: 'WebSymbolsRegular', cursive;
- color: #c5e4f4;
- font-size: 90px;
- text-shadow: 1px 0px 1px rgba(255,255,255,0.7);
- line-height: 150px;
- position: absolute;
- width: 100%;
- height: 50%;
- left: 0px;
- top: 0px;
- text-align: center;
- -webkit-transition: all 200ms linear;
- -moz-transition: all 200ms linear;
- -o-transition: all 200ms linear;
- -ms-transition: all 200ms linear;
- transition: all 200ms linear;
- }
内容封装放在菜单项较底部位置:
- .ca-content{
- position: absolute;
- left: 0px;
- width: 100%;
- height: 50%;
- top: 50%;
- }
主标题和副标题的样式设置见下:
- .ca-main{
- font-size: 30px;
- color: #005382;
- opacity: 0.8;
- text-align: center;
- -webkit-transition: all 200ms linear;
- -moz-transition: all 200ms linear;
- -o-transition: all 200ms linear;
- -ms-transition: all 200ms linear;
- transition: all 200ms linear;
- }
- .ca-sub{
- text-align:center;
- font-size: 14px;
- color: #666;
- line-height: 40px;
- opacity: 0.8;
- -webkit-transition: all 200ms linear;
- -moz-transition: all 200ms linear;
- -o-transition: all 200ms linear;
- -ms-transition: all 200ms linear;
- transition: all 200ms linear;
- }
鼠标悬停时,我们实现图标模糊,并从上向下滑入,同时背景颜色改变,文本内容从上、下分别滑入的效果。
- .ca-menu li:hover{
- background-color: #fff;
- }
- .ca-menu li:hover .ca-icon{
- text-shadow: 0px 0px 20px #c5e4f4;
- color: transparent;
- -webkit-animation: moveFromTop 400ms ease;
- -moz-animation: moveFromTop 400ms ease;
- -ms-animation: moveFromTop 400ms ease;
- }
- .ca-menu li:hover .ca-main{
- color: #000;
- -webkit-animation: moveFromTop 300ms ease;
- -moz-animation: moveFromTop 300ms ease;
- -ms-animation: moveFromTop 300ms ease;
- }
- .ca-menu li:hover .ca-sub{
- color: #000;
- -webkit-animation: moveFromBottom 500ms ease;
- -moz-animation: moveFromBottom 500ms ease;
- -ms-animation: moveFromBottom 500ms ease;
- }
把图标的颜色设为透明(transparent),并按照下图为文本投影(text-shadow)属性赋值(产生模糊),这样图标的模糊效果也就产生了。此处的动画效果与前面几个示例相同,只不过实现从上到下的动画效果的translate值不同罢了。这里的 translateY的值设为-300%。
CSS3打造的10种创意动画菜单效果-5
在本示例中,我们可实现:图标自左向右,第一排文字自右向左,第二排文字自下向上同时滑动出现。
- .ca-menu li:hover{
- background:#fff;
- }
- .ca-menu li:hover .ca-icon{
- color: #afa379;
- font-size: 90px;
- opacity: 0.1;
- -webkit-animation: moveFromLeft 400ms ease;
- -moz-animation: moveFromLeft 400ms ease;
- -ms-animation: moveFromLeft 400ms ease;
- }
- .ca-menu li:hover .ca-main{
- color: #afa379;
- -webkit-animation: moveFromRight 300ms ease;
- -moz-animation: moveFromRight 300ms ease;
- -ms-animation: moveFromRight 300ms ease;
- }
- .ca-menu li:hover .ca-sub{
- color: #000;
- -webkit-animation: moveFromBottom 500ms ease;
- -moz-animation: moveFromBottom 500ms ease;
- -ms-animation: moveFromBottom 500ms ease;
- }
从下往上(moveFromBottom)的动画效果前面已经提过。接下来看看从左向右(moveFromLeft)的动画效果,通过将translateX的值设为-100%,实现各个元素从左向右的移动效果;translateX的值设为0%则表示,当鼠标离开时,就回到原始效果。
- @-webkit-keyframes moveFromLeft{
- from {
- -webkit-transform: translateX(-100%);
- }
- to {
- -webkit-transform: translateX(0%);
- }
- }
将translateX的值设为100%即可实现从右向左(moveFromRight )的动画效果。
CSS3打造的10种创意动画菜单效果-6
本示例实现的效果:主标题从左滑入,同时伴有旋转效果:
- .ca-menu li:hover{
- background-color: #000;
- }
- .ca-menu li:hover .ca-icon{
- color: #fff;
- font-size: 90px;
- }
- .ca-menu li:hover .ca-main{
- color: #00ccff;
- -webkit-animation: moveFromLeftRotate 300ms ease;
- -moz-animation: moveFromLeftRotate 300ms ease;
- -ms-animation: moveFromLeftRotate 300ms ease;
- }
- .ca-menu li:hover .ca-sub{
- color: #fff;
- -webkit-animation: moveFromBottom 500ms ease;
- -moz-animation: moveFromBottom 500ms ease;
- -ms-animation: moveFromBottom 500ms ease;
- }
该效果(moveFromLeftRotate)的实现代码:
- @-webkit-keyframes moveFromLeftRotate{
- from {
- -webkit-transform: translateX(-100%) rotate(-90deg);
- }
- to {
- -webkit-transform: translateX(0%) rotate(0deg);
- }
- }
CSS3打造的10种创意动画菜单效果-7
在本示例中,我们将副标题放置在最底部。
- .ca-sub{
- text-align:center;
- font-size: 14px;
- color: #666;
- line-height: 40px;
- opacity: 0.8;
- position: absolute;
- bottom: 0;
- width: 100%;
- -webkit-transition: all 200ms linear;
- -moz-transition: all 200ms linear;
- -o-transition: all 200ms linear;
- -ms-transition: all 200ms linear;
- transition: all 200ms linear;
- }
我们希望副标题从下往上滑入,同时改变背景色的动画效果。
- .ca-menu li:hover{
- background-color: #000;
- }
- .ca-menu li:hover .ca-icon{
- color: #ff2020;
- -webkit-animation: moveFromBottom 300ms ease;
- -moz-animation: moveFromBottom 300ms ease;
- -ms-animation: moveFromBottom 300ms ease;
- }
- .ca-menu li:hover .ca-main{
- color: #ff2020;
- -webkit-animation: smallToBig 300ms ease;
- -moz-animation: smallToBig 300ms ease;
- -ms-animation: smallToBig 300ms ease;
- }
- .ca-menu li:hover .ca-sub{
- color: #000;
- background-color: #ff2020;
- -webkit-animation: moveFromBottom 500ms ease;
- -moz-animation: moveFromBottom 500ms ease;
- -ms-animation: moveFromBottom 500ms ease;
- }
图标从下往上滑入,同时,主标题则由小变大。
- @-webkit-keyframes smallToBig{
- from {
- -webkit-transform: scale(0.1);
- }
- to {
- -webkit-transform: scale(1);
- }
- }
由小变大( smallToBig )的动画效果展示了如何使用CSS3的变换处理(transform)中的scale属性。
CSS3打造的10种创意动画菜单效果-8
本示例要实现鼠标悬停时,列表项所有内容都放大的效果。
菜单中的心形图标还有一个特殊的切换效果。当鼠标悬停时,通过运用由小变大和不断循环交替的特殊方式来实现可爱的心跳动画效果。
- .ca-menu li:hover{
- background-color: #000;
- z-index:999;
- -webkit-transform: scale(1.1);
- -moz-transform: scale(1.1);
- -ms-transform: scale(1.1);
- -o-transform: scale(1.1);
- transform: scale(1.1);
- }
- .ca-menu li:hover .ca-icon{
- color: #ccff00;
- font-size: 90px;
- opacity:0.3;
- }
- .ca-menu li:hover .ca-icon#heart{
- -webkit-animation: smallToBig 900ms alternate infinite ease;
- -moz-animation: smallToBig 900ms alternate infinite ease;
- -ms-animation: smallToBig 900ms alternate infinite ease;
- }
- .ca-menu li:hover .ca-main{
- color: #ccff00;
- -webkit-animation: smallToBig 300ms ease;
- -moz-animation: smallToBig 300ms ease;
- -ms-animation: smallToBig 300ms ease;
- }
- .ca-menu li:hover .ca-sub{
- color: #ccff00;
- -webkit-animation: moveFromBottom 500ms ease;
- -moz-animation: moveFromBottom 500ms ease;
- -ms-animation: moveFromBottom 500ms ease;
- }
CSS3打造的10种创意动画菜单效果-9
示例9和示例10都是环形的菜单结构,所以我们会对列表中的元素更换样式。
- .ca-menu li{
- width: 230px;
- height: 230px;
- border: 10px solid #f6f6f6;
- overflow: hidden;
- position: relative;
- float:left;
- background: #fff;
- margin-right: 4px;
- -webkit-box-shadow: 1px 1px 2px rgba(0,0,0,0.2);
- -moz-box-shadow: 1px 1px 2px rgba(0,0,0,0.2);
- box-shadow: 1px 1px 2px rgba(0,0,0,0.2);
- -webkit-border-radius: 125px;
- -moz-border-radius: 125px;
- border-radius: 125px;
- -webkit-transition: all 400ms linear;
- -moz-transition: all 400ms linear;
- -o-transition: all 400ms linear;
- -ms-transition: all 400ms linear;
- transition: all 400ms linear;
- }
为了创建环形,我们要把圆角的值改为元素的外宽度/高度的一半。 将所有元素全部放在列表项中,并居中。下面我们实现鼠标悬停时的效果。
- .ca-menu li:hover{
- background: #f7f7f7;
- border-color: #fff;
- -webkit-transform: rotate(360deg);
- -moz-transform: rotate(360deg);
- -o-transform: rotate(360deg);
- -ms-transform: rotate(360deg);
- transform: rotate(360deg);
- }
- .ca-menu li:hover .ca-icon{
- color: #555;
- font-size: 60px;
- }
- .ca-menu li:hover .ca-main{
- display: none;
- }
- .ca-menu li:hover .ca-sub{
- opacity: 0.8;
- }
本例所实现的效果:菜单项旋转360°,主标题消失,副标题出现(不透明度开始的值为0)。
CSS3打造的10种创意动画菜单效果-10
最后一个例子中,每个菜单项的左外边距都是48像素,且相互重叠。当鼠标移上去时,环形菜单项整体变大,菜单的堆叠顺序也上移(z-index是决定元素的堆叠顺序)。最终就呈现出菜单项上浮的效果。
- .ca-menu li:hover{
- border-color: #333;
- z-index: 999;
- -webkit-transform: scale(1.1);
- -moz-transform: scale(1.1);
- -o-transform: scale(1.1);
- -ms-transform: scale(1.1);
- transform: scale(1.1);
- }
- .ca-menu li:hover .ca-icon{
- color: #000;
- font-size: 60px;
- text-shadow: 0px 0px 1px #000;
- -webkit-animation: moveFromBottom 300ms ease;
- -moz-animation: moveFromBottom 300ms ease;
- -ms-animation: moveFromBottom 300ms ease;
- }
- .ca-menu li:hover .ca-main{
- color: #000;
- -webkit-animation: moveFromBottom 500ms ease;
- -moz-animation: moveFromBottom 500ms ease;
- -ms-animation: moveFromBottom 500ms ease;
- }
我希望大家能从这些小实验上找到灵感和创意。
请注意,所有这些动画和过渡效果都只能在诸如Google Chrome,苹果的Safari,Mozilla Firefox等现代浏览器中生效。(jaysming)
摘自 http://www.okajax.com/a/201204/css3_menu_6.html
CSS3打造的10种创意动画菜单效果相关推荐
- html设置字体变瘦标签,使用CSS3 font-feature-settings特性减除字体动画震颤效果
在做 GithubProfile 项目的时候,使用了数字动画展示的效果,如My GithubProfile页面中的commits,stars以及followers数字.实际使用中,由于数字字体不等宽, ...
- 这10种创意图表,能让可视化报告瞬间变得惊艳炫酷,5分钟学会
老规矩,评.论.区有惊喜! 经常跟数据打交道的人,应该都体会过做数据报告.汇报PPT.数据报表的痛苦,痛苦的来源大部分都来自于领导和老板,不管是大公司还是小公司,几乎所有的数据和工作都要体现在ppt报 ...
- 前端特效demo | 一起围观 10 种创意时钟
时钟动画应用非常广泛,我们经常会看到一些相当个性化的HTML5时钟动画.今天我们向大家分享 10 款形态各异的超时尚时钟动画,其中有圆盘时钟.创意时钟.电子时钟等,希望大家会喜欢. 文内附有时钟效果代 ...
- 纯css3开发的响应式设计动画菜单(支持ie8)
这是一个响应式设计的菜单.单击列表图标,当你显示屏大小可以完全水平放下所有菜单项时,菜单水平显示(如图1).当你的显示屏不能水平放置所有菜单项时,菜单垂直显示(如图2). 而且显示的时候是以动画的型式 ...
- html5云朵效果,纯CSS3打造逼真的多层云彩动画特效
这是一款效果非常炫酷的纯CSS3逼真的多层云彩动画特效.该特效使用多张透明的云彩PNG图片作为背景图片,使用CSS animation动画来制作云彩水平飘动的动画效果. 使用方法 HTML结构 该多层 ...
- 《怪物猎人世界》技术美术设计师:我们用这10种工具制作高品质效果
<怪物猎人世界>可以说是今年全球销量成绩最好的主机游戏产品. 据10月18日卡普空官方公布的消息,这款游戏自今年1月发售开始,全球销量已突破1000万份,刷新了该公司单款游戏销量的最高纪录 ...
- HTML5 CSS3专题 诱人的实例 CSS3打造百度贴吧的3D翻牌效果
首先感谢w3cfuns的老师~ 今天给大家带来一个CSS3制作的翻牌效果.就是鼠标移到元素上,感觉能够看到元素背后的信息. 大家假设制作考验记忆力的连连看.扑克类的游戏神马的,甚至给女朋友写一些话语, ...
- HTML5 CSS3专题 诱人的实例 CSS3打造百度贴吧的3D翻牌效果 以及图片提交
今天给大家带来一个CSS3制作的翻牌效果,就是鼠标移到元素上,感觉可以看到元素背后的信息.大家如果制作考验记忆力的连连看.扑克类的游戏神马的,甚至给女朋友写一些话语,放在使用该实例制作的相册之后都可以 ...
- 用CSS3如何实现钟摆动画的导航栏菜单效果
我们都知道,CSS3可以实现很多很酷的动画效果,而今天我们将与大家分享一期用CSS3制作的钟摆动画菜单效果,在这个动画中,我们主要采用CSS3来控制SVG图标的左右摆动效果. 首先,我们需要在HTML ...
最新文章
- nodejs安装及环境配置(windows系统)
- 浅谈错排公式的推导及应用
- Java算法--串的简单处理
- Python中的常见面试题
- 移动云亮相 2021 IDC 年度盛典 共话变革与赋能
- 基于SSM + Redis的Shiro权限管理项目
- Character的static方法
- 中兴光猫不拆机获取超级密码
- matlab零序五次谐波,基于MATLAB的高次谐波接地选线保护仿真设计
- 作业周转时间以及平均等待时间
- CIO40: 学习.遇见更优秀的自己
- SQLT(SQLTXPLAIN)
- YTU OJ 2914 Problem A xiaoping学构造函数
- Linux:ip:rx_dropped; 丢包
- 网页设计基础学习(一)
- 管理进阶——利益分配机制
- SQL Server 2005通过端口1433连接到主机127.0.0.1的TCP/IP连接失败解决方案
- Java资源大全中文版-Awesome - java
- ULua与Unity交互原理
- 海康X86平台智能相机的使用注意事项