پیشنمایش زنده
کد HTML
<label class="checkbox-wrapper">
<input type="checkbox" />
<div class="checkmark">
<svg stroke="currentColor" fill="none" viewBox="0 0 24 24">
<path
stroke-linejoin="round"
stroke-linecap="round"
stroke-width="3"
d="M20 6L9 17L4 12"
></path>
</svg>
</div>
<span class="label">Neon Checkbox</span>
</label>
کد CSS
/* From Uiverse.io by 3HugaDa3 */
.checkbox-wrapper {
--checkbox-size: 25px;
--checkbox-color: #00ff88;
--checkbox-shadow: rgba(0, 255, 136, 0.3);
--checkbox-border: rgba(0, 255, 136, 0.7);
display: flex;
align-items: center;
position: relative;
cursor: pointer;
padding: 10px;
}
.checkbox-wrapper input {
position: absolute;
opacity: 0;
cursor: pointer;
height: 0;
width: 0;
}
.checkbox-wrapper .checkmark {
position: relative;
width: var(--checkbox-size);
height: var(--checkbox-size);
border: 2px solid var(--checkbox-border);
border-radius: 8px;
transition: all 0.4s cubic-bezier(0.25, 0.1, 0.25, 1); /* Используем более плавный кубический безе */
display: flex;
justify-content: center;
align-items: center;
background: rgba(0, 0, 0, 0.2);
box-shadow: 0 0 15px var(--checkbox-shadow);
overflow: hidden;
}
.checkbox-wrapper .checkmark::before {
content: "";
position: absolute;
width: 100%;
height: 100%;
background: linear-gradient(45deg, var(--checkbox-color), #00ffcc);
opacity: 0;
transition: all 0.4s cubic-bezier(0.25, 0.1, 0.25, 1); /* Используем более плавный кубический безе */
transform: scale(0) rotate(-45deg);
}
.checkbox-wrapper input:checked ~ .checkmark::before {
opacity: 1;
transform: scale(1) rotate(0);
}
.checkbox-wrapper .checkmark svg {
width: 0;
height: 0;
color: #1a1a1a;
z-index: 1;
transition: all 0.4s cubic-bezier(0.25, 0.1, 0.25, 1); /* Используем более плавный кубический безе */
filter: drop-shadow(0 0 2px rgba(0, 0, 0, 0.5));
}
.checkbox-wrapper input:checked ~ .checkmark svg {
width: 18px;
height: 18px;
/* transform: rotate(360deg); <-- УДАЛЕНО */
}
.checkbox-wrapper:hover .checkmark {
border-color: var(--checkbox-color);
transform: scale(1.1);
box-shadow:
0 0 20px var(--checkbox-shadow),
0 0 40px var(--checkbox-shadow),
inset 0 0 10px var(--checkbox-shadow);
transition: all 0.3s cubic-bezier(0.25, 0.1, 0.25, 1); /* Добавляем плавный переход */
}
.checkbox-wrapper input:checked ~ .checkmark {
animation: pulse 1s cubic-bezier(0.25, 0.1, 0.25, 1);
}
@keyframes pulse {
0% {
transform: scale(1);
box-shadow: 0 0 15px var(--checkbox-shadow); /* Уменьшаем начальный бокс-шадоу */
}
50% {
transform: scale(0.95); /* Меняем значение для более плавного эффекта */
box-shadow:
0 0 25px var(--checkbox-shadow),
0 0 40px var(--checkbox-shadow);
}
100% {
transform: scale(1);
box-shadow: 0 0 15px var(--checkbox-shadow); /* Уменьшаем конечный бокс-шадоу */
}
}
.checkbox-wrapper .label {
margin-left: 15px;
font-family: "Segoe UI", sans-serif;
color: var(--checkbox-color);
font-size: 18px;
text-shadow: 0 0 10px var(--checkbox-shadow);
opacity: 0.9;
transition: all 0.3s ease; /* Используем стандартное easing */
}
.checkbox-wrapper:hover .label {
opacity: 1;
transform: translateX(5px);
}
/* Glowing dots animation */
.checkbox-wrapper::after,
.checkbox-wrapper::before {
content: "";
position: absolute;
width: 4px;
height: 4px;
border-radius: 50%;
background: var(--checkbox-color);
opacity: 0;
transition: all 0.5s ease; /* Используем стандартное easing */
}
.checkbox-wrapper::before {
left: -10px;
top: 50%;
}
.checkbox-wrapper::after {
right: -10px;
top: 50%;
}
.checkbox-wrapper:hover::before {
opacity: 1;
transform: translateX(-10px);
box-shadow: 0 0 10px var(--checkbox-color);
}
.checkbox-wrapper:hover::after {
opacity: 1;
transform: translateX(10px);
box-shadow: 0 0 10px var(--checkbox-color);
}