serialCursor是一个jQuery插件,用于创建具有永久动画的鼠标指针效果。
光标的整个设计是基于一个永不停止的旋转圆。移动将通过移动鼠标来执行。
1.在文档中加载必要的JavaScript库。
- <script src="/path/to/cdn/jquery.min.js"></script>
- <script src="/path/to/cdn/gsap.min.js"></script>
- <script src="/path/to/cdn/paper-core.min.js"></script>
- <script src="/path/to/cdn/simplex-noise.min.js"></script>
2.加载jQuery serialCursor插件的文件。
- <link href="dist/jquery.serialcursor.css" rel="stylesheet" />
- <script src="dist/jquery.serialcursor.js"></script>
3.使用默认选项初始化插件。这将对鼠标指针应用默认的光标效果。
- $(document).ready(function(){
- $('#serialcursor').serialcursor();
- });
4.使用以下参数配置光标效果。
- $('#serialcursor').serialcursor({
- stateDataAttr: 'data-serialcursor-state',
- strokeColor: 'rgba(255, 255, 255, .4)',
- strokeWidth: 1,
- noiseScale: 150,
- noiseRange: 4,
- htmlCursor: '<div id="serialcursor"></div>',
- htmlInner: '<canvas id="serialcursor-inner"></canvas>',
- htmlPointer: '<div id="serialcursor-pointer"></div>',
- htmlGrab:
- '<div id="serialcursor-pointer-grab">'+
- '<svg class="sub-icon is-left" xmlns="http://www.w3.org/2000/svg" width="8" height="15" viewBox="0 0 8 15">'+
- '<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"/>'+
- '</svg>'+
- '<svg class="sub-icon is-right" xmlns="http://www.w3.org/2000/svg" width="8" height="15" viewBox="0 0 8 15">'+
- '<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"/>'+
- '</svg>'+
- '</div>'
- });
5.覆盖光标效果的默认样式。
- #serialcursor {
- pointer-events: none;
- }
- #serialcursor-inner {
- position: fixed;
- z-index: 13;
- width: 80px;
- height: 80px;
- margin: -40px 0 0 -40px;
- opacity: 0.2;
- transition: opacity 900ms;
- }
- #serialcursor-pointer {
- position: fixed;
- z-index: 13;
- height: 8px;
- width: 8px;
- transform: translate(-50%, -50%);
- background-color: #bc2d39;
- border-radius: 100%;
- transition: 200ms;
- }
- #serialcursor.on-mousemove #serialcursor-inner {
- opacity: .6;
- }
- #serialcursor.is-click #serialcursor-inner {
- opacity: 1;
- }
- #serialcursor.is-click #serialcursor-pointer {
- transform: translate(-50%, -50%) scale(0.75);
- }
- #serialcursor-pointer-grab {
- opacity: 0;
- transition: opacity 400ms;
- }
- #serialcursor-pointer-grab .sub-icon {
- position: absolute;
- top: -2px;
- width: 6px;
- height: 14px;
- fill: #bc2d39;
- transition: 400ms;
- }
- #serialcursor-pointer-grab .sub-icon.is-left {
- left: -5px;
- }
- #serialcursor-pointer-grab .sub-icon.is-right {
- right: -5px;
- }
- #serialcursor.is-grab #serialcursor-pointer-grab {
- opacity: 1;
- }
- #serialcursor.is-grab #serialcursor-pointer-grab .sub-icon {
- fill: #fff;
- }
- #serialcursor.is-grab #serialcursor-pointer-grab .sub-icon.is-left {
- left: -16px;
- }
- #serialcursor.is-grab #serialcursor-pointer-grab .sub-icon.is-right {
- right: -16px;
- }
- [data-serialcursor-state='grab'] {
- cursor: grab;
- }