پیشنمایش زنده
کد HTML
<button
class="group relative p-0 bg-transparent focus:outline-none active:scale-90 transition-all duration-500"
>
<div
class="particle absolute left-12 top-0 text-pink-300 opacity-0 group-hover:animate-float-up pointer-events-none"
>
✦
</div>
<div
class="particle absolute right-16 top-2 text-purple-300 opacity-0 group-hover:animate-float-up pointer-events-none"
style="animation-delay: 0.7s;"
>
🌸
</div>
<div
class="particle absolute left-1/2 top-4 text-blue-300 opacity-0 group-hover:animate-float-up pointer-events-none"
style="animation-delay: 1.2s;"
>
✨
</div>
<svg
class="absolute -top-11 left-6 w-14 h-14 transition-all duration-700 group-hover:-translate-y-3 group-hover:rotate-[-8deg] z-0"
viewBox="0 0 50 50"
>
<path
d="M8 42C2 35 2 20 8 15"
stroke="#fcd34d"
stroke-width="4"
stroke-linecap="round"
fill="none"
class="origin-bottom-left animate-tail-wag"
></path>
<path d="M10 45C10 30 15 15 25 15C35 15 40 30 40 45" fill="#fbbf24"></path>
<path d="M15 18L8 5L22 15Z" fill="#fbbf24"></path>
<path d="M15 18L11 9L19 15Z" fill="#fda4af"></path>
<path d="M35 18L42 5L28 15Z" fill="#fbbf24"></path>
<path d="M35 18L39 9L31 15Z" fill="#fda4af"></path>
<g class="group-hover:scale-110 transition-transform origin-center">
<circle cx="20" cy="28" r="3" fill="white"></circle>
<circle cx="20" cy="28" r="1.5" fill="#334155"></circle>
<circle cx="30" cy="28" r="3" fill="white"></circle>
<circle cx="30" cy="28" r="1.5" fill="#334155"></circle>
</g>
<circle cx="16" cy="34" r="2" fill="#fda4af" class="opacity-60"></circle>
<circle cx="34" cy="34" r="2" fill="#fda4af" class="opacity-60"></circle>
</svg>
<svg
class="absolute -top-10 right-8 w-12 h-12 transition-all duration-700 group-hover:-translate-y-4 group-hover:rotate-[8deg] z-0"
viewBox="0 0 50 50"
>
<path d="M10 45C10 30 15 15 25 15C35 15 40 30 40 45" fill="#fef3c7"></path>
<path d="M15 18L8 8L22 15Z" fill="#fef3c7"></path>
<path d="M35 18L42 8L28 15Z" fill="#fef3c7"></path>
<g class="animate-blink origin-center">
<circle cx="20" cy="28" r="1.8" fill="#92400e"></circle>
<circle cx="30" cy="28" r="1.8" fill="#92400e"></circle>
</g>
<circle cx="15" cy="33" r="2.5" fill="#fecaca" class="opacity-50"></circle>
<circle cx="35" cy="33" r="2.5" fill="#fecaca" class="opacity-50"></circle>
</svg>
<div
class="relative z-10 w-64 h-20 rounded-[2rem] bg-gradient-to-br from-white/40 to-white/10 backdrop-blur-md border border-white/30 shadow-[0_10px_30px_rgba(0,0,0,0.05)] group-hover:shadow-[0_20px_40px_rgba(167,139,250,0.2)] flex items-center px-6 transition-all duration-500 overflow-hidden group-hover:scale-105"
>
<div
class="absolute inset-0 bg-gradient-to-r from-purple-100/50 via-pink-100/50 to-blue-100/50 opacity-0 group-hover:opacity-100 transition-opacity duration-700"
></div>
<div class="relative z-20 flex flex-col items-start leading-none ml-2">
<span
class="text-[10px] text-purple-400 font-bold uppercase tracking-[0.25em] mb-1 group-hover:text-purple-500 transition-colors"
>Find a friend</span
>
<span
class="text-slate-700 font-bold text-xl tracking-tight group-hover:text-slate-900 transition-colors"
>
Sweet Kitties
</span>
</div>
<div
class="ml-auto relative z-20 w-10 h-10 rounded-full bg-white/60 flex items-center justify-center shadow-inner transition-transform group-hover:rotate-12"
>
<svg
class="w-6 h-6 text-purple-300 group-hover:text-purple-400 transition-colors"
viewBox="0 0 24 24"
fill="currentColor"
>
<circle cx="12" cy="16" r="3.5"></circle>
<circle cx="8" cy="11" r="2"></circle>
<circle cx="12" cy="8" r="2"></circle>
<circle cx="16" cy="11" r="2"></circle>
</svg>
</div>
</div>
<div
class="absolute inset-0 rounded-[2rem] bg-purple-200/30 scale-90 opacity-0 group-hover:scale-110 group-hover:opacity-100 transition-all duration-700 -z-10"
></div>
</button>
کد CSS
/* ! tailwindcss v3.4.17 | MIT License | s://tailwindcss.com */
*,
::after,
::before {
box-sizing: border-box;
border-width: 0;
border-style: solid;
border-color: #e5e7eb;
}
::after,
::before {
--tw-content: "";
}
:host,
html {
line-height: 1.5;
-webkit-text-size-adjust: 100%;
-moz-tab-size: 4;
tab-size: 4;
font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji",
"Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
font-feature-settings: normal;
font-variation-settings: normal;
-webkit-tap-highlight-color: transparent;
}
body {
margin: 0;
line-height: inherit;
}
hr {
height: 0;
color: inherit;
border-top-width: 1px;
}
abbr:where([title]) {
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted;
}
h1,
h2,
h3,
h4,
h5,
h6 {
font-size: inherit;
font-weight: inherit;
}
a {
color: inherit;
text-decoration: inherit;
}
b,
strong {
font-weight: bolder;
}
code,
kbd,
pre,
samp {
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
"Liberation Mono", "Courier New", monospace;
font-feature-settings: normal;
font-variation-settings: normal;
font-size: 1em;
}
small {
font-size: 80%;
}
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
table {
text-indent: 0;
border-color: inherit;
border-collapse: collapse;
}
button,
input,
optgroup,
select,
textarea {
font-family: inherit;
font-feature-settings: inherit;
font-variation-settings: inherit;
font-size: 100%;
font-weight: inherit;
line-height: inherit;
letter-spacing: inherit;
color: inherit;
margin: 0;
padding: 0;
}
button,
select {
text-transform: none;
}
button,
input:where([type="button"]),
input:where([type="reset"]),
input:where([type="submit"]) {
-webkit-appearance: button;
background-color: transparent;
background-image: none;
}
:-moz-focusring {
outline: auto;
}
:-moz-ui-invalid {
box-shadow: none;
}
progress {
vertical-align: baseline;
}
::-webkit-inner-spin-button,
::-webkit-outer-spin-button {
height: auto;
}
[type="search"] {
-webkit-appearance: textfield;
outline-offset: -2px;
}
::-webkit-search-decoration {
-webkit-appearance: none;
}
::-webkit-file-upload-button {
-webkit-appearance: button;
font: inherit;
}
summary {
display: list-item;
}
blockquote,
dd,
dl,
figure,
h1,
h2,
h3,
h4,
h5,
h6,
hr,
p,
pre {
margin: 0;
}
fieldset {
margin: 0;
padding: 0;
}
legend {
padding: 0;
}
menu,
ol,
ul {
list-style: none;
margin: 0;
padding: 0;
}
dialog {
padding: 0;
}
textarea {
resize: vertical;
}
input::placeholder,
textarea::placeholder {
opacity: 1;
color: #9ca3af;
}
[role="button"],
button {
cursor: pointer;
}
:disabled {
cursor: default;
}
audio,
canvas,
embed,
iframe,
img,
object,
svg,
video {
display: block;
vertical-align: middle;
}
img,
video {
max-width: 100%;
height: auto;
}
[hidden]:where(:not([hidden="until-found"])) {
display: none;
}
.pointer-events-none {
pointer-events: none;
}
.absolute {
position: absolute;
}
.relative {
position: relative;
}
.inset-0 {
inset: 0px;
}
.-top-10 {
top: -2.5rem;
}
.-top-11 {
top: -2.75rem;
}
.left-1\/2 {
left: 50%;
}
.left-12 {
left: 3rem;
}
.left-6 {
left: 1.5rem;
}
.right-16 {
right: 4rem;
}
.right-8 {
right: 2rem;
}
.top-0 {
top: 0px;
}
.top-2 {
top: 0.5rem;
}
.top-4 {
top: 1rem;
}
.-z-10 {
z-index: -10;
}
.z-0 {
z-index: 0;
}
.z-10 {
z-index: 10;
}
.z-20 {
z-index: 20;
}
.mb-1 {
margin-bottom: 0.25rem;
}
.ml-2 {
margin-left: 0.5rem;
}
.ml-auto {
margin-left: auto;
}
.flex {
display: flex;
}
.h-10 {
height: 2.5rem;
}
.h-12 {
height: 3rem;
}
.h-14 {
height: 3.5rem;
}
.h-20 {
height: 5rem;
}
.h-6 {
height: 1.5rem;
}
.w-10 {
width: 2.5rem;
}
.w-12 {
width: 3rem;
}
.w-14 {
width: 3.5rem;
}
.w-6 {
width: 1.5rem;
}
.w-64 {
width: 16rem;
}
.origin-bottom-left {
transform-origin: bottom left;
}
.origin-center {
transform-origin: center;
}
.scale-90 {
--tw-scale-x: 0.9;
--tw-scale-y: 0.9;
transform: translate(var(--tw-translate-x), var(--tw-translate-y))
rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y))
scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
@keyframes blink {
0%,
90%,
100% {
transform: scaleY(1);
}
95% {
transform: scaleY(0.1);
}
}
.animate-blink {
animation: blink 4s infinite;
}
@keyframes tail-wag {
0%,
100% {
transform: rotate(-5deg);
}
50% {
transform: rotate(15deg);
}
}
.animate-tail-wag {
animation: tail-wag 1.5s ease-in-out infinite;
}
.flex-col {
flex-direction: column;
}
.items-start {
align-items: flex-start;
}
.items-center {
align-items: center;
}
.justify-center {
justify-content: center;
}
.overflow-hidden {
overflow: hidden;
}
.rounded-\[2rem\] {
border-radius: 2rem;
}
.rounded-full {
border-radius: 9999px;
}
.border {
border-width: 1px;
}
.border-white\/30 {
border-color: rgb(255 255 255 / 0.3);
}
.bg-purple-200\/30 {
background-color: rgb(233 213 255 / 0.3);
}
.bg-transparent {
background-color: transparent;
}
.bg-white\/60 {
background-color: rgb(255 255 255 / 0.6);
}
.bg-gradient-to-br {
background-image: linear-gradient(to bottom right, var(--tw-gradient-stops));
}
.bg-gradient-to-r {
background-image: linear-gradient(to right, var(--tw-gradient-stops));
}
.from-purple-100\/50 {
--tw-gradient-from: rgb(243 232 255 / 0.5) var(--tw-gradient-from-position);
--tw-gradient-to: rgb(243 232 255 / 0) var(--tw-gradient-to-position);
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
}
.from-white\/40 {
--tw-gradient-from: rgb(255 255 255 / 0.4) var(--tw-gradient-from-position);
--tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
}
.via-pink-100\/50 {
--tw-gradient-to: rgb(252 231 243 / 0) var(--tw-gradient-to-position);
--tw-gradient-stops: var(--tw-gradient-from),
rgb(252 231 243 / 0.5) var(--tw-gradient-via-position),
var(--tw-gradient-to);
}
.to-blue-100\/50 {
--tw-gradient-to: rgb(219 234 254 / 0.5) var(--tw-gradient-to-position);
}
.to-white\/10 {
--tw-gradient-to: rgb(255 255 255 / 0.1) var(--tw-gradient-to-position);
}
.p-0 {
padding: 0px;
}
.px-6 {
padding-left: 1.5rem;
padding-right: 1.5rem;
}
.text-\[10px\] {
font-size: 10px;
}
.text-xl {
font-size: 1.25rem;
line-height: 1.75rem;
}
.font-bold {
font-weight: 700;
}
.uppercase {
text-transform: uppercase;
}
.leading-none {
line-height: 1;
}
.tracking-\[0\.25em\] {
letter-spacing: 0.25em;
}
.tracking-tight {
letter-spacing: -0.025em;
}
.text-blue-300 {
--tw-text-opacity: 1;
color: rgb(147 197 253 / var(--tw-text-opacity, 1));
}
.text-pink-300 {
--tw-text-opacity: 1;
color: rgb(249 168 212 / var(--tw-text-opacity, 1));
}
.text-purple-300 {
--tw-text-opacity: 1;
color: rgb(216 180 254 / var(--tw-text-opacity, 1));
}
.text-purple-400 {
--tw-text-opacity: 1;
color: rgb(192 132 252 / var(--tw-text-opacity, 1));
}
.text-slate-700 {
--tw-text-opacity: 1;
color: rgb(51 65 85 / var(--tw-text-opacity, 1));
}
.opacity-0 {
opacity: 0;
}
.opacity-50 {
opacity: 0.5;
}
.opacity-60 {
opacity: 0.6;
}
.shadow-\[0_10px_30px_rgba\(0\2c 0\2c 0\2c 0\.05\)\] {
--tw-shadow: 0 10px 30px rgba(0, 0, 0, 0.05);
--tw-shadow-colored: 0 10px 30px var(--tw-shadow-color);
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000),
var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-inner {
--tw-shadow: inset 0 2px 4px 0 rgb(0 0 0 / 0.05);
--tw-shadow-colored: inset 0 2px 4px 0 var(--tw-shadow-color);
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000),
var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.backdrop-blur-md {
--tw-backdrop-blur: blur(12px);
-webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness)
var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale)
var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert)
var(--tw-backdrop-opacity) var(--tw-backdrop-saturate)
var(--tw-backdrop-sepia);
backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness)
var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale)
var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert)
var(--tw-backdrop-opacity) var(--tw-backdrop-saturate)
var(--tw-backdrop-sepia);
}
.transition-all {
transition-property: all;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms;
}
.transition-colors {
transition-property:
color,
background-color,
border-color,
fill,
stroke,
-webkit-text-decoration-color;
transition-property: color, background-color, border-color,
text-decoration-color, fill, stroke;
transition-property:
color,
background-color,
border-color,
text-decoration-color,
fill,
stroke,
-webkit-text-decoration-color;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms;
}
.transition-opacity {
transition-property: opacity;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms;
}
.transition-transform {
transition-property: transform;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms;
}
.duration-500 {
transition-duration: 500ms;
}
.duration-700 {
transition-duration: 700ms;
}
.focus\:outline-none:focus {
outline: 2px solid transparent;
outline-offset: 2px;
}
.active\:scale-90:active {
--tw-scale-x: 0.9;
--tw-scale-y: 0.9;
transform: translate(var(--tw-translate-x), var(--tw-translate-y))
rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y))
scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.group:hover .group-hover\:-translate-y-3 {
--tw-translate-y: -0.75rem;
transform: translate(var(--tw-translate-x), var(--tw-translate-y))
rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y))
scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.group:hover .group-hover\:-translate-y-4 {
--tw-translate-y: -1rem;
transform: translate(var(--tw-translate-x), var(--tw-translate-y))
rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y))
scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.group:hover .group-hover\:rotate-12 {
--tw-rotate: 12deg;
transform: translate(var(--tw-translate-x), var(--tw-translate-y))
rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y))
scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.group:hover .group-hover\:rotate-\[-8deg\] {
--tw-rotate: -8deg;
transform: translate(var(--tw-translate-x), var(--tw-translate-y))
rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y))
scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.group:hover .group-hover\:rotate-\[8deg\] {
--tw-rotate: 8deg;
transform: translate(var(--tw-translate-x), var(--tw-translate-y))
rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y))
scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.group:hover .group-hover\:scale-105 {
--tw-scale-x: 1.05;
--tw-scale-y: 1.05;
transform: translate(var(--tw-translate-x), var(--tw-translate-y))
rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y))
scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.group:hover .group-hover\:scale-110 {
--tw-scale-x: 1.1;
--tw-scale-y: 1.1;
transform: translate(var(--tw-translate-x), var(--tw-translate-y))
rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y))
scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
@keyframes float-up {
0% {
transform: translateY(0) scale(1);
opacity: 0;
}
20% {
opacity: 0.8;
}
100% {
transform: translateY(-30px) scale(1.2);
opacity: 0;
}
}
.group:hover .group-hover\:animate-float-up {
animation: float-up 2s ease-out infinite;
}
.group:hover .group-hover\:text-purple-400 {
--tw-text-opacity: 1;
color: rgb(192 132 252 / var(--tw-text-opacity, 1));
}
.group:hover .group-hover\:text-purple-500 {
--tw-text-opacity: 1;
color: rgb(168 85 247 / var(--tw-text-opacity, 1));
}
.group:hover .group-hover\:text-slate-900 {
--tw-text-opacity: 1;
color: rgb(15 23 42 / var(--tw-text-opacity, 1));
}
.group:hover .group-hover\:opacity-100 {
opacity: 1;
}
.group:hover
.group-hover\:shadow-\[0_20px_40px_rgba\(167\2c
139\2c
250\2c
0\.2\)\] {
--tw-shadow: 0 20px 40px rgba(167, 139, 250, 0.2);
--tw-shadow-colored: 0 20px 40px var(--tw-shadow-color);
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000),
var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}