Jquery+CSS3实现网页加载后的入场动画特效

多数网站首页的数据往往是最庞大的,三到五秒打开都算比较优秀,因此设置一个开场(预加载)动画特效能够大幅度提升用户感官体验,这里分享本站使用的加载动画,整体比较简约清新

Jquery+CSS3实现网页加载后的入场动画特效

所属分类: WEB
专题标签: Jquery CSS 动画

关于预加载动画

网站首页增加一个预加载动画,让用户首次访问网站的时候不会因为等待资源准备时间过长而感到枯燥。
CSS3的动画效果利用的是keyframes帧动画能力,可以理解为纯代码实现了界面的动画效果。
以前很多人会使用一个动态的图片作为预加载动画,效果很酷。
不过gif的图片相对而言会比较大一点,如果想展现更加优秀的动画效果,就需要精细的图片+更多的帧。
制作一个动态的gif本身并不困难,不太好的地方在于不能够随意更换以及自定义色彩。
因此,使用Jquery+CSS3+HTML一个新的方案来替代图片是一个比较好的解决方案。

检查是否引入Jquery

99%的网站一般都会引入Jquery库,通过Chrome内核的浏览器,右击查看网站源代码。
Ctrl+F调出搜索框,输入Jquery,检查您的网站是否引入了Jquery库。
如果没有,您需要考虑使用原生JS代码实现class的移除等。
这里为了让案例各位简洁,直接使用Jquery库来实现。

实现思路

  1. 打开页面在默认显示加载的动画元素(因此动画元素应当浮在所有内容的上方并盖住其他内容)
  2. JS判断页面DOM是否Load完成($(window).load 和 $(document).ready 都可以使用,虽然有差别,整体感知不明显)
  3. Load完成后对动画元素隐藏即可

定义preloading.css

由于CSS中的特效定义比较多,解释起来比较麻烦。
感兴趣可以学习一些CSS3的线性动画特性。

  1. .loader{
  2. position:fixed;
  3. left:50%;
  4. top:50%;
  5. margin:-0.2em 0 0 -0.2em;
  6. text-indent:-9999em;
  7. border-top:.3em solid rgba(0,0,0,0.1);
  8. border-right:.3em solid rgba(0,0,0,0.1);
  9. border-bottom:.3em solid rgba(0,0,0,0.1);
  10. border-left:.3em solid #9cc;
  11. /* 篇幅原因省略了一些兼容性CSS配置 */
  12. transform:translateZ(0);
  13. /* 关键CSS:关联对应的动画配置loader ,篇幅原因省略了一些兼容性CSS配置 */
  14. animation:loader .5s infinite linear;
  15. z-index:999;
  16. }
  17. .loader,.loader:after{
  18. border-radius:50%;width:2em;height:2em
  19. }
  20. .curtain{
  21. position:fixed;
  22. width:100%;
  23. height:100%;
  24. top:0;
  25. left:0;
  26. background-color:white;
  27. filter:alpha(opacity=0);
  28. opacity:0;
  29. z-index:0
  30. }
  31. .sending .curtain{
  32. top:0px;
  33. }
  34. /* 动画配置loader,篇幅原因省略了一些兼容性CSS配置 */
  35. @keyframes loader{
  36. 0%{
  37. -webkit-transform:rotate(0deg);
  38. transform:rotate(0deg);
  39. }
  40. 100%{
  41. -webkit-transform:rotate(360deg);
  42. transform:rotate(360deg);
  43. }
  44. }
  45. .is-loading .loader,.is-loading .curtain
  46. {
  47. filter:progid:DXImageTransform.Microsoft.Alpha(enabled=false);
  48. opacity:1
  49. }
  50. .is-loading .curtain{
  51. z-index:999
  52. }
  53. /* 自定义滚动条样式,可有可无 */
  54. ::-webkit-scrollbar
  55. {
  56. width:12px;
  57. height:12px;
  58. }
  59. ::-webkit-scrollbar-thumb
  60. {
  61. border-radius:2px;
  62. background-color:#99cccc;
  63. background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.2) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.2) 50%,rgba(255,255,255,.2) 75%,transparent 75%,transparent);
  64. }
  65. ::-webkit-scrollbar-track
  66. {
  67. -webkit-box-shadow:inset 0 0 6px #ddd;
  68. background-color:#fbfbfb;
  69. border-radius:2px;
  70. }

引入CSS文件

放在head便签区域内的最下方(尽量优先加载)。

  1. <head>
  2. <link rel="stylesheet" type="text/css" href="css/preloading.css">
  3. </head>

定义元素并应用

放在body区域最上方,主要便于浮动时可以盖住其他元素。

  1. <body>
  2. <div class="is-loading" id="load">
  3. <div class="curtain">
  4. <div class="loader">
  5. </div>
  6. </div>
  7. </div>
  8. <script type="text/javascript">
  9. //确保Jquey已加载后执行进入
  10. (function($){
  11. //$(window).load 和 $(document).ready 都可以使用,虽然有差别,整体感知不明显
  12. $(window).on("load", function() {
  13. window.setTimeout(function() {
  14. //隐藏或者移除Class均可以使用
  15. //推荐用CSS特性实现
  16. //$("#load").removeClass("is-loading");
  17. $("#load").hide(500);
  18. }, 100);
  19. });
  20. })(jQuery);
  21. </script>
  22. </body>