这是一款纯CSS手写体风格按钮效果。该按钮的边框制作为类似儿童涂鸦手绘的风格,点击时带有虚线边框,效果非常炫酷。
使用方法
HTML代码
<button class="but1">Button 1</button> <button class="but2">Button 2</button> <button class="but3">Button 3</button> <button class="but4">Button 4</button> <button class="but5">Button 5</button> <button class="but6">Button 6</button> <svg class="squigglysvg" xmlns="http://www.w3.org/2000/svg" version="1.1"> <defs> <filter id="squiggly-0"> <feturbulence id="turbulence" basefrequency="0.02" numoctaves="3" result="noise" seed="0"></feturbulence> <fedisplacementmap id="displacement" in="SourceGraphic" in2="noise" scale="6"></fedisplacementmap> </filter> <filter id="squiggly-1"> <feturbulence id="turbulence" basefrequency="0.02" numoctaves="3" result="noise" seed="1"></feturbulence> <fedisplacementmap in="SourceGraphic" in2="noise" scale="8"></fedisplacementmap> </filter> <filter id="squiggly-2"> <feturbulence id="turbulence" basefrequency="0.02" numoctaves="3" result="noise" seed="2"></feturbulence> <fedisplacementmap in="SourceGraphic" in2="noise" scale="6"></fedisplacementmap> </filter> <filter id="squiggly-3"> <feturbulence id="turbulence" basefrequency="0.02" numoctaves="3" result="noise" seed="3"></feturbulence> <fedisplacementmap in="SourceGraphic" in2="noise" scale="8"></fedisplacementmap> </filter> <filter id="squiggly-4"> <feturbulence id="turbulence" basefrequency="0.02" numoctaves="3" result="noise" seed="4"></feturbulence> <fedisplacementmap in="SourceGraphic" in2="noise" scale="6"></fedisplacementmap> </filter> <filter id="squiggly-5"> <feturbulence id="turbulence" basefrequency="0.02" numoctaves="3" result="noise" seed="9"></feturbulence> <fedisplacementmap in="SourceGraphic" in2="noise" scale="6"></fedisplacementmap> </filter> </defs> </svg>
CSS代码
button { --clr: #F9F6EF; --fg: #1f2020; border: none; cursor: pointer; color: var(--fg); background: transparent; padding: 0.7em 1.2em; font-size: 1.4rem; font-weight: 700; font-family: inherit; width: max-content; position: relative; text-align: center; transition: 0.1s linear; filter: drop-shadow(0.1em 0.1em 0.1em color-mix(in srgb, var(--clr), transparent 50%)); } button:before { --clrs1: color-mix(in lab, var(--clr), #0000 50%); --clrs2: color-mix(in lab, var(--clr), #0000 20%); --clrs3: color-mix(in lab, var(--clr), #0000 60%); --clrs4: color-mix(in lab, var(--clr), #0000 98%); position: absolute; content: ""; inset: 0; padding: 0.1em; border: 4px double var(--clr); border-radius: 0.1em 0.2em/0.5em 0.23em; z-index: -1; transition: 0.25s ease; background: linear-gradient(178deg, var(--clrs1), var(--clrs2) 20% 70%, var(--clrs3) 90%, var(--clrs4)) 0 0/100% 0.3rem; background-clip: content-box; } button:active { translate: 0.05em 0.1em; filter: drop-shadow(-0.1em -0.1em 0.1em color-mix(in srgb, var(--clr), transparent 50%)); } button:active:before { filter: url("#squiggly-0"); } button:focus { outline: 2px dashed color-mix(in srgb, var(--clr), transparent 90%); outline-offset: 0.5rem; border-radius: 0.25em; } .but1:before { filter: url("#squiggly-0"); } .but1:active:before { filter: url("#squiggly-5"); } .but2 { --clr: hsl(80 75% 75%); } .but2::before { filter: url("#squiggly-1"); } .but3 { --clr: hsl(180 75% 75%); } .but3:before { filter: url("#squiggly-2"); } .but4 { --clr: hsl(240 75% 75%); } .but4:before { filter: url("#squiggly-3"); } .but5 { --clr: hsl(320 75% 75%); } .but5:before { filter: url("#squiggly-4"); } .but6 { --clr: hsl(0 75% 75%); } .but6:before { filter: url("#squiggly-5"); } .m_title { font-family: "Edu NSW ACT Foundation", cursive; color: #F9F3EE; grid-column: 1/-1; margin: 0; font-weight: 500; font-size: 2.7rem; } .squigglysvg { display: hidden; position: absolute; width: 0; height: 0; } .container { font-family: "Merienda", cursive; min-height: 60vh; margin: 0; display: grid; grid-template-columns: 1fr 1fr; place-content: center; place-items: center; gap: 2em; background-color: #1f2020; background-image: radial-gradient(#535150, #1f2020); } button:nth-of-type(2n-1) { justify-self: right; } button:nth-of-type(2n) { justify-self: left; }
codepen网址:https://codepen.io/ghaste/pen/QWPgxxO