Namaste ????
Today’s this article will be based on making a Sketch Glowing Button using HTML/CSS/JS we can call it.
Tooltips Smooth Animation with HTML CSS Demo
Tooltips Smooth Animation with HTML CSS Source Code
Below code should be put between the <body> Your Code Here </body> tags.
.html file code
<!-- Created By Codinghindi.in --->
<button class="sketch-button">Coding Hindi</button>
Put this code inside <style> Your Code Here <style>tags or into style.css file
.css file code
/* --- Created By Codinghindi.in --*/
.sketch-button {
-webkit-tap-highlight-color: transparent;
cursor: pointer;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
outline: none;
border: none;
font-family: inherit;
font-size: 16px;
font-weight: 500;
background-image: linear-gradient(90deg, #fcecfe, #fbf6e7, #e6fcf5);
border-radius: 11px;
padding: 12px 20px;
position: relative;
line-height: 24px;
color: #14387e;
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.02), 0 4px 16px rgba(0, 0, 0, 0.02), 0 4px 24px rgba(0, 0, 0, 0.02);
}
.sketch-button.start svg {
-webkit-animation: stroke 1s linear;
animation: stroke 1s linear;
}
.sketch-button .lines {
position: absolute;
inset: 0;
mix-blend-mode: hard-light;
pointer-events: none;
z-index: 1;
}
.sketch-button .lines > div {
position: absolute;
inset: 0;
}
.sketch-button .lines > div:last-child {
transform: rotate(180deg);
}
.sketch-button .lines > div svg {
display: block;
position: absolute;
inset: 0;
overflow: visible;
fill: none;
stroke-width: 2;
stroke: #c9e9ff;
width: 100%;
height: 100%;
stroke-dasharray: 2 10;
stroke-dashoffset: 14;
opacity: 0;
}
.sketch-button .lines > div svg:nth-child(1) {
stroke: #f8fcff;
}
.sketch-button .lines > div svg:nth-child(2) {
stroke-width: 6px;
filter: blur(20px);
}
.sketch-button .lines > div svg:nth-child(3) {
stroke-width: 5px;
filter: blur(6px);
}
.sketch-button .lines > div svg:nth-child(4) {
stroke-width: 10px;
filter: blur(56px);
}
@-webkit-keyframes stroke {
30%, 55% {
opacity: 1;
}
100% {
stroke-dashoffset: 4;
opacity: 0;
}
}
@keyframes stroke {
30%, 55% {
opacity: 1;
}
100% {
stroke-dashoffset: 4;
opacity: 0;
}
}
html {
box-sizing: border-box;
-webkit-font-smoothing: antialiased;
}
* {
box-sizing: inherit;
}
*:before, *:after {
box-sizing: inherit;
}
body {
min-height: 100vh;
display: flex;
font-family: "Inter", Arial;
justify-content: center;
align-items: center;
background: radial-gradient(circle at 50% 0%, #3378ff 15%, #4178ff 75%);
}
body:before {
content: "";
position: absolute;
inset: 0;
background-image: url("https://assets.codepen.io/165585/noise.png");
background-size: cover;
-webkit-mask-image: radial-gradient(circle at 50% 100%, transparent 50%, black);
mask-image: radial-gradient(circle at 50% 100%, rgba(0, 0, 0, 0.3) 10%, black);
opacity: 0.25;
}
body .twitter {
position: fixed;
display: block;
right: 12px;
bottom: 12px;
}
body .twitter svg {
width: 32px;
height: 32px;
fill: #fff;
}
Put this code inside <body> <script>Your Code Here <script><body>tags .
.js File
const createSVG = (width, height, radius) => {
const svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
const rectangle = document.createElementNS(
"http://www.w3.org/2000/svg",
"rect"
);
svg.setAttributeNS(
"http://www.w3.org/2000/svg",
"viewBox",
`0 0 ${width} ${height}`
);
rectangle.setAttribute("x", "0");
rectangle.setAttribute("y", "0");
rectangle.setAttribute("width", "100%");
rectangle.setAttribute("height", "100%");
rectangle.setAttribute("rx", `${radius}`);
rectangle.setAttribute("ry", `${radius}`);
rectangle.setAttribute("pathLength", "10");
svg.appendChild(rectangle);
return svg;
};
document.querySelectorAll(".sketch-button").forEach((button) => {
const style = getComputedStyle(button);
const lines = document.createElement("div");
lines.classList.add("lines");
const groupTop = document.createElement("div");
const groupBottom = document.createElement("div");
const svg = createSVG(
button.offsetWidth,
button.offsetHeight,
parseInt(style.borderRadius, 10)
);
groupTop.appendChild(svg);
groupTop.appendChild(svg.cloneNode(true));
groupTop.appendChild(svg.cloneNode(true));
groupTop.appendChild(svg.cloneNode(true));
groupBottom.appendChild(svg.cloneNode(true));
groupBottom.appendChild(svg.cloneNode(true));
groupBottom.appendChild(svg.cloneNode(true));
groupBottom.appendChild(svg.cloneNode(true));
lines.appendChild(groupTop);
lines.appendChild(groupBottom);
button.appendChild(lines);
button.addEventListener("pointerenter", () => {
button.classList.add("start");
});
svg.addEventListener("animationend", () => {
button.classList.remove("start");
});
});
Tooltips Smooth Animation with HTML CSS Source Code Download
Thank You!