动画 指一种样式变为另一种样式 keyframes应当始终定义0 100 过程
1 transition 制作鼠标滑过图片时的放大效果
设置好wrap的宽度高度,并且设置overflow hidden 这样可以时图片放大时wrap尺寸不会随它变化,并且溢出的隐藏起来。
当鼠标滑过时,为transform 设置5s的过度效果。
transition 语法transition :all 0.5s linear 1s all表示所有属性变化都用过渡效果四个参数依次表示属性,过渡时间,过渡函数,延迟时间
2 keyframes 制作动画
3 动画http://gudh.github.io/ihover/dist/index.html
第一组
难点:a 将鼠标移入时外面圆圈的旋转。用transform:rotate(180deg)来做
b外面圆圈的制作,可以为设置border-radius属性以及border的宽度颜色属性来制作。
c wrap内部图片要使它成为园,则应该overflow: hidden;border-radius: 50%; 再设置宽高。为了让图片显示清晰设置图片宽高自适应width: 100%;height: 100%;不然图片会被放大。
d 在鼠标移入时有两种动作,文字慢慢显示,圆圈旋转,注意这是最巧妙的地方,原框架中通过在外面套一个a标签,然后设置当它hover时改变以上两者的属性,达到我们需要的效果。
4 动画http://gudh.github.io/ihover/dist/index.html
第2组
所做更改,border尺寸要减小 并且经观察,border在wrap之上,故要为border设置position属性 以此来设置z-index属性。此时border已经脱离文档,故包裹图片的wrap不用设置position可以直接放上去出现与border的层叠,便会出现一个圆圈,又要设置wrap 并且显示时它显然显示在圆圈之上,也就是在border之上,故它也要设置position属性并且它的z-index大于border 尺寸与wrap一致。再设置它隐藏在左边即可。再观察,此时转动的应该是.wrap 故再为它设置hover时转动即可.但是此时当把鼠标移到wrappo时 a:hover也被触发。为什么呢 因为它也属于a的一部分,故会触发。即使此时opacity=0,但是它只是透明度为0,没有达到隐藏的目的,结下来解决这个bug。初步想法是把它隐藏起来。display不能运用动画,但是visibility可以,故这里先设置wrappo visibility=hidden 在 a:hover时再把visibility 设为可见即可 完美解决
第2组第二种做法,运动用transform来做,先transformX(100%)再在a:hover时再transform(0)就可以了 至于鼠标移入wrappo时的hover事件 用一个不常用的来做。把事件给禁止了pointer-events:none;并且圆圈不用border来做了 而用wrap的伪元素来做并且设置他的box-shadow inset值
注意 一旦脱离文档流则在正常文档流之上,不需要设置z-index 所以这里伪元素未设置层高。
3 第3组 wrap边变小变换位置,注意此处选择第二种方法特别好做,html代码量少,可以减少浏览器的渲染。再更新一个我不知道的知识,当边变小变换位置时第一个想到的是transform:translateX(50%);transform:scale(.5,.5); 但实际上只会执行第二条语句,第一条无效,怎么解决?用transform:translateX(50%) scale(.5); 便可以同时变化。 好解决了这条关键的东西,其他就简单了 跟上面一样再变化translateX的正负值,会出现各个效果
4 第4组 在第三组基础上,观察wrap向右移动并且渐渐消失,wrapo向右移动
稍微变化部分的代码如下
5 第5组 wrap渐渐变大 直到消失出现.wrap 将wrap与wrapo重叠为了不用考虑二者层级关系,可以这样设置 将wrapo的透明度设为0 待a:hover时再设为1 并且把wrap透明度设为0,这样就不用设置其中一个的position。也可以这样解决,设置二者的z-index值,并且保证wrap在wrapo之上 要这样的话二者都要设置position属性,结果表明,都是可行的 这是第二种hover时不用再去改变wrapo的任何属性,只需要改变wrap即可
第6组 wrap渐渐变小 当变到一定程度并消失的时候,wrapo才从左边移到到wrap所在的地方,注意是前者消失之后后者才开始运动,故需要为wrapo的运动添加一个延迟,而transition里面恰好有这个设置。把需要延迟时间加到最后即可。transition:all 0.35s ease-in-out 0.1s; 其它跟上面的差不了太多。
7 第8组 每一个图形有两个连续的运动,wrap先变小,再向左平移,可是transform 只能对一个物体设置一种运动或同时有两种运动,所以不能满足要求,现在在它外面套一个盒子包裹它,把这个包裹盒子的运动和它本身的运动结合起来,可以解决这个问题,具体步骤:先让这个包裹盒子缩小为原来的1/2,再将wrap向左边平移(有延迟),代码如下(只设置与动画有关的css)
wrapo的运动稍复杂一些。 分析一下 试验可知,当一个盒子里面套另一个盒子,并且为两个盒子设置变换效果时,浏览器先为外面盒子设置效果,然后才是里面的,比如让外面盒子缩小里面的盒子平移,那麽他的变换顺序是先变小了再平移,所以假如是一个圆的话那么它的圆心再这个过程中在水平方向上会发生变化,为了避免这样,这样 让外面盒子平移里面的盒子缩小 故初始状态wrapo的css这样设置
运动时,先是wrap变小,然后wrap向左平移,这与wrapo-container平移是同时的,wrapo-container平移完后才是wrapo的变大,故右边元素的运动延迟分别为0.35,0.7 s
所以
a:hover 时的css为
过程好复杂的说!
第9组 难点在于解决wrap的两个运动 实验可知 translateX 指向图像不转动时的右边(相对于它自己是固定的) 当它转动时x在我们看来也在转动,故现在设置这个动画 transform:translateX(100%) rotate(360deg)在转动时会向四面八方平移,解决方法是外面套一个wrap-container 设置它的平移transform:translateX(100%) 里面的wrap设置为转动,且使其同时运动,此时 wrap同时参与有、自己的转动还有wrap-container的平移
1 transition 制作鼠标滑过图片时的放大效果
css .wrap{ width: 340px;height: 340px; position: absolute; top: 30%; left: 20%; overflow: hidden; border: 1px solid; } img{ transition:transform 5s; } img:hover{ transform:scale(1.4,1.4); } html <div class="wrap"><img src="1.png" alt="" ></div>
设置好wrap的宽度高度,并且设置overflow hidden 这样可以时图片放大时wrap尺寸不会随它变化,并且溢出的隐藏起来。
当鼠标滑过时,为transform 设置5s的过度效果。
transition 语法transition :all 0.5s linear 1s all表示所有属性变化都用过渡效果四个参数依次表示属性,过渡时间,过渡函数,延迟时间
2 keyframes 制作动画
css 定义动画过程 @-webkit-keyframes first{ 0%{ transform:rotate(0deg); } 25%{ transform:rotate(90deg); } 50%{ transform:rotate(180deg); } 75%{ transform:rotate(270deg); } 100%{ transform:rotate(360deg); } } img{ position: absolute; top: 30%; left: 20%; animation:first 5s infinite ; -webkit-animation: first 5s infinite linear; /*transform:rotate(10deg);*/ } animation要配合keyframes来使用
3 动画http://gudh.github.io/ihover/dist/index.html
第一组
难点:a 将鼠标移入时外面圆圈的旋转。用transform:rotate(180deg)来做
b外面圆圈的制作,可以为设置border-radius属性以及border的宽度颜色属性来制作。
c wrap内部图片要使它成为园,则应该overflow: hidden;border-radius: 50%; 再设置宽高。为了让图片显示清晰设置图片宽高自适应width: 100%;height: 100%;不然图片会被放大。
d 在鼠标移入时有两种动作,文字慢慢显示,圆圈旋转,注意这是最巧妙的地方,原框架中通过在外面套一个a标签,然后设置当它hover时改变以上两者的属性,达到我们需要的效果。
css .wrap,.wrapo{ width: 200px;height: 200px;overflow: hidden;border-radius: 50%;color: #fff;position: absolute;top: 10px;left: 10px; } .contener{ position: relative; top: 100px;left: 100px; border: 1px solid; } .contener a{ display: block; text-decoration: none; } img{ width: 100%;height: 100%; } .border{ width: 200px;height: 200px;border: 10px solid #ecab18;border-right-color: #1ad280;border-bottom-color: #1ad280;border-radius: 50%;transition:all 1s ease-in-out; } a:hover .border{ /*border-color: #ecab18; border-top-color: #1ad280;border-left-color: */ transform:rotate(180deg); } .wrapo{ /*position: absolute;*/ /*visibility : hidden;*/ opacity:0; z-index: 5; transition:all 1s ease-in-out; } .wrapo h3{ position: relative;top: 50px;left: 20px; } a:hover .wrapo{ opacity: 1; /*visibility : visible;*/ background-color: rgba(0,0,0,.3); } html <div class="contener"><a href="#"> <div class="wrapo"><h3>is it beautiful?</h3> </div> <div class="border"> </div> <div class="wrap"><img src="5.jpg" alt="" ></div> </a> </div>
4 动画http://gudh.github.io/ihover/dist/index.html
第2组
所做更改,border尺寸要减小 并且经观察,border在wrap之上,故要为border设置position属性 以此来设置z-index属性。此时border已经脱离文档,故包裹图片的wrap不用设置position可以直接放上去出现与border的层叠,便会出现一个圆圈,又要设置wrap 并且显示时它显然显示在圆圈之上,也就是在border之上,故它也要设置position属性并且它的z-index大于border 尺寸与wrap一致。再设置它隐藏在左边即可。再观察,此时转动的应该是.wrap 故再为它设置hover时转动即可.但是此时当把鼠标移到wrappo时 a:hover也被触发。为什么呢 因为它也属于a的一部分,故会触发。即使此时opacity=0,但是它只是透明度为0,没有达到隐藏的目的,结下来解决这个bug。初步想法是把它隐藏起来。display不能运用动画,但是visibility可以,故这里先设置wrappo visibility=hidden 在 a:hover时再把visibility 设为可见即可 完美解决
css .wrapo{ width: 200px;height: 200px;overflow: hidden;border-radius: 50%;color: #fff;position: absolute;z-index: 7;left: 300px; } .wrap{ width: 200px;height: 200px;overflow: hidden;border-radius: 50%;transition:all 1s ease-in-out; } .contener{ position: relative; top: 100px;left: 100px; border: 1px solid; width: 200px; height: 200px; } .contener a{ display: block; text-decoration: none; } img{ width: 100%;height: 100%; } .border{ width: 170px;height: 170px;border: 15px solid rgba(255,255,255,.5);border-radius: 50%;position: absolute;z-index: 5; } a:hover .wrap{ /*border-color: #ecab18; border-top-color: #1ad280;border-left-color: */ transform:rotate(180deg); } .wrapo{ /*position: absolute;*/ /*visibility : hidden;*/ opacity:0; z-index: 5; transition:all 1s ease-in-out; } .wrapo h3{ position: relative;top: 50px;left: 20px; } a:hover .wrapo{ opacity: 1; /*visibility : visible;*/ background-color: rgba(0,0,0,.3); left: 0px; } html 与上面一致
第2组第二种做法,运动用transform来做,先transformX(100%)再在a:hover时再transform(0)就可以了 至于鼠标移入wrappo时的hover事件 用一个不常用的来做。把事件给禁止了pointer-events:none;并且圆圈不用border来做了 而用wrap的伪元素来做并且设置他的box-shadow inset值
css .wrapo{ width: 200px;height: 200px;overflow: hidden;border-radius: 50%;color: #fff;position: absolute;background-color: #1a4a72;transition:all 1s ease-in-out;backface-visibility:hidden;transform:translateX(100%);//% 是相对于包含框的设置position是为了脱离文档流让它与其他元素重叠。设置它的z-index是为了在其他元素之上。 pointer-events:none; } .wrap{ width: 200px;height: 200px;overflow: hidden;border-radius: 50%;transition:all 1s ease-in-out; } .wrap:before{ content: '';width: 100%;height: 100%;display: block;border-radius: 50%;box-shadow:inset 0px 0px 0px 10px rgba(255,255,255,.3),2px 2px 2px rgba(0,0,0,.3);position: absolute;//使伪元素脱离文档流定义在img上面 box-shadow 前边一个值定义内圈,后面的一个值定义向外的阴影 } .contener{ position: relative; top: 100px;left: 100px; border: 1px solid; width: 200px; height: 200px; } .contener a{ display: block; text-decoration: none; } img{ width: 100%;height: 100%; } a:hover .wrap{ /*border-color: #ecab18; border-top-color: #1ad280;border-left-color: */ transform:rotate(-180deg); } .wrapo{ /*position: absolute;*/ /*visibility : hidden;*/ opacity:0; z-index: 5; text-align: center; transition:all 1s ease-in-out; } a:hover .wrapo{ opacity: 1; /*display: block;*/ /*visibility : visible;*/ background-color: rgba(0,170,0,.3); transform:translateX(0); } html <div class="contener"><a href="#"> <div class="wrapo"><h3>is it beautiful?</h3> </div> <div class="wrap"><img src="5.jpg" alt="" ></div> </a> </div>
注意 一旦脱离文档流则在正常文档流之上,不需要设置z-index 所以这里伪元素未设置层高。
3 第3组 wrap边变小变换位置,注意此处选择第二种方法特别好做,html代码量少,可以减少浏览器的渲染。再更新一个我不知道的知识,当边变小变换位置时第一个想到的是transform:translateX(50%);transform:scale(.5,.5); 但实际上只会执行第二条语句,第一条无效,怎么解决?用transform:translateX(50%) scale(.5); 便可以同时变化。 好解决了这条关键的东西,其他就简单了 跟上面一样再变化translateX的正负值,会出现各个效果
4 第4组 在第三组基础上,观察wrap向右移动并且渐渐消失,wrapo向右移动
稍微变化部分的代码如下
css a:hover .wrap{ /*border-color: #ecab18; border-top-color: #1ad280;border-left-color: */ transform:translateX(100%); opacity: 0; } a:hover .wrapo{ opacity: 1; /*display: block;*/ /*visibility : visible;*/ background-color: rgba(0,170,0,.3); transform:translateX(0); } 可是当很快的把鼠标移到wrap时,发现未还原
5 第5组 wrap渐渐变大 直到消失出现.wrap 将wrap与wrapo重叠为了不用考虑二者层级关系,可以这样设置 将wrapo的透明度设为0 待a:hover时再设为1 并且把wrap透明度设为0,这样就不用设置其中一个的position。也可以这样解决,设置二者的z-index值,并且保证wrap在wrapo之上 要这样的话二者都要设置position属性,结果表明,都是可行的 这是第二种hover时不用再去改变wrapo的任何属性,只需要改变wrap即可
html结够如上一样 css a:hover .wrap{ transform:scale(1.5); opacity: 0; } a:hover .wrapo{ opacity: 1; } .wrapo{ opacity:0; /*z-index: 5;*/ text-align: center; transition:all .3s ease-in-out; }
第6组 wrap渐渐变小 当变到一定程度并消失的时候,wrapo才从左边移到到wrap所在的地方,注意是前者消失之后后者才开始运动,故需要为wrapo的运动添加一个延迟,而transition里面恰好有这个设置。把需要延迟时间加到最后即可。transition:all 0.35s ease-in-out 0.1s; 其它跟上面的差不了太多。
7 第8组 每一个图形有两个连续的运动,wrap先变小,再向左平移,可是transform 只能对一个物体设置一种运动或同时有两种运动,所以不能满足要求,现在在它外面套一个盒子包裹它,把这个包裹盒子的运动和它本身的运动结合起来,可以解决这个问题,具体步骤:先让这个包裹盒子缩小为原来的1/2,再将wrap向左边平移(有延迟),代码如下(只设置与动画有关的css)
html <div class="wrap-container"> <div class="wrap"><img src="5.jpg" alt="" ></div> </div> css .wrap-container{ border-radius: 50%;transition: all 0.35s ease-in-out; } a:hover .wrap-container{ transform:scale(.5); } a:hover .wrap{ transform:translateX(-100%); opacity: 0; } .wrap{ transition:all 0.35s ease-in-out 0.35s;//有延迟便于使二者的运动连续。 }
wrapo的运动稍复杂一些。 分析一下 试验可知,当一个盒子里面套另一个盒子,并且为两个盒子设置变换效果时,浏览器先为外面盒子设置效果,然后才是里面的,比如让外面盒子缩小里面的盒子平移,那麽他的变换顺序是先变小了再平移,所以假如是一个圆的话那么它的圆心再这个过程中在水平方向上会发生变化,为了避免这样,这样 让外面盒子平移里面的盒子缩小 故初始状态wrapo的css这样设置
css .wrapo{ transform: scale(.5); transition:all 0.35s ease-in-out 0.7s; } .wrapo-container{ border-radius: 50%;transition: all 0.35s ease-in-out 0.35s;transform: translateX(100%);opacity:0;//opacity设置在它上面不然,设置在wrapo上市.wrapo-container translatex时看不见元素。 } html <div class="wrapo-container"> <div class="wrapo"><h3>is it beautiful?</h3> </div> </div>
运动时,先是wrap变小,然后wrap向左平移,这与wrapo-container平移是同时的,wrapo-container平移完后才是wrapo的变大,故右边元素的运动延迟分别为0.35,0.7 s
所以
a:hover 时的css为
a:hover .wrapo{ /*opacity: 1;*/ /*transform:translateX(0);*/ transform: scale(1); } a:hover .wrapo-container{ /*transform: scale(1);*/ transform: translateX(0); opacity: 1; }
过程好复杂的说!
第9组 难点在于解决wrap的两个运动 实验可知 translateX 指向图像不转动时的右边(相对于它自己是固定的) 当它转动时x在我们看来也在转动,故现在设置这个动画 transform:translateX(100%) rotate(360deg)在转动时会向四面八方平移,解决方法是外面套一个wrap-container 设置它的平移transform:translateX(100%) 里面的wrap设置为转动,且使其同时运动,此时 wrap同时参与有、自己的转动还有wrap-container的平移
发表评论
-
vue
2017-06-03 19:41 0比如 假如没有添加上响应式属性的话,那么就会出现b只是一个简 ... -
csss 解析
2017-01-16 16:17 0... -
对话框回调
2017-01-11 10:26 872今天遇见一个需求 在提交数据时需要同时弹出3个确认菜单,点击了 ... -
svg, 支持mouseover
2017-01-09 18:07 1072今天项目中的需求,是在一个fill后的svg path上面加上 ... -
自动向上滚动框的制作
2015-07-19 19:21 893隔一段时间慢慢向上滚动一段距离!如图: 保证不会出现回滚。 ... -
滑过导航时出现描述框的制作
2015-07-19 18:44 687当滑过左边导航栏时右 ... -
small problem 开发
2015-07-17 15:34 01. 当一个节点display属性设为none时,则现在获取它 ... -
overflow hidden可以清除浮动
2015-05-04 19:41 0css div{ overflow:hidden ... -
css浮动
2015-05-04 18:44 0li浮动 li脱离ul 再设置ul浮动 则li又进入了u ...
相关推荐
标题中的“经典3D动画,64k动画合集”揭示了一个非常特殊的领域,即如何在极小的数据量下创造具有视觉冲击力的3D动画效果。这通常需要对数据压缩技术有深入的理解,以及对3D建模和渲染的精湛技艺。 首先,64KB...
"Android动画合集"是对这个主题的基础总结,主要涵盖了Android系统中的三种基本动画类型:属性动画、帧动画和补间动画。这些概念对于Android开发者,尤其是初学者来说,是理解和实现动态用户界面的基础。 首先,...
"Win7 开机动画合集"是一个专门针对Windows 7系统收集的各种不同开机动画资源的集合。这个合集允许用户根据个人喜好替换默认的开机动画,以展示个性化的开机体验。 要更改Windows 7的开机动画,你需要了解以下几个...
本合集的"属性动画帧动画补间动画合集"是一个演示这些动画类型的实例集合,对于想要深入研究Android动画机制的开发者来说,这是一个非常有价值的资源。 1. **属性动画(Property Animation)**: 属性动画是Android...
这个"Android应用源码安卓动画合集大全"提供了丰富的示例,帮助开发者深入了解和实践Android动画技术。以下将详细阐述其中可能涵盖的知识点: 1. **Android动画类型**: - **视图动画(View Animation)**:这是...
《三国后传FLASH动画合集》是一部以中国历史上的三国时代为背景的动画作品,它通过Flash技术将经典的历史故事以生动、趣味的方式呈现出来。Flash是一种广泛应用于互联网的矢量图形和多媒体创作工具,由Adobe公司开发...
优秀的coder可以写出强大而又精巧的demo引擎,一个优秀的coder+优秀的优化编译器+UPX...里面有经典的“彗星撞地球”演示,这个动画的容量超过15G,而现在它的大小被压缩成64K,而且3D效果和声效仍然十分令人震撼!!!
在给定的"system_media_bootanimation.zip OTT开机动画合集"中,我们可以看到几个不同的子文件名,它们代表了不同的开机动画主题: 1. **TBOX**:这可能是指一种特定类型的智能电视或机顶盒(Set-Top Box,简称STB...
2016年的HTML5动画合集展示了这项技术在视觉效果和用户体验方面的巨大潜力。在这个压缩包中,我们可能找到了一系列精心设计的HTML5动画示例,这些示例可能包括动态图形、过渡效果、游戏元素、以及互动界面等多种形式...
这个名为“Android应用源码安卓动画合集大全加站长代码库.zip”的压缩包文件显然包含了大量的Android应用源码,特别是专注于动画实现的示例。这些源码可以帮助开发者深入理解Android动画系统,提升自己的编程技能。 ...
《CSS3 Loading加载动画合集:打造网页动态之美》 CSS3是 Cascading Style Sheets(层叠样式表)的第三版,它极大地扩展了样式表的功能,为网页设计师提供了丰富的视觉效果和动态交互。其中,Loading 加载动画是...
【Android 动画合集与开源项目解析】 在Android开发中,动画是提升用户体验的关键因素之一,能够使应用更加生动和吸引人。本资源“[安卓开源]安卓动画合集大全加站长代码库.zip”提供了丰富的Android动画示例,帮助...
这个“2016年酷炫HTML5动画合集”正是对那个时代创新成果的精彩展示。 HTML5动画的核心在于其内置的Canvas元素和SVG(Scalable Vector Graphics)图形,这两个特性极大地拓展了网页动态表现的边界。Canvas是一个...
【CSS3加载动画合集下载.zip】是一个包含多种CSS3加载动画效果的资源包,适合网页开发者使用,以提升用户体验并展示数据加载过程中的视觉吸引力。这个合集着重于利用CSS3的新特性来创建动态、流畅且具有现代感的加载...
在“Android应用源码安卓动画合集大全”中,我们可以深入学习和理解Android动画的各种类型和实现方式。 1. **帧动画(AnimationDrawable)** 帧动画是通过连续播放一系列图片来创建动画效果。例如,一个简单的行走...
种机械设备原理动画合集.zip
21个单页PPT动画合集
在IT领域,PPT(PowerPoint)是一种广泛使用的演示文稿软件,用于创建各种报告、演讲、培训材料或像“19套青春同学聚会PPT电子相册动画合集”这样的创意作品。这个合集提供了19个不同设计风格的PPT模板,专门针对...
"安卓动画合集"这个资源包显然包含了多种类型的动画效果,涵盖了Activity转换、Dialog显示以及闪屏页面等多个应用场景。 首先,我们要理解Activity动画。在安卓系统中,Activity是应用程序的基本组件,用于展示用户...
在Android开发中,动画是提升用户体验的关键因素之一。帧动画是一种简单但强大的动画形式,尤其适用于展示一系列连续的图像,比如人物行走、物体旋转等效果。本知识点将深入探讨如何在Android中创建和使用帧动画。 ...