`
sarin
  • 浏览: 1748014 次
  • 性别: Icon_minigender_1
  • 来自: 大连
博客专栏
E3b14d1f-4cc5-37dd-b820-b6af951740bc
Spring数据库访问系列...
浏览量:172816
C2083dc5-6474-39e2-993e-263652d27795
Android学习笔记
浏览量:366549
5f40a095-b33c-3e8e-8891-606fcf3b8d27
iBatis开发详解
浏览量:188303
B272a31d-e7bd-3eff-8cc4-c0624ee75fee
Objective-C学习...
浏览量:98739
社区版块
存档分类
最新评论

HTML5/CSS3翻转动画(一)

阅读更多
    翻转动画效果,就是将页面的元素(文字,图片)加入围绕坐标轴翻转的效果,在Webkit内核的浏览器中,很容易实现。而其它内核暂时支持不是很好。首先,我们创建页面:
<!DOCTYPE html>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	<script type="text/javascript" src="js/jquery.js"></script>
	<title>Flip Text</title>
</head>
<body>
<div id="cover">
	<div id="coverText">
		<div id="welcomeStr1">Welcome To HTML5!</div>
		<div id="welcomeStr2">Hello World!</div>
	</div>
</div>
</body>

    代码很简单,其中仅包含两个文本信息用于测试。引入jQuery是为了后面的事件绑定,我们使用CSS3的动画支持来展示,那么下面来逐一看看CSS代码:
*{
    margin:0px;
    padding:0px;
}
#cover{
    position:absolute;
    width:100%;
    height:100%;
    min-width: 768px;
    overflow: hidden;
    background: -webkit-gradient(linear,left top, left bottom, color-stop(0, #00BDF2), color-stop(1, #003D7B));
    background: -moz-linear-gradient(top,#00BDF2, #003D7B);
}

    这段很简单,就是设置页面背景色的。这里可以在FF中看到效果。下面是对文本的CSS支持:
#coverText {
    position: absolute;
    left: 18%;
    top: 30%;
	width:64%;
	text-align:center;
}
#welcomeStr1,#welcomeStr2 {
	height: 86px;
	font-size: 64px;
	line-height: 86px;
	letter-spacing: 2px;
	color: white;
	font-family:"Courier New";
	-webkit-animation-time-function: linear;
}

    目前我们得到如下效果:

    下面设置让文字翻转的CSS3动画:
@-webkit-keyframes flip {
	0% {
		-webkit-transform: rotateY(0deg) scale(1,1);
		color: white;
	}
	70% {
		-webkit-transform: rotateY(0deg) scale(1,1);
		color: white;
	}
	100% {
		-webkit-transform: rotateY(90deg) scale(0.6,0.7);
		color: #3C4043;
	}
}

    该段代码的含义是,围绕y轴翻转文字,并在最后文字大小发生变化,并变色。当然如果想沿着x轴旋转,那么使用rotateX就可以了,这很简单。现在在CSS中补加如下代码:
	-webkit-animation: flip 5s infinite;
	-webkit-text-size-adjust: none;

    我们可以看到的效果是文字围绕y轴主键变小,并变色,最终合并到y轴,但突然还原。这个效果是没错的,因为我们只有前半部分的动画效果,而后半部分翻转回来的没有设置,也就是我们看到的主键消失但突然出现的效果了。下面继续设置CSS动画,因为翻转过去了还得翻转回来吧:
@-webkit-keyframes unflip {
	0% {
		-webkit-transform: rotateY(90deg) scale(0.6,0.7);
		color: #3C4043;
	}
	100% {
		-webkit-transform: rotateY(0deg) scale(1,1);
		color: white;
	}
}

    那么翻转回来我们定义名称为unfilp,此时不设置70%的停顿延时,直接翻转回来即可。我们看到,0%时是和上面flip中100%接上的,scale和color都是一致的。而100%是和flip中0%对应的,那么就可以达到还原的效果了。
    此时可以修改-webkit-animation来测试这一步的效果。
    好,现在问题来了,我们设置了两个CSS动画,那么怎么应用可以按顺序来执行呢,写到-webkit-animation中使用多个动画效果,好像不支持,或许是我写的不对。那么只好借助js来简单实现了。也就是事件绑定。Webkit中有个事件是webkitAnimationEnd,我们可以将两个动画绑定到这个事件上,就可以达到自动按顺序执行。我们编写一个js函数来达到这个效果:
flip = function(element, flipName, flipTime, unflipName, unflipTime) {
	if(!element){
		return;
	}
	element.style.webkitAnimation = "" + flipName + " " + flipTime;
	return $(element).bind('webkitAnimationEnd', function() {
		switch (element.style.webkitAnimationName) {
			case flipName:
				return element.style.webkitAnimation = "" + unflipName + " " + unflipTime;break;
			case unflipName:
				return element.style.webkitAnimation = "" + flipName + " " + flipTime;break;
		}
	});
};

    flip函数定义功能如下:首先判断一下element,当然可以不做,只要在调用的时候保证即可。然后给webkitAnimation赋值,就是我们定义的CSS动画名称和执行的时间。下面就是核心功能所在了。巧妙使用事件绑定和switch的返回机制。将webkitAnimationEnd按照filp动画的名称进行绑定。这里格外注意,element.style.webkitAnimation = "" + flipName + " " + flipTime;一句绑定了正向翻转的CSS动画和时间,那么为了有反向的效果,下面的Switch段是相反的,也就是case filpName时进行unflip动画。
    写好了js函数,那么我们来调用:
$(function() {
    flip($("#welcomeStr1")[0], 'flip', '1.5s', 'unflip', '0.7s');
    flip($("#welcomeStr2")[0], 'flip', '1.5s', 'unflip', '0.7s');
});

    我们把两个文本段绑定flip执行1.5秒,unflip执行0.7秒。最终我们就可以看到翻转的文字效果了:

    我们截取到一个翻转中的效果,大家可以使用webkit内核的浏览器来进行测试,就可以看到连续的翻转效果了。
    此时两个文本段的动画效果是同步的,因为我们设置的时间都是一样的,如果想不同步,修改时间就可以了,这样就能根据自己的需求来确定了。
    最后附上本文整体代码,jQuery的库那就自行去添加吧:
<!DOCTYPE html>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	<script type="text/javascript" src="js/jquery.js"></script>
	<title>Flip Text</title>
<style>
*{
    margin:0px;
    padding:0px;
}
#cover{
    position:absolute;
    width:100%;
    height:100%;
    min-width: 768px;
    overflow: hidden;
    background: -webkit-gradient(linear,left top, left bottom, color-stop(0, #00BDF2),color-stop(1, #003D7B));
    background: -moz-linear-gradient(top,#00BDF2, #003D7B);
}
#coverText {
    position: absolute;
    left: 18%;
    top: 30%;
	width:64%;
	text-align:center;
}
#welcomeStr1,#welcomeStr2 {
	height: 86px;
	font-size: 64px;
	line-height: 86px;
	letter-spacing: 2px;
	color: white;
	font-family:"Courier New";
	-webkit-animation-time-function: linear;
}

@-webkit-keyframes flip {
	0% {
		-webkit-transform: rotateY(0deg) scale(1,1);
		color: white;
	}
	70% {
		-webkit-transform: rotateY(0deg) scale(1,1);
		color: white;
	}
	100% {
		-webkit-transform: rotateY(90deg) scale(0.6,0.7);
		color: #3C4043;
	}
}
@-webkit-keyframes unflip {
	0% {
		-webkit-transform: rotateY(90deg) scale(0.6,0.7);
		color: #3C4043;
	}
	100% {
		-webkit-transform: rotateY(0deg) scale(1,1);
		color: white;
	}
}
</style>
<script type="text/javascript">
flip = function(element, flipName, flipTime, unflipName, unflipTime) {
	if(!element){
		return;
	}
	element.style.webkitAnimation = "" + flipName + " " + flipTime;
	return $(element).bind('webkitAnimationEnd', function() {
		switch (element.style.webkitAnimationName) {
			case flipName:
				return element.style.webkitAnimation = "" + unflipName + " " + unflipTime;break;
			case unflipName:
				return element.style.webkitAnimation = "" + flipName + " " + flipTime;break;
		}
	});
};

$(function() {
    flip($("#welcomeStr1")[0], 'flip', '1.5s', 'unflip', '0.7s');
    flip($("#welcomeStr2")[0], 'flip', '1.5s', 'unflip', '0.7s');
});
</script>
</head>
<body>
<div id="cover">
	<div id="coverText">
		<div id="welcomeStr1">Welcome To HTML5!</div>
		<div id="welcomeStr2">Hello World!</div>
	</div>
</div>
</body>

   本文谨抛砖引玉的介绍,欢迎交流,希望对使用者有用。
    下一篇我们继续来深入探讨HTML5/CSS3的简单动画。
  • 大小: 30.7 KB
  • 大小: 23.5 KB
4
0
分享到:
评论

相关推荐

    HTML5/CSS3翻转动画(二)

    NULL 博文链接:https://sarin.iteye.com/blog/1331326

    HTML5 3D立方体按钮动画翻转特效.zip

    &lt;title&gt;HTML5 3D立方体按钮动画翻转特效&lt;/title&gt; &lt;link rel="stylesheet" type="text/...这是一款在鼠标滑过按钮时,按钮会3D旋转到另外一个面上,显示不同的内容的HTML5 3D立方体按钮动画翻转特效。

    CSS3鼠标滑过翻转动画图标

    今天要分享的是一款CSS3鼠标滑过翻转动画图标,当我们将鼠标滑过图标时,图标中的小图案就会发生翻转。另外它还有一个特点是随着页面大小的变化,图标的尺寸也会自动适应屏幕的大小,这款CSS3小图标也比较适合用作...

    HTML5/CSS3可折叠的3D立方体动画

    最近我们已经为大家分享过很多基于HTML5和CSS3的立方体动画,比如HTML5多立方体3D翻转动画和HTML5 3D立方体图片切换动画,效果都非常惊人。今天要给大家带来另外一款CSS3 3D立方体动画,尤其在DEMO2中可以看到,鼠标...

    HTML5/CSS3实现旋转图片播放焦点图 旋转比较流畅

    HTML5焦点图可以实现很多炫酷的效果,就像这...今天我们再来分享一款另外一种效果的HTML5焦点图插件,该焦点图利用CSS3的属性实现了图片旋转的动画效果,既可以顺时针旋转,也可以逆时针旋转,并且图片旋转也比较流畅。

    html5 css3文字翻转动画效果.zip

    html5 css3文字翻转动画效果是一款基于html5 css3实现的3D立体文字翻转动画效果代码。

    CSS3 3D折叠翻转文字动画

    今天我们再来分享一款CSS3文字特效应用,和之前分享的这款HTML5/CSS3文字特效类似,它也是一款CSS3 3D折叠翻转文字动画,只要将鼠标滑过文字,文字的另一面即可像翻页一样翻转开来,呈现3D立体的视觉效果,这一切都...

    HTML5/CSS3文字投影特效 乳白阴影文字效果

    之前向大家分享过一款HTML5 Canvas字母文字颗粒动画,效果非常不错,由此可见,利用HTML5和CSS3可以方便的实现很多以前很难实现的文字特效。今天我要向大家介绍一款HTML5/CSS3文字投影特效,它的使用也很简单,HTML5...

    html5+css3文字翻转动画效果.zip

    html5+css3文字翻转动画效果.zip

    html5 css3仿谷歌卡片翻转动画特效

    html5 css3仿谷歌卡片翻转动画特效

    html5和css3炫酷图片3d翻转多米诺动画特效

    这是一款效果炫酷的html5和css3图片3d翻转多米诺动画特效插件。该插件是为移动设备定制的。该图片3d翻转插件当鼠标滑过图片时,图片变为3d立方体像多米诺骨牌一样跌倒,3d立体效果非常强烈。

    css3 html5 翻转和slide动画

    css3 + html5 + javascript 实现的翻转 和滑动动画; 将jqurey mobile的动画进行了简化,方便使用。 测试使用的是ff 11,safari 5.1.5;ie的,css存在问题,如有了解的朋友,请告之我,谢谢。

    纯CSS3实现可感知方向的卡片翻转动画

    今天我们要给大家分享一个看似简单但却非常有趣的纯CSS3动画特效,当我们将鼠标滑过一个个卡片时,卡片可以进行翻转,这个应该很容易,而且也很常见,你一定会说,这种翻转动画随便用CSS3特性就可以实现了。...

    html5+css3页面3d翻转展现导航菜单特效

    一款超级绚丽的html5、css3页面3d翻转展现导航菜单特效。点击导航按钮后,整个页面出现3d翻转动画,之后导航菜单出现。共6种效果。

    HTML5和CSS3价格表翻转切换动画特效.zip

    片段代码: &lt;style&gt; html, body, div, span, applet, object, iframe, ... 这是一款漂亮的项目价格表360度翻转代码,HTML5 CSS3价格表翻转切换动画特效,也可以改成选项卡切换、登录注册界面切换效果。

    三维几何体翻转动画 HTML5 CSS3代码特效.rar

    HTML5 CSS3实现的三维几何体翻转动画 HTML5 CSS3代码特效,按指定的顺序依次翻转,最终生成的动画效果很好玩呢,像是有人指挥呢。

    CSS3皇帝翻牌子翻转动画特效.zip

    CSS3皇帝翻牌子翻转动画特效是一款鼠标悬停到图片上翻转特效下载。

    Animate.css(css3动画库)

    Animate.css拥有多款文字特效的css3动画库效果源码,是一段拥有数十款文字特效的css3动画库代码,它预设了抖动(shake)、闪烁(flash)、弹跳(bounce)、翻转(flip)、旋转(rotateIn/rotateOut)、淡入淡出...

    JS+CSS3点击按钮3D翻转动画.zip

    JS+CSS3点击按钮3D翻转动画.zip

Global site tag (gtag.js) - Google Analytics