-
关于css3中transition动画实现input输入框特效的总结(项目总结)
2018-08-24 11:23:28最近在项目中,产品经理要求实现input框的一种特效,由于这个页面是用vue写的,所以就在github上找有vue有关这方面的组件,结果引入之后就出现了很多问题,首先这个vue项目用的ui框架是饿了吗开发的Mint UI,里面...最近在项目中,产品经理要求实现input框的一种特效,由于这个页面是用vue写的,所以就在github上找有vue有关这方面的组件,结果引入之后就出现了很多问题,首先这个vue项目用的ui框架是饿了吗开发的Mint UI,里面没有这种效果,然后又借鉴了一下vonic这个ui框架,但是引入的时候有些不兼容。无奈之下就自己写了一下这个特效,顺便又学习了一下动画效果。
其实最主要用到css3的动画特性是transition。那我们先介绍一下transition这个动画属性,transition的属性主要是(介绍截自w3c)语法 transition: property duration timing-function delay;
**值 描述
transition-property 规定设置过渡效果的 CSS 属性的名称。
transition-duration 规定完成过渡效果需要多少秒或毫秒。
transition-timing-function 规定速度效果的速度曲线。
transition-delay 定义过渡效果何时开始。**
好了,下面是更为详细的介绍:
过渡属性【1】transition-property:
规定应用过渡效果的 CSS 属性的名称(当指定的CSS属性改变时,过渡效果开始),其默认值为 all 。
【2】transition-duration:
规定完成过渡效果需要的时间(单位为 s 或 ms),其默认值为 0s ,意味着如果不指定这个属性,将不会呈现过渡效果。
【3】transition-timing-function:
规定过渡效果的时间曲线。
默认 ease :慢速开始,中间变快,慢速结束;相当于 cubic-bezier(0.25, 0.1, 0.25, 1)。
可选 liner:匀速运动;相当于 cubic-bezier(0, 0, 1, 1)。
可选 ease-in:慢速开始;相当于 cubic-bezier(0.42, 0, 1, 1)。
可选 ease-out:慢速结束;相当于 cubic-bezier(0, 0, 0.58, 1)
可选 ease-in-out:慢速开始,慢速结束;相当于 cubic-bezier(0.42, 0, 0.58, 1)
可选 cubic-bezier(n, n, n, n):在 bezier 函数中自定义 0 ~ 1 之间的数值。
贝塞尔时间曲线详解。。。
【4】transition-delay:
规定过渡效果的延迟时间,默认为 0s 。
复合属性
在使用复合属性定义过渡效果时,子属性之间用空格分隔。
transition: width 2s linear;
transition 属性可以指定多个值,当指定多个值时,中间用逗号分隔。
transition: width 2s ease-in-out, height 2s ease-in-out;
其中过渡过程中还有很多情况,具体请见最后的参考链接,很不错的一篇文章好了,以上是总结的一些基础知识,下面是具体的运用
项目中的要求是点击input框,input框中的提示语也就是placeholder的值上移,变成
这样的样式了,
这是在vue项目中写的,
html<div class='xuan-input'> <span :class="dutyAct">职位</span> <div class='input-label'> < input @keyup="input" @blur="blur('duty')" @focus="focus('duty')" v-model="duty" placeholder="职位" type=“text” maxlength=“50”/> <i v-if="false" @click="clearInput('duty')"></i> </div> </div>
css
.xuan-input{ padding:15px 0px; width:100%; height:75px; background-color:#fff; display: inline-block; position: relative; border-bottom: 0.5px solid #e6e6e6; span{ padding-top:2px; font-size:16px; line-height:20px; font-weight:400; position:relative; padding:5px 0 0; opacity: 0; top: 10px; display: inline-block; color: #aea9a5; font-size: 14px; &.active{ transition:opacity 0.15s ease-in, top 0.2s linear; opacity: 1; top:0; } } ..input-label{ display:inline-block; position: relative; width:100%; input{ display:block; padding-top: 2px; pading-left:0; height:34px; color:#111; width: 90%; font-size: 16px; line-height:16px; } i{ position:absolute; top: 7px; right: 0; z-index:3; width: 24px; height: 24px; background-image:url(); background-size: 12px 12px; background-repeat: no-repeat; background-position: 5px 5px; }
-
修改fragment的进入动画_「咻动画」深圳动画公司基本的动画制作流程
2020-11-27 11:15:03虽然动画宣传片的制作流程就那几个步骤,但是由于不同的动画制作公司人员结构不同以至于处理项目的节奏还是不一样的。下面咻动画就来给小伙伴们简单介绍一下关于深圳动画公司的基本动画制作流程有哪些。「咻动画」...虽然动画宣传片的制作流程就那几个步骤,但是由于不同的动画制作公司人员结构不同以至于处理项目的节奏还是不一样的。下面咻动画就来给小伙伴们简单介绍一下关于深圳动画公司的基本动画制作流程有哪些。
「咻动画」深圳动画公司基本的动画制作流程
一、策划脚本
例如我们制作的是产品宣传片,在配合深圳动画公司围绕着产品基本信息、产品内涵、动画风格、大致剧情走向等方面进行双方洽谈磨合过后就要针对宣传片进行脚本策划了。这是整个动画宣传片的制作流程中相当重要的一个步骤,我们要规划好如何利用这短短的两三分钟来对产品进行多方面的介绍,同时还要在动画宣传片中融入能够戳中受众痛点的内容与动画创意设计。
二、设计分镜
需要与动画脚本一起交给客户审核的还有动画的分镜头,虽然动画宣传片的分镜通常只是简单的线描草稿,但是我们却不能小看它的绘制难度,深圳动画公司的绘画师需要准确地将脚本中描述的每个重要镜头绘制出来,并且画面中应有的氛围也要通过简单的线稿体现出来,看似简单的几笔画起来却一点儿也不简单。
三、绘制素材
在审核完动画脚本与分镜并确定下来不需要修改之后,深圳动画公司通常会先绘制好动画宣传片中需要用到的角色、场景等素材,将每种需要用到的元素都准备就绪之后就开始进入动画制作阶段了。
四、制作动画
这一阶段除了给动画宣传片中的每个镜头加上动态设计之外,深圳动画公司也会针对对不同的场景转换进行创意设计,让场景的转换之间不但衔接自然流畅还会有让观众眼前一亮的创意设计。
五、调配声音
完成动态设计之后就要开始为动画进行旁白、音效、背景音乐、音响效果等配音,动画宣传片制作流程到了这一步也基本接近尾声了。
「咻动画」深圳动画公司基本的动画制作流程
其实仔细罗列下来动画制作的步骤也不是很复杂,以上就是咻动画给小伙伴们整理的深圳动画公司的基本动画制作流程了,希望能够帮助大家进一步地了解动画宣传片的制作。
-
LayoutManager实现翻页动画
2020-07-16 08:30:42关于阅读器翻页动画的实现,有大把的开源项目可以借鉴,但基本都是基于canvas 2D动画,利用缓存bitmap来处理。绘制需要完全手动绘制。有很多优秀的ios 阅读产品,都...关于阅读器翻页动画的实现,有大把的开源项目可以借鉴,但基本都是基于canvas 2D动画,利用缓存bitmap来处理。绘制需要完全手动绘制。有很多优秀的ios 阅读产品,都可以在阅读页插入翻页视频,以及几大ADDSP的广告sdk顺滑接入,炫酷之余很有产品价值。反观android,目前还没找到同样优秀的产品,苦于没有借鉴思路。随不知活路,却已知死路。bitmap+canvas的手动绘制 局限性太大,展现形态未能解耦,内容无法对外扩充。这对于接入pdf,epub等格式的拓展非常困难。
反过来想想,使用缓存bitmap+canvas最主要的就是目的就是解决缓存翻页与动画的实现,而并非是要处理页面展现的。基于单个页面解耦的目的,缓存机制可以使用 RecyclerView,动画部分就借助 LayoutManager。
恶补了一波RecyclerView与LayoutManager机制与原理,这里不赘述了。
核心思路:利用LayoutManager将itemView 摆放成Z轴的ABC三层,而不是左,中,右水平摆放,再根据滑动手势处理view状态产生动画。
提前需要考虑的问题:事件穿透,滑动冲突,无缝切换动画,引入openGL实现curl仿真翻页动画的坑。
在下手之前,感觉比较费劲,但是一步步探索实现后,回头再看并不复杂,只是要注意的细节比较多。
目前效果
垂直翻页
覆盖滑动
横向滚动
仿真卷曲动画 :取消翻页时,页面会错乱
垂直翻页 和 覆盖滑动 动画实现思路:自定义LayoutManger,处理滑动及itemView显示位置,根据滑动方向将下一个或上一个itemView提前固定作为准备展示的页,利用scale 控制将进入屏幕的itemView显示状态,利用Rotation 实现翻转效果,利用viewZ轴层级准确提供页面层级,利用阴影增加上下页的立体视觉。
核心代码:
if (bookFilpMode == MODE_HORIZATIONAL_SLIDE || bookFilpMode == MODE_FILP) { //view 复用时 需要重制属性 if (itemIndex + 1 <= fastVisiPos) { //计算下一个view View nextView = recycler.getViewForPosition(itemIndex + 1); nextView.setScaleX(1f); nextView.setScaleY(1f); nextView.setTranslationX(0); nextView.setRotationY(0f); if (itemIndex <= focusPosition) { addView(nextView); } else { addView(nextView, 0); } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { nextView.setElevation(-1); } measureChildWithMargins(nextView, 0, 0); int nl, nr; nl = 0; nr = nl + getDecoratedMeasurementHorizontal(nextView); layoutDecoratedWithMargins(nextView, nl, 0, nr, bottom); } } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { itemView.setElevation(0); } layoutDecoratedWithMargins(itemView, left, top, right, bottom); if (bookFilpMode == MODE_HORIZATIONAL_SLIDE) { itemView.setTranslationX(dx); final int childCenterX = (right + left) / 2; final int parentCenterX = getWidth() / 2; boolean isChildLayoutLeft = childCenterX <= parentCenterX; if (isChildLayoutLeft) { itemView.setScaleX(1f); itemView.setScaleY(1f); } else { itemView.setTranslationX(0); itemView.setScaleX(0); itemView.setScaleY(0); } } else if (bookFilpMode == MODE_FILP) { final int childCenterX = (right + left) / 2; final int parentCenterX = getWidth() / 2; boolean isChildLayoutLeft = childCenterX <= parentCenterX; if (!isChildLayoutLeft) {//隐藏屏幕外的 itemView.setTranslationX(0); itemView.setScaleX(0); itemView.setScaleY(0); }else { itemView.setScaleX(1F); itemView.setScaleY(1F); } float offset = (horizontalOffset * 1.0f) % (childWidth * 1.0f); float rataitonY = Math.abs(offset / childWidth * 90); itemView.setTranslationX(offset);//一边沿着Y轴旋转一边调整位置 itemView.setCameraDistance(-50000);//无限拉近相机焦点 itemView.setPivotX(0); itemView.setRotationY(-rataitonY);//沿着Y 反转 }else { itemView.setTranslationX(dx); itemView.setScaleX(1f); itemView.setScaleY(1f); itemView.setRotationY(0f); }
仿真卷曲动画实现思路:使用开源库pagecurl的卷曲动画,在Layoutmanger中提前准备好Itemview的缓存bitmap,或者直接使用RecyclerView的缓存bitmap,并提供给curlView。
核心代码:
@Override public int getPageCount() { return adapter.getItemCount(); } @Override public void updatePage(CurlPage page, int width, int height, int index) { int lastIndex = curlLayoutManger.getSelectIndex(); RBLog.log("updatePage index=%s lastIndex=%s", index, lastIndex); Message message = handler.obtainMessage(); message.arg1 = index; handler.sendMessage(message); recyclerView.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH); recyclerView.setDrawingCacheEnabled(true); recyclerView.buildDrawingCache(); Bitmap bitmap = recyclerView.getDrawingCache().copy(Bitmap.Config.RGB_565, false); recyclerView.setDrawingCacheEnabled(false); recyclerView.destroyDrawingCache(); // Bitmap front = curlLayoutManger.getItemBitmap().copy(Bitmap.Config.RGB_565,false); page.setTexture(bitmap, CurlPage.SIDE_BOTH); page.setColor(Color.rgb(0xFF, 0xFF, 0xFF), CurlPage.SIDE_BACK); } }
pagecur的引入,十分尴尬。这是我个人能找到最好接入的curl opengl绘制代码。但有一个非常核心的问题,GLSuacefaceView 它不是来自ViewGroup而是View。1.不能与RecyclerView共享同一个事件传递树,2.只能播放View的bitmap 而不是view本身,导致需要提前准备好bitmap。也就是会出现上面动画中,翻页显示错乱的情况,实践了一些思路 都不理想。
如果读到此篇的你有兴趣的话,可以评论交流提供意见或者直击源码https://github.com/HarkBen/ReadAnim
作者:可米西
链接:https://www.jianshu.com/p/1992d49e5fbf关注我获取更多知识或者投稿
-
tab点击,图片放大缩小动画
2017-12-09 21:13:50项目中这次改版应产品要求加入tabbar点击做放大缩小动画,只改变图片,标题不做动画。先看效果图Demo地址图片做放大缩小动画,很好做。用CoreAnimation的帧动画就可以实现。不过貌似系统并没有开出开关于tabbar上的...项目中这次改版应产品要求加入tabbar点击做放大缩小动画,只改变图片,标题不做动画。先看效果图
图片做放大缩小动画,很好做。用CoreAnimation的帧动画就可以实现。不过貌似系统并没有开出开关于tabbar上的imageView这个属性。其实我们找到在tab上的imageView,这一切问题就好解决了。
直接上代码
声明一个tab继承系统tabbar #import <UIKit/UIKit.h> @interface FFTabBar : UITabBar @end
.m文件里可以通过layoutSubviews找到需要做动画的tabItem - (void)layoutSubviews{ [super layoutSubviews]; for (UIControl *tabBarButton in self.subviews) { if ([tabBarButton isKindOfClass:NSClassFromString(@"UITabBarButton")]) { [tabBarButton addTarget:self action:@selector(tabBarButtonClick:) forControlEvents:UIControlEventTouchUpInside]; } } }
实现点击方法,找系统的私有属性UITabBarSwappableImageView 。这个就是我们今天要找的tab上的imageView
- (void)tabBarButtonClick:(UIControl *)tabBarButton { NSInteger index = [self.items indexOfObject:self.selectedItem]; if (index != self.selectTabBarTag) { for (UIView *imageView in tabBarButton.subviews) { if ([imageView isKindOfClass:NSClassFromString(@"UITabBarSwappableImageView")]) { [FFTabModel selectTabBarDoScaleAnimationWithView:imageView]; } } } self.selectTabBarTag = index; } #pragma mark - Associated Object - (void)setSelectTabBarTag:(NSInteger)object{ objc_setAssociatedObject(self, @selector(selectTabBarTag), @(object), OBJC_ASSOCIATION_RETAIN_NONATOMIC); } - (NSInteger)selectTabBarTag{ return [objc_getAssociatedObject(self, @selector(selectTabBarTag)) integerValue]; }
上边通过私有属性UITabBarSwappableImageView 找到我们想要的imageView然后做相应的动画效果,这里通过runtime运行时,添加属性为NSInteger的selectTabBarTag。目的就是防止重复点击动画,
但是有时候我们项目中往往第一次进入App选择的并不是第0个item,有存在其他情况。这时候我们就要考虑动画保障点击item无论是任何一个的时候都要肯定出现动画,这里我做了一个判断
- (instancetype)initWithFrame:(CGRect)frame{ self = [super initWithFrame:frame]; if (self) { //为保证动画不会重复以及点击动画的正确性,特增加selectTabBarTag, 保证selectTabBarTag和当前tabBarController.selectedIndex一致。 self.selectTabBarTag = 1; } return self; }
到这里就写完了,Demo为项目源码。可放心直接拿去使用
-
翻页显示19条 错乱_LayoutManager实现翻页动画
2021-01-23 16:35:25关于阅读器翻页动画的实现,有大把的开源项目可以借鉴,但基本都是基于canvas 2D动画,利用缓存bitmap来处理。绘制需要完全手动绘制。有很多优秀的ios 阅读产品,都可以在阅读页插入翻页视频,以及几大ADDSP的广告... -
ModernPortfolio:使用React制作的具有现代外观的产品组合-源码
2021-03-02 03:03:49关于项目的一点 :man::school: 该网站的设计考虑了主要的UI / UX(即,增加用户的参与度) :man::school: :man::laptop_computer: 我在这里使用了现代动画和做法,以使该网站加载速度更快,看起来更时尚 :man::... -
Portfolio-Jatin-d:我的投资... 一个交互式,静态的单页网站,显示我的经验,教育,项目组合和联系方式-源码
2021-02-10 02:31:26欢迎页面包含欢迎消息和一些关于我的动画介绍性行。 在桌面上查看时,您会看到彩色的动画覆盖页面的右侧。 该动画是使用react代码构建的,我打算不时对其进行更新,以使其更好,更有吸引力。 如上图所示,登录页面... -
Pokedex的目标是为用户提供所需的尽可能多的关于Pokemon游戏的数据,而这些操作既方便又省力-源码
2021-02-02 17:37:31口袋妖怪 Pokedex是一款强大的Discord机器人,模仿Pokemon游戏和表演中的标志性Pokedex。 它具有许多功能,可以帮助所有技能水平的玩家学习和更好地玩...移动-显示有关指定项目的详细信息 能力-显示有关指定能力的详细 -
移动Web产品前端开发口诀——“快”
2020-11-23 11:17:50一个好的产品,无论是页面加载速度,还是响应用户点击动作,都应当非常快,能快速的把响应内容反馈给用户,对于用户而言,快就是使用流畅——不卡。 移动端浏览器现状 现在的... -
jkhauth.github.io:不仅展示了我作为开发人员的才能,而且展示了REACT及其库的用法-源码
2021-02-17 08:51:32我喜欢菜单组件之间切换动画的淡入淡出和简单性,并尝试用自己的方式来复制它。 在我的关于我的页面中,我打算拿一张自己的老照片,用计算机来表示我对技术的热情,而这一直是我的热情之一。 我详细介绍了我当前和... -
玩转虚拟现实领域11个你必备的专业术语
2018-03-16 12:01:00在制作虚拟现实三维动画项目中,很多专业术语是作为一个专业人士你不得不了解的,小编就为大家介绍下关于虚拟现实制作中常用的一些术语。 虚拟现实技术在近年来有了长足的进步,许多读者对于这一行业... -
-
-
-
-
-
神经态:神经态为个人网站,作品集和简历设计了Jekyll主题-源码
2021-02-04 02:04:59关于该项目 这是一个由Jekyll建立的个人网站,并托管在Github Pages ,该网站基于新的Neumorphism设计趋势并采用移动优先方式开发。 想要展示自己的简历和作品集的开发人员可以使用它。 如果要在自己的网站上使用它... -
【讨论】怎么才能有效的优化!
2021-01-09 17:00:15<div><h3>背景 <ul><li>产品的功能越来越多,安卓小程序变得越来越卡,普通的手机可能一下子内存就爆了,...那真的耗时耗力</p><p>该提问来源于开源项目:Tencent/kbone</p></div> -
精通Android游戏开发(将本地PC游戏轻松移植到Android的秘技)--详细书签版
2013-02-08 11:30:55你会了解如何构建基于XML的定制线性布局、如何使用抽象类和定时器任务来模拟简单的游戏循环、如何在一个非UI线程中使视图无效,以及如何从项目资源加载sprite和声音,另外还会学习一些绘制技术,如sprite动画、简单... -
文件夹-源码
2021-02-15 11:42:02随着我在CSS和HTML专业知识上的成长,我将在此模型的基础上,最终希望在该项目中添加一些动画和JS。 我尝试将投资组合设计为与原始投资组合的近似版本,并进行了一些更改和添加,例如项目的按钮链接。 加载作品集... -
电子速写-源码
2021-02-28 12:26:11电子速写 数字和传统艺术电子商务商店。 艺术家在一个地方需要的... 设置项目 在Netlify进行部署。 拉紧 付款表格 博客 每个团队成员的任务 哈尼恩 哈立德 布什拉 可能 店铺 关于页面 样式> * -- 依类别搜寻 本地存 -
2014/01-2014/03开发总结二
2014-03-22 13:44:30首先,讲一下关于渲染线程的问题,我们的项目产品要求必须效果高大上,显得牛逼华丽无比,这样才有土豪愿意付费。刚开始做动画效果,想要自己定义一个动画框架,但是问题是还有动画编辑器之类的。。。。基本上无法... -
Android手机交互应用开发创意之钥 源代码
2012-11-24 16:41:38第1章 关于创意的浅谈 1.1 创意是如何诞生的 1.2 创意该如何发展 1.3 从作品到产品 第2章 当创意遇上“机器人” 2.1 “机器人”的诞生 2.3 创意移动应用 第3章 创意的商机 3.1 androidmarket简介 ... -
【演示工具】Focusky教程 | 如何让演示文稿自动循环播放?
2019-01-14 11:48:29自动循环播放非常适用于一些有关于产品展示的演示, 还有在讲演项目策划与融资计划方案时也特别适合。下面是设置自动循环播放后文稿演示的效果。 【▲图1】(项目策划) 【▲图2】(融资路演) “选项” – ... -
asp.net知识库
2015-06-18 08:45:45关于能自定义格式的、支持多语言的、支持多数据库的代码生成器的想法 发布Oracle存储过程包c#代码生成工具(CodeRobot) New Folder XCodeFactory3.0完全攻略--序 XCodeFactory3.0完全攻略--基本思想 XCodeFactory... -
-
-
-
-