首页 > web前端 > H5教程 > 正文

H5之13__CSS过渡、动画和变换

黄舟
发布: 2017-02-18 15:04:37
原创
2751人浏览过

一.  简介

在触摸设备上, 动画是用户手势的反馈.

在所有浏览器中,JS  是单线程执行的.    如果有异步任务, 比如 setTimeOut() ,会加入到执行队列,然后在线程变得空闲时执行。

当 定时器里面的代码执行时, 其他的代码又不能执行了。 也就是说事件处理程序是按队列顺序执行的。


立即学习前端免费学习笔记(深入)”;

由于这些原因, 我们应该尽量避免使用setTimeOut() 动画,  可以使用CSS 过渡(transition ) 实现同样的效果,而且体验更好.

二.   过渡(transition)

CSS 过渡是能用 CSS 实现的最简单的动画。 过渡的强大之处是,它是在独立于 JS 执行 线程的另一个线程中执行的。

使用动画 能有一个更动态的界面, 并仍然能让事件处理程序保持快速运行。

一个理念: 任何可实现动画的 CSS 属性, 都可以用一个过渡来实现动画。

已设置动画的 CSS属性值的改变会触发动画。 使用 CSS tranition 属性来应用过渡。

语法如下: 

transition: [property] [duration] [timing-function] [delay]  ;

Swapface人脸交换
Swapface人脸交换

一款创建逼真人脸交换的AI换脸工具

Swapface人脸交换 45
查看详情 Swapface人脸交换

所有的值都是可选的.

例如:  transition: color 1s  ease-out,  指定了一个在一秒内颜色变化逐渐变慢的过渡.  虽然过渡现在已经成为标准了,但还是需要前缀才能在WebKit 内核 的浏览器上使用,

在 IE,   Opera, Firefox  浏览器无需前缀了。

看一段代码, 轻触按钮时, 隐藏和显示图像的例子, 这里有淡入和淡出效果:

<body>
	<p id="touchme">
		<button class="button" id="toggle" style="width:100%; height:60px;">Toggle Picture</button>
		<p  class="picture hidden">
			<br/><br/>
			<a><img src="http://img1.2345.com/duoteimg/qqTxImg/2012/04/09/13339510584349.jpg"
					 width="320" height="256" alt="Goldfinch">
			</a>
		</p>
	</p>
</body>
登录后复制

通过CSS 来应用过渡

/***应用过渡 ***/
.picture {
  -webkit-transition: opacity 0.2s ease-out;
  -moz-transition: opacity 0.2s ease-out;
  -o-transition: opacity 0.2s ease-out;
  transition: opacity 0.2s ease-out;
  opacity: 1;
}
.picture.hidden {
  opacity: 0;
}
登录后复制

看效果图:




完整的html页面如下:

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
	<meta name="viewport" content="width=device-width">
	<title>Touch</title>
	<link rel="stylesheet" src="screen.css" charset="utf-8">
</head>
<body>
	<p id="touchme">
		<button class="button" id="toggle" style="width:100%; height:60px;">Toggle Picture</button>
		<p  class="picture hidden">
			<br/><br/>
			<a><img src="http://img1.2345.com/duoteimg/qqTxImg/2012/04/09/13339510584349.jpg"
					 width="320" height="256" alt="Goldfinch">
			</a>
		</p>
	</p>
</body>
<script src="facade.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript" charset="utf-8">
(function(){
	//查找样式选择器
	var h = document.querySelector(".picture");
	
	function fadeIn() {
		var h = document.querySelector(".picture");
		var opacity = parseFloat(h.style.opacity);
		if(opacity < 1) {
			opacity = opacity + 0.05;
			h.style.opacity = opacity;
			window.setTimeout(fadeIn, 33);
		}
	}
	
	function fadeOut() {
		var opacity = parseFloat(h.style.opacity);
		if(opacity > 0.2) {
			opacity = opacity - 0.1;
			h.style.opacity = opacity;
			window.setTimeout(fadeOut, 10);
		} else {
			h.style.opacity = 0;
		}
		
	}
	
	var hidden = true;
	function togglePicture(){
		var h = document.querySelector(".picture");
		if(hidden) {
			h.className = "picture";
			fadeIn();
			hidden = false;
		} else {
			h.className = "picture hidden";
			 fadeOut();
			hidden = true;
		}
	}

	$('.button').on('tap', function(e) {
		e.preventDefault();
		togglePicture();
		e.target.className = "active button";
	}).on('tapend', function(e) {
		e.target.className = "button";
	});
	
})();
</script>
</html>
登录后复制


css文件如下:

body {
  margin: 0;
  padding: 0;
  font-family: sans-serif;
  text-align: center;
}

.button {
  font-size: 16px;
  padding: 10px;
  font-weight: bold;
  border: 0;
  color: #fff;
  border-radius: 10px;
  box-shadow: inset 0px 1px 3px #fff, 0px 1px 2px #000;
  background: #ff3019;
  opacity: 1;
}

.active, .button:active {
  box-shadow: inset 0px 1px 3px #000, 0px 1px 2px #fff;
}

/***应用过渡 ***/
.picture {
  -webkit-transition: opacity 0.2s ease-out;
  -moz-transition: opacity 0.2s ease-out;
  -o-transition: opacity 0.2s ease-out;
  transition: opacity 0.2s ease-out;
  opacity: 1;
}
.picture.hidden {
  opacity: 0;
}
登录后复制

 以上就是H5之13__CSS过渡、动画和变换的内容,更多相关内容请关注PHP中文网(www.php.cn)!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号