一、鼠标滑入文字逐个渐入

效果图:

鼠标滑入文字逐个渐入

鼠标滑入按钮时,按钮中原本的文字从下方滑走,同时在原位置上,按钮文字单个挨个浮现。(原本文字和后面单个浮现的文本内容可不一致,可根据需要进行调整)。

实现思路:

用div模拟button按钮,并将按钮文本单个单个的放在其子元素span中,用于后面的单个显示。而鼠标没有触发时的静止状态文本则由div按钮的伪类::before来承担。在静态状态下将所有span元素的opacity透明度设置为0(元素不可见了,但仍占据原来的空间),当鼠标滑入按钮时,设置所有span元素的透明度为1,但从前往后给span设置不同的延时时间,即形成了上图中文字依次渐入的效果。鼠标滑入时原来的文本也是一样,通过设置opacity为0隐藏,且给一个竖直方向移动的动画即可。

代码:

1) HTML结构

<div class="btn" data-text="Get Started Now"><span>G</span><span>e</span><span>t</span><span>&nbsp;</span><span>S</span><span>t</span><span>a</span><span>r</span><span>t</span><span>e</span><span>d</span><span>&nbsp;</span><span>N</span><span>o</span><span>w</span>
</div>

2)CSS

/* 静态按钮的文本 */
.btn::before {content: attr(data-text);    /* 划重点!这样可多次复用本段CSS */opacity: 1;position: absolute;          /* 使其不占据空间,不将子元素span挤到后面去 */-webkit-transition: all 0.4s cubic-bezier(0.75, 0, 0.125, 1) 0s;-ms-transition: all 0.4s cubic-bezier(0.75, 0, 0.125, 1) 0s;-moz-transition: all 0.4s cubic-bezier(0.75, 0, 0.125, 1) 0s;transition: all 0.4s cubic-bezier(0.75, 0, 0.125, 1) 0s;
}
.btn:hover::before {opacity: 0;transform: translateY(100%);
}
/* 鼠标滑入逐个渐入的文字 */
.btn>span {opacity: 0;-webkit-transition: all 0.4s cubic-bezier(0.75, 0, 0.125, 1) 0s;-ms-transition: all 0.4s cubic-bezier(0.75, 0, 0.125, 1) 0s;-moz-transition: all 0.4s cubic-bezier(0.75, 0, 0.125, 1) 0s;transition: all 0.4s cubic-bezier(0.75, 0, 0.125, 1) 0s;
}
.btn:hover>span {opacity: 1;
}
.btn:hover>span:nth-child(1) {-webkit-transition-delay: 0.01s;-ms-transition-delay: 0.01s;-moz-transition-delay: 0.01s;transition-delay: 0.01s;
}
.btn:hover>span:nth-child(2) {-webkit-transition-delay: 0.05s;-ms-transition-delay: 0.05s;-moz-transition-delay: 0.05s;transition-delay: 0.05s;
}
.btn:hover>span:nth-child(3) {-webkit-transition-delay: 0.10s;-ms-transition-delay: 0.10s;-moz-transition-delay: 0.10s;transition-delay: 0.10s;
}
/* ...有多少个字就写多少个延时,每次递增0.05s差不多,可自行调整,空格最好也算上,不然效果会不太顺畅 */

【TIPS】cubic-bezier是定义贝赛尔曲线,一般用于描述速率曲线,不详述,感兴趣的可自行百度。

【兼容性】上述涉及transition的加了很多浏览器前缀,是因为它存在兼容性问题(主要是针对IE),其浏览器兼容支持如下表:

数据来源于:Can I Use

要是嫌手动写浏览器前缀很麻烦,可以下载一些插件,自动补全(例如:Autoprefixer)。此外,这里还有一个问题:我们通常习惯将带前缀的属性写在对应不带前缀的属性之前,这是为了在所有浏览器统一标准时,我们的通用属性覆盖前面的hack。

二、气泡上升效果

效果图:

气泡上升效果

一共用了三张气泡的图片(png格式,背景透明)作为背景图,需自己提前绘制,或者也可以用CSS绘制(前提是环形气泡中间不要求是透明的)。

实现思路:

用6个li模拟出现的所有气泡(数量自定,但数目较多一些显得自然一些,建议四五个及以上),设定两个不同的动画效果(移动translate、大小scale变化),随机赋给6个li作为动画animation,并分别给定不同的延时时间(思路同上述效果),营造出随意的感觉即可。

代码:

1)HTML结构:

<ul class="bubble"><li class="b-1"></li><li class="b-2"></li><li class="b-3"></li><li class="b-4"></li><li class="b-5"></li><li class="b-6"></li>
</ul>

2)CSS:

.bubble .b-1 {width: 6px;height: 6px;background: url(../../image/welcome/bubble3.png) no-repeat;animation: bubble1 7s linear infinite;
}
.bubble .b-2 {width: 8px;height: 8px;background: url(../../image/welcome/bubble2.png) no-repeat;animation: bubble2 5s linear infinite;
}
.bubble .b-3 {width: 12px;height: 12px;background: url(../../image/welcome/bubble1.png) no-repeat;animation: bubble1 4s linear infinite;
}
.bubble .b-4 {width: 8px;height: 8px;background: url(../../image/welcome/bubble2.png) no-repeat;animation: bubble2 5s linear infinite;
}
.bubble .b-5 {width: 6px;height: 6px;background: url(../../image/welcome/bubble3.png) no-repeat;animation: bubble2 7s linear infinite;
}
.bubble .b-6 {width: 12px;height: 12px;background: url(../../image/welcome/bubble1.png) no-repeat;animation: bubble1 6s linear infinite;
}
/* 比赛入口气泡动画 */
@keyframes bubble1 {0% {opacity: 0;transform: translate(0px,0) scale(.8);}50% {opacity: 1;transform: translate(10px,-20px) scale(1.1);}100% {opacity: 0;transform: translate(5px,-50px) scale(.9);}
}
@keyframes bubble2 {0% {opacity: 0;transform: translate(0px,0) scale(.8);}50% {opacity: 1;transform: translate(3px,-20px) scale(1.1);}100% {opacity: 0;transform: translate(5px,-50px) scale(.9);}
}

【TIPS】bubble-x中的宽高是小气泡背景图片本身的宽高,为了使图片变形失真不那么明显,气泡scale值不要太大。

【TIPS】keyframes中0%和100%时必须设opacity为0,才有渐入渐出的效果,不然会直愣愣地消失,体验不好。

【兼容性】animation和transform都涉及兼容性问题(为了整洁起见,上述CSS未添加带浏览器前缀的兼容代码):

animation兼容性

transform2D兼容性

三、渐变边框动画效果

效果图:

渐变边框动画效果

上图实现了三个渐变边框的动画效果,且上一个的边框阴影覆盖在下一个上面(调整各div的z-index),营造出“百叶窗”的突出显示效果。

实现思路:

先讲其中一个框的实现:每一个框一个div,每一个“框”分三部分组成,::before实现渐变边框(实际上是渐变背景),::after实现内部白色背景,最后div的其他子元素作为框内的文字内容显示。使用animation动画实现::before渐变背景旋转,即可模拟边框动画:

这个时候会遇到li内部子元素被::after覆盖显示不了的问题(::after的显示层级高于正常流元素),给内部子元素加position: relative;z-index: 1;即可(若有其他更好的解决办法,望告知)。

代码:

1)HTML结构

<div class="con"><div class="box"><p>123</p></div><div class="box"><p>456</p></div><div class="box"><p>789</p></div>
</div>

2)CSS:

.con {width: 500px;height: 500px;display: flex;flex-direction: column;justify-content: center;align-items: center;background-image: linear-gradient(#5b53fd,#87a8fb);
}
.box {width: 300px;height: 50px;margin: 4px auto;position: relative;overflow: hidden;       /* 动画的关键之一,使渐变背景仅显示需要的那一部分 */border-radius: 4px;box-shadow: 0 10px 15px rgba(0,0,0,.7);color: #000;font-size: 16px;vertical-align: middle;
}
.box>* {                   /* 此处调整层级是为了使div.box子元素显示(不被::after覆盖) */position: relative;z-index: 1;padding-left: 20px;
}
.box:nth-child(1) {        /* 层级的调整是为了使上一层div.box阴影覆盖下一个div.box */z-index: 3;
}
.box:nth-child(2) {z-index: 2;
}
.box:nth-child(3) {z-index: 1;
}
.box::before {content: "";display: inline-block;position: absolute;width: 310px;height: 310px;margin-top: -125px;    /* 当元素absolute时,可使用margin调整其位置,而不影响其他元素布局 */margin-left: -5px;background-image: linear-gradient(45deg,#51f4fa 35%,#da7efc 60%);border-radius: 50%;animation: rotate 5s linear infinite 0s;    /* 动画关键之一,使渐变背景旋转 */
}
.box::after {content: "";display: inline-block;position: absolute; top: 3px;bottom: 3px;  /* 重点!设置对立方位的值,使元素具有填充特性,且跟随父元素大小变化 */left: 3px;right: 3px;background: #fff;border-radius: 3px;
}
@keyframes rotate {0% {transform: rotate(0deg);}100% {transform: rotate(355deg);}
}

【TIPS】当不需要外面那层渐变边框有border-radius圆角效果和上述动画效果的话,可以使用border-image的渐变来实现渐变边框。

【TIPS】为了边框动画效果中颜色过渡自然一点,linear-gradient的颜色值不要设置两个颜色直接从0%到100%显示,亲测 linear-gradient(45deg,#51f4fa 35%,#da7efc 60%) 下表现较好。

【TIPS】为了使上述动画效果适用于不同尺寸的“框”,建议::after和::before元素的宽高设置相对单位(当然是相对于外层元素div.con),这样其他地方需要用到这个效果时,直接加上类名即可完美适配。当然,此时需要给外层li position:relative,而::after和::before position:absolute。

【兼容性】background-image(左)和border-image(右)

  

几个炫酷且实用的CSS动画效果相关推荐

  1. 炫酷的进入页面的动画效果

    如何实现网页中某些元素从左边弹出来或者从右边淡入淡出类似的相关效果 这样的效果怎么实现呢? 这里为大家提供一个提供这些效果的网站 https://www.webhek.com/post/css3-an ...

  2. 炫酷的svg流动线条动画效果

    下载地址 dd:

  3. 赞!15个来自 CodePen 的酷炫 CSS 动画效果

    CodePen 是一个在线的前端代码编辑和展示网站,能够编写代码并即时预览效果.你在上面可以在线分享自己的 Web 作品,也可以欣赏到世界各地的优秀开发者在网页中实现的各种令人惊奇的效果. 今天这篇文 ...

  4. css3特效框,科技常识:6种非常炫酷的CSS3按钮边框动画特效

    今天小编跟大家讲解下有关6种非常炫酷的CSS3按钮边框动画特效 ,相信小伙伴们对这个话题应该有所关注吧,小编也收集到了有关6种非常炫酷的CSS3按钮边框动画特效 的相关资料,希望小伙伴们看了有所帮助. ...

  5. html5中如何让一个动画框左右上下浮动,HTML5 SVG如何实现炫酷checkbox复选框动画特效...

    简要教程 这是一款HTML5 SVG炫酷checkbox复选框动画特效.该checkbox动画特效使用svg来构建复选框效果,然后通过CSS3动画来控制复选框的选中和取消选中状态,效果非常炫酷. 使用 ...

  6. html 边框立体效果,用纯CSS3制作的效果非常炫酷的元素边框线条动画特效

    插件描述:这是一款使用纯CSS3制作的效果非常炫酷的元素边框线条动画特效.这个元素边框线条动画使用伪元素和keyframes来制作线条运动效果. 这是一款使用纯CSS3制作的效果非常炫酷的元素边框线条 ...

  7. html边框炫酷效果,6种炫酷的CSS3按钮边框动画特效_html/css_WEB-ITnose

    这是一款效果非常炫酷的CSS3按钮边框动画特效.这组按钮边框动画共有6种不同的效果.当鼠标滑过按钮的时候,按钮的边框会以不同的方式进行各种动画,效果非常的炫酷. 在线预览 源码下载 使用方法 HTML ...

  8. css3直线运动_用纯CSS3制作的效果非常炫酷的元素边框线条动画特效

    插件描述:这是一款使用纯CSS3制作的效果非常炫酷的元素边框线条动画特效.这个元素边框线条动画使用伪元素和keyframes来制作线条运动效果. 这是一款使用纯CSS3制作的效果非常炫酷的元素边框线条 ...

  9. html表单下拉美化教程,html5和css3炫酷select下拉菜单美化效果

    html5和css3炫酷select下拉菜单美化效果 发布日期:2015-10-20 11:11 来源: 标签: 网页技术 CSS教程 html5+css3 select下拉菜单美化 这是一款使用ht ...

  10. jQuery和CSS3炫酷滚动页面内容元素动画特效

    jquery-smoove是一款jQuery和CSS3炫酷滚动页面内容元素动画特效插件.该内容元素动画插件在页面滚动到指定位置时,该位置的HTML元素会执行指定的CSS3动画特效,如旋转.翻转.放大缩 ...

最新文章

  1. NAPI模式--中断和轮询的折中以及一个负载均衡的问题
  2. JQuery与CSS相结合的下拉框
  3. java nfa dfa_DFA与NFA
  4. Android自定义View构造函数详解
  5. 人工智能产业链深度透析—产业应用医疗篇
  6. deepsort代码解读
  7. oj2894(贝尔曼福特模板)
  8. Django官方文档翻译——Django中的用户身份验证(User authentication in Django)
  9. kubernetes视频教程笔记 (31)-安全-鉴权Authorization
  10. PickerView的简单介绍
  11. 器件选型基本总则及选型标准
  12. Octotree插件
  13. 原生js获取屏幕高度
  14. 基于DDS的多波形程控信号发生器
  15. 学生评语管理系统软件测试,学校教师老师综合评价评分系统软件
  16. PowerDesigner 下载安装
  17. 《老路用得上的商学课》61-65学习笔记
  18. Eclipse下载安装配置使用
  19. UnRAR.dll解压rar文件
  20. linux查看usb设备文件,4 种方法识别Linux系统 USB 设备

热门文章

  1. 潜入蓝翔技校二十天 探究蓝翔黑客真正的奥秘
  2. freenom免费域名的申请+cloudflare(域名代理解析)
  3. 解决hexo博客标题出错-》title: Python问题解决 re.error: unbalanced parenthesis at pos
  4. NET Reflector
  5. uni-app 编译成H5页面运行,提示“连接服务器超时,请点击屏幕重试”
  6. 使用Hooks实现防抖节流 TS版本
  7. html内部css调节背景图片的大小,css中怎么改变背景图片大小?
  8. Silvaco TCAD LTPS双栅器件仿真收敛不了,有没有好的解决办法
  9. 共享鸡皮疙瘩?庆应大学开发了一种贴身设备,利用腕带和颈带数据,分享刺激感受...
  10. Scala应用场景以及环境部署