前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >面试题--CSS动画的妙用

面试题--CSS动画的妙用

作者头像
我不是费圆
发布2024-05-24 19:00:09
600
发布2024-05-24 19:00:09
举报
文章被收录于专栏:鲸鱼动画鲸鱼动画

  写一个程序,让三个按钮按不同速率向右移动,触碰到浏览器边缘时返回,效果图如下:

在这里插入图片描述
在这里插入图片描述

  是不是有同学看完题目一阵思索,准备用js监听dom 位置,判断后做反向运动?   这里用css 动画来做的话简直不费吹灰之力。   我先定义三个按钮,要求大小相同颜色不同。   然后用@keyframes 声明一个动画,再通过animation 来调用。代码及注释如下,如有疑问请在评论区留言。

代码语言:javascript
复制
<template>
	<view>
		<!-- 写一个程序,让三个button按不同速率向右移动,触碰到浏览器边缘
		 时返回,持续这种效果-->
		<button class="btn red"></button>
		<button class="btn yellow"></button>
		<button class="btn blue"></button>
		<!-- 定义公共类是为了复用css样式,
		定义私有类是为了调整animation的参数,
		以此来实现不同速率的运动 -->
	</view>
</template>
<style>
	.btn {
		width: 100rpx;
		height: 40rpx;
		margin: 10rpx;
	}
	@keyframes late{
		/*@keyframes是声明动画的关键字,late是动画名
		  0% 意味开始运动的第一帧,
		  100%意味运动的最后一帧。
		  50%的作用是触碰屏幕右侧,实现回弹。
		*/
		0%{transform:translateX(0);}
		/*这里用到了一个CSS 函数, calc,意味计算,此内置方法可直接使用
		  120rpx 包含了 button自身的宽度100rpx,以及屏幕左右两侧的留白(约20rpx)
		  计算后的结果是button可以移动的最远距离,即屏幕右侧。
		*/	
		50%{transform:translateX(calc(100% - 120rpx));}
		100%{transform:translateX(0);}
	}
	.red {
		background-color: red;
		/*调用自定义动画,参数依次为:动画名,持续时长,循环次数*/
		animation: late 3s infinite;
	}
	.yellow {
		background-color: yellow;
		/*因持续时长不同,有3s走完全程,有4s走完全程,故而速率不同*/
		animation: late 4s infinite;
	}
	.blue {
		background-color: blue;
		/*还可以调整移动速率及动画延迟,顺序如下:
		  动画名,持续时长,匀速运动,仅发动两次,延迟1s后发动*/
		animation: late 5s linear 2 1s;
	}
</style>

  如有疑问请在下方评论区留言,博主每天都在,原创不易,请支持下推荐阅读。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-05-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档