当前位置:   article > 正文

CSS3实现提示工具的渐入渐出效果及CSS3动画简介

CSS3实现提示工具的渐入渐出效果及CSS3动画简介

上一篇文章用CSS3实现了一个提示工具,本文介绍如何利用CSS3实现提示工具以渐入的方式呈现,以渐出的方式消失。

CSS3主要可以通过两个样式来实现动画效果:animation和transition。

其中,animation需要自己定义一组关键帧从而实现动画,例如:

  1. @keyframes fadein {
  2. from {
  3. opacity: 0;
  4. }
  5. to {
  6. opacity: 1;
  7. visibility: visible;
  8. }
  9. }
  10. @keyframes fadeout {
  11. from {
  12. opacity: 1;
  13. visibility: visible;
  14. }
  15. to {
  16. opacity: 0;
  17. visibility: hidden;
  18. }
  19. }
  20. .tooltip .tooltiptext {
  21. visibility: hidden;
  22. animation:fade 1s infinite;
  23. }
  24. .tooltip:hover .tooltiptext {
  25. animation: fadein 2s 1;
  26. }

上面的css中fadein和fadeout定义了两组动画关键帧(其中每组关键帧中样式组的名称“from”、“to”其实是可以自己随便写的,只要不违反CSS命名规则即可),每一组关键帧实际上就是一个动画,fadein和fadeout就是动画的名称。完成动画定义后,在需要播放动画的元素的CSS中用样式animation即可播放,它的参数包括要播放的关键组(动画)名称、持续时间和重播次数(infinite表示无限循环播放)。如上面的定义就可以在鼠标进入工具元素区域时让提示文本渐入,鼠标移出工具元素区域时让提示文本渐出。还可以通过“,”分隔在animation样式中播放多个动画。

animation动画可以精确控制动画的关键帧,但是编写CSS比较复杂。在提示工具这个用例中显然没必要弄得这么复杂,因此,可以用自动生成关键帧的transition样式来编写。

在上文中的animation动画中,我们使用了visibility和opacity两个属性来控制tooltiptext的显示与隐藏。这主要是由于visibility样式在hidden和visible之间没有过渡状态,因此,无法通过transition产生平滑渐入渐出式动画,也无法在关键帧组中自己定义出一个中间状态,它只会在到了播放时间时突然出现或者消失,而opacity则从0到1之间有无限个可用的连续值作为中间状态。

使用transition样式来实现tooltiptext的渐入渐出可以按如下方式定义:

  1. .tooltip .tooltiptext {
  2. visibility: hidden;
  3. opacity: 0;
  4. transition: opacity 2s linear,visibility 2s;
  5. }
  6. .tooltip:hover .tooltiptext {
  7. visibility: visible;
  8. opacity: 1;
  9. transition: opacity 2s linear;
  10. }

可以看出来transition比animation的CSS定义要简洁得多,但是与animation对tooltiptext的visibility和opacity的初始定义要求并不严格不同的是,transition则必须要严格定义好tooltiptext的visibility和opacity的初始值。完整演示页面如下:

  1. <!DOCTYPE html>
  2. <html lang="zh">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>tooltip的渐入与渐出</title>
  6. <style>
  7. .tooltip {
  8. position: relative;
  9. display: inline-block;
  10. background-color: aqua;
  11. }
  12. .tooltip .tooltiptext {
  13. width: 140%;
  14. background-color: gray;
  15. text-align: left;
  16. text-indent: 2em;
  17. border-radius: 0.5em;
  18. padding: 0.2em 0.1em;
  19. color: #ff0;
  20. top: 1.5em;
  21. left: 1em;
  22. /* 定位 */
  23. position: absolute;
  24. z-index: 1;
  25. /*动画效果*/
  26. visibility: hidden;
  27. transition: opacity 2s linear, visibility 2s;
  28. opacity: 0;
  29. }
  30. .tooltip:hover .tooltiptext {
  31. visibility: visible;
  32. opacity: 1;
  33. transition: opacity 2s linear;
  34. }
  35. </style>
  36. </head>
  37. <body>
  38. <div class="tooltip">工具元素
  39. <span class="tooltiptext">搜索后如有匹配内容高亮,请清空搜索框消除高亮,以免高亮标记被笔记保存。</span>
  40. <input type="text" placeholder="搜索...">
  41. </div>
  42. <span>相邻元素</span><br>
  43. <div>下方的元素</div>
  44. </body>
  45. </html>

页面效果如下:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/845869
推荐阅读
相关标签
  

闽ICP备14008679号