CSS3 触发animation和@keyframes定义的动画

重新触发CSS3 animation和@keyframes定义的动画
结合CSS3的animation和@keyframes可以给元素定义动画,定义一个标题进入的动画如下:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>重新触发CSS3 animation和@keyframes定义的动画</title>
	<style type="text/css">
		@keyframes my-animation {        
		  from {
		    opacity : 0;
		    left : -500px;
		  }
		  to {
		    opacity : 1;
		    left : 0;
		  }      
		}
		.run-animation {
		  position: relative;
		  animation: my-animation 2s ease;
		}
		#logo {
		  text-align: center;
		}
		/* @keyframes定义了效果,样式从左侧向右侧移动,由透明变为不透明。animation定义了动画,使用效果my-animation,耗时2秒,渐入。 */
	</style>
</head>
<body>
	<h2>重新触发CSS3 animation和@keyframes定义的动画</h2>
	<p>结合CSS3的animation和@keyframes可以给元素定义动画,定义一个标题进入的动画如下:</p>
	<h1 id="logo" class="run-animation">
	  你好(点击重新运行)
	</h1>
	<!-- 直接在元素上添加class run-animation,它只会运行一次。 -->
	<!-- 重新运行动画
添加了动画的元素,只会在元素第一次渲染时才会触发动画,如果需要重新动画,需要对元素进行定位操作,步骤如下:

1. 删除元素已添加的动画class
2. 对元素做定位操作
3. 添加原来的动画class
 -->
<script type="text/javascript">
	var element = document.getElementById("logo");
	// 监听触发动画的事件,如click
	element.addEventListener("click", function(e){
		e.preventDefault;
		// 1、删除动画的class
		element.classList.remove("run-animation");
		// 2、改变元素的offsetWidth
		element.offsetWidth=element.offsetWidth;
		// 3、重新添加动画的class
		element.classList.add("run-animation");
	}, false);
</script>
</body>
</html>

//需要注意的是再严格模式下,element.offsetWidth=element.offsetWidth是不生效的,替代方案:

void element.offsetWidth
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
@keyframes 是用来定义关键帧动画的关键字,它接受一个参数来指定动画的名称。参数的格式为标识符,可以是任何有效的 CSS 标识符,比如字母、数字、下划线等。 语法示例: ```css @keyframes animationName { /* 定义动画的关键帧 */ } ``` 在上面的示例中,animationName 是动画的名称,您可以自定义一个有意义的名称来标识您的动画。然后在其他的 CSS 规则中使用 animation 属性将这个名称应用到元素上,从而触发动画效果。 关键帧动画是通过在 @keyframes 规则中定义一系列关键帧来实现的。每个关键帧表示动画在不同时间点上的样式状态。您可以使用百分比或关键字来定义关键帧。 例如,下面是一个简单的 @keyframes 规则的示例: ```css @keyframes slide-in { 0% { opacity: 0; transform: translateX(-100%); } 100% { opacity: 1; transform: translateX(0); } } ``` 在上述示例中,slide-in 是动画的名称,定义了两个关键帧(0% 和 100%),分别表示动画从开始到结束的状态。在 0% 的关键帧中,元素的透明度为 0,水平方向上移动到左边界外;在 100% 的关键帧中,元素的透明度为 1,水平方向上移动到原来的位置。 通过使用 animation 属性,将这个动画名称应用到元素上,即可触发动画效果: ```css .element { animation: slide-in 1s ease-in-out; } ``` 在上述示例中,.element 是要应用动画效果的元素类名,animation 属性将 slide-in 作为动画名称,***

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值