非常酷 动画光标 jQuery serialCursor

  • 源码大小:10.43KB
  • 所需积分:1积分
  • 源码编号:19JP-3623
  • 浏览次数:740次
  • 最后更新:2023年07月03日
  • 所属栏目:动画
本站默认解压密码:19jp.com 或 19jp_com

简介

serialCursor是一个jQuery插件,用于创建具有永久动画的鼠标指针效果。

光标的整个设计是基于一个永不停止的旋转圆。移动将通过移动鼠标来执行。

参见:

  • jQuery和GSAP中的交互式光标效果
  • jQuery和GSAP中的花式光标动画-光标和磁性

如何使用它:

1.在文档中加载必要的JavaScript库。

  • jQuery
  • 通用安全协议
  • 纸张.js
  • 简单噪音.js
  1. <script src="/path/to/cdn/jquery.min.js"></script>
  2. <script src="/path/to/cdn/gsap.min.js"></script>
  3. <script src="/path/to/cdn/paper-core.min.js"></script>
  4. <script src="/path/to/cdn/simplex-noise.min.js"></script>

2.加载jQuery serialCursor插件的文件。

  1. <link href="dist/jquery.serialcursor.css" rel="stylesheet" />
  2. <script src="dist/jquery.serialcursor.js"></script>

3.使用默认选项初始化插件。这将对鼠标指针应用默认的光标效果。

  1. $(document).ready(function(){
  2. $('#serialcursor').serialcursor();
  3. });

4.使用以下参数配置光标效果。

  1. $('#serialcursor').serialcursor({
  2. stateDataAttr: 'data-serialcursor-state',
  3. strokeColor: 'rgba(255, 255, 255, .4)',
  4. strokeWidth: 1,
  5. noiseScale: 150,
  6. noiseRange: 4,
  7. htmlCursor: '<div id="serialcursor"></div>',
  8. htmlInner: '<canvas id="serialcursor-inner"></canvas>',
  9. htmlPointer: '<div id="serialcursor-pointer"></div>',
  10. htmlGrab:
  11. '<div id="serialcursor-pointer-grab">'+
  12. '<svg class="sub-icon is-left" xmlns="http://www.w3.org/2000/svg" width="8" height="15" viewBox="0 0 8 15">'+
  13. '<path d="M6.42,14.68A1,1,0,1,0,7.9,13.27L2.43,7.5,7.9,1.73a1,1,0,0,0,0-1.45,1,1,0,0,0-1.44,0L.28,6.8a1,1,0,0,0,0,1.4Z"/>'+
  14. '</svg>'+
  15. '<svg class="sub-icon is-right" xmlns="http://www.w3.org/2000/svg" width="8" height="15" viewBox="0 0 8 15">'+
  16. '<path d="M1.77.32A1,1,0,0,0,.28,1.73L5.75,7.5.28,13.27a1,1,0,1,0,1.49,1.41L7.9,8.2a1,1,0,0,0,0-1.4Z"/>'+
  17. '</svg>'+
  18. '</div>'
  19. });

5.覆盖光标效果的默认样式。

  1. #serialcursor {
  2. pointer-events: none;
  3. }
  4.  
  5. #serialcursor-inner {
  6. position: fixed;
  7. z-index: 13;
  8. width: 80px;
  9. height: 80px;
  10. margin: -40px 0 0 -40px;
  11. opacity: 0.2;
  12. transition: opacity 900ms;
  13. }
  14.  
  15. #serialcursor-pointer {
  16. position: fixed;
  17. z-index: 13;
  18. height: 8px;
  19. width: 8px;
  20. transform: translate(-50%, -50%);
  21. background-color: #bc2d39;
  22. border-radius: 100%;
  23. transition: 200ms;
  24. }
  25.  
  26. #serialcursor.on-mousemove #serialcursor-inner {
  27. opacity: .6;
  28. }
  29.  
  30. #serialcursor.is-click #serialcursor-inner {
  31. opacity: 1;
  32. }
  33.  
  34. #serialcursor.is-click #serialcursor-pointer {
  35. transform: translate(-50%, -50%) scale(0.75);
  36. }
  37.  
  38. #serialcursor-pointer-grab {
  39. opacity: 0;
  40. transition: opacity 400ms;
  41. }
  42.  
  43. #serialcursor-pointer-grab .sub-icon {
  44. position: absolute;
  45. top: -2px;
  46. width: 6px;
  47. height: 14px;
  48. fill: #bc2d39;
  49. transition: 400ms;
  50. }
  51.  
  52. #serialcursor-pointer-grab .sub-icon.is-left {
  53. left: -5px;
  54. }
  55.  
  56. #serialcursor-pointer-grab .sub-icon.is-right {
  57. right: -5px;
  58. }
  59.  
  60. #serialcursor.is-grab #serialcursor-pointer-grab {
  61. opacity: 1;
  62. }
  63.  
  64. #serialcursor.is-grab #serialcursor-pointer-grab .sub-icon {
  65. fill: #fff;
  66. }
  67.  
  68. #serialcursor.is-grab #serialcursor-pointer-grab .sub-icon.is-left {
  69. left: -16px;
  70. }
  71.  
  72. #serialcursor.is-grab #serialcursor-pointer-grab .sub-icon.is-right {
  73. right: -16px;
  74. }
  75.  
  76. [data-serialcursor-state='grab'] {
  77. cursor: grab;
  78. }

预览截图