gsap结合svg实现ps钢笔绘画效果代码

代码语言:html

所属分类:拖放

代码描述:gsap结合svg实现ps钢笔绘画效果代码,有音效

代码标签: 实现 ps 钢笔 绘画 效果

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>
<html lang="en">

<head>

   
<meta charset="UTF-8">





   
<style>
       
* {
           
margin: 0;
           
padding: 0;
           
box-sizing: border-box;
       
}

        html
{
           
-webkit-font-smoothing: antialiased;
           
-moz-osx-font-smoothing: grayscale;
       
}

        body
{
           
height: 100vh;
           
display: grid;
           
place-items: center;
           
color: #1f2933;
           
background: hsl(0, 0%, 100%);
       
}

       
.canvas {
           
position: relative;
           
/* max-width: 32rem;
  aspect-ratio: 1/1; */

           
width: 100vw;
           
height: 100vh;
       
}

       
.canvas__svg {
           
position: absolute;
           
top: 0;
           
left: 0;
           
width: 100%;
           
height: 100%;
           
overflow: visible;
       
}

       
.canvas__svg-bg {}

       
.canvas__controls {
           
position: absolute;
           
bottom: 1.5rem;
           
left: 50%;
           
display: flex;
           
transform: translateX(-50%);
           
z-index: 2;
       
}

       
.canvas__btn {
           
width: 2.75rem;
           
height: 2.75rem;
           
margin-right: 1rem;
           
border: none;
           
cursor: pointer;
           
background: none;
       
}

       
.canvas__btn:last-of-type {
           
margin-right: 0;
       
}

       
.canvas__btn-icon {
           
width: 24px;
           
height: 24px;
           
fill: none;
           
stroke-width: 1.5;
           
stroke: currentColor;
           
stroke-linecap: round;
           
stroke-linejoin: round;
       
}

       
.canvas__shape {
           
fill: none;
           
stroke: currentColor;
           
stroke-width: 3;
       
}

       
.canvas__dummy-shape {
           
fill: none;
           
stroke: #7b8794;
           
stroke-dasharray: 4;
           
stroke-width: 2;
           
vector-effect: non-scaling-stroke;
           
pointer-events: none;
       
}

       
.canvas__point {
           
stroke: #000;
           
stroke-width: 3;
           
fill: #fff;
           
/*   vector-effect: non-scaling-stroke; */
       
}

       
.closed .canvas__point[data-index="0"] {
           
fill: #fff;
       
}

       
.canvas__btn--active {
           
color: #1f2933;
       
}
   
</style>



</head>

<body>
   
<div class="canvas">
       
<svg class="canvas__svg" viewBox="0 0 1920 1080" preserveAspectRatio="xMidYMid slice"></svg>
       
<div class="canvas__controls">
           
<button class="canvas__btn canvas__btn--fill canvas__btn--active">
               
<svg class="canvas__btn-icon">
                   
<path d="M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0z"></path>
               
</svg>
           
</button>
           
<button class="canvas__btn canvas__btn--delete">
               
<svg viewBox="0 0 24 24" class="canvas__btn-icon">
                   
<polyline points="3 6 5 6 21 6"></polyline>
                   
<path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"></path>
                   
<line x1="10" y1="11" x2="10" y2="17"></line>
                   
<line x1="14" y1="11" x2="14" y2="17"></line>
               
</svg>
           
</button>
       
</div>
   
</div>


   
<script type="module">
        import {
            gsap
        } from "https://cdn.skypack.dev/gsap";
        import {
            Draggable
        } from "https://cdn.skypack.dev/gsap/Draggable";
        import {
            SVG
        } from "https://cdn.skypack.dev/@svgdotjs/svg.js";
        import {
            v4 as uuidv4
        } from "https://cdn.skypack.dev/uuid";
        import {
            spline
        } from "https://cdn.skypack.dev/@georgedoescode/spline";

        console.clear();

        const pop = document.createElement("audio");
        pop.src =
        "//repo.bfw.wiki/bfwrepo/sound/60443505d58d8.wav";

        const create = document.createElement("audio");
        create.src = "//repo.bfw.wiki/bfwrepo/sound/6044351a38de4.wav";

        const btnClickSound = document.createElement("audio");
        btnClickSound.src = "//repo.bfw.wiki/bfwrepo/sound/6044352a25ba7.wav";

        // GSAP
        gsap.registerPlugin(Draggable);

        gsap.registerEffect({
            name: "elasticIn",
            effect: (targets, config) => gsap.to(targets, {
                ...config
            }),
            defaults: {
                scale: 1,
                transformOrigin: "50%",
                duration: 1.5,
                ease: "elastic.out(1, 0.3)"
            }
        });



        gsap.registerEffect({
            name: "scaleOut",
.........完整代码请登录后点击上方下载按钮下载查看

网友评论0