Кнопки Cyberpunk 2077 на чистом CSS + HTML
Отличное решение на оригинальные кнопки Cyberpunk 2077, которые выполнены на чистом CSS, где при наведении клика происходит уникальная анимация. Здесь представлено 2 варианта, что по своей структуре они аналогичны друг другу, разве с анимацией здесь будут немного расходится, ведь стилистика по сути одна, но классы разные. К дублированной кнопке будет применена некоторая форма анимации обрезки. Теперь о название, в том случаи, если вы хоть немного интересуетесь видеоиграми, вы, несомненно, знакомы с Cyberpunk 2077, то это одна из самых ожидаемых игр 2020 года, где мир имеет определенный стиль. В представленных кнопках дизайн отлично передает внешний вид, что означает для некоторых довольно привлекательных компонентов пользовательского интерфейса. И теперь появился тематические кнопки, что на светлом или темном фоне смотрятся просто блистательно, ведь анимация на высоте, а точнее сопровождает саму игру во всех ее проявлениях. Сами кнопки можно задействовать под разные функции, а также в заданной стилистике у вас появляется возможность кардинально изменить по цветовой палитре, а также задать свою анимацию, это сделать ее быстрее или медленнее по скорости. Кнопки CSS Cyberpunk 2077 - перенесите ваш CSS в Ночной город Установка: HTML Код <button class="karkas-knopku"> Кибер<span aria-hidden>_</span> <span aria-hidden class="animatsiya">Кибер_</span> <span aria-hidden class="meshchenia">HTML</span> </button> <button class="karkas-knopku"> ZORNET.RU<span aria-hidden>_</span> <span aria-hidden class="animatsiya">ZORNET.RU_</span> <span aria-hidden class="meshchenia">CSS</span> </button> CSS Код @font-face { font-family: Cyber; src: url("https://assets.codepen.io/605876/Blender-Pro-Bold.otf"); font-display: swap; } * { box-sizing: border-box; } body { display: flex; align-items: center; flex-direction: column; justify-content: center; min-height: 100vh; font-family: 'Cyber', sans-serif; background: linear-gradient(90deg, #f5ed00 70%, #e6de00 70%), #fff700; } body .karkas-knopku + .karkas-knopku { margin-top: 2rem; } .karkas-knopku { --primary: hsl(var(--primary-hue), 85%, calc(var(--primary-lightness, 50) * 1%)); --shadow-primary: hsl(var(--shadow-primary-hue), 90%, 50%); --primary-hue: 0; --primary-lightness: 50; --color: hsl(0, 0%, 100%); --font-size: 26px; --shadow-primary-hue: 180; --label-size: 9px; --shadow-secondary-hue: 60; --shadow-secondary: hsl(var(--shadow-secondary-hue), 90%, 60%); --clip: polygon(0 0, 100% 0, 100% 100%, 95% 100%, 95% 90%, 85% 90%, 85% 100%, 8% 100%, 0 70%); --border: 4px; --shimmy-distance: 5; --clip-one: polygon(0 2%, 100% 2%, 100% 95%, 95% 95%, 95% 90%, 85% 90%, 85% 95%, 8% 95%, 0 70%); --clip-two: polygon(0 78%, 100% 78%, 100% 100%, 95% 100%, 95% 90%, 85% 90%, 85% 100%, 8% 100%, 0 78%); --clip-three: polygon(0 44%, 100% 44%, 100% 54%, 95% 54%, 95% 54%, 85% 54%, 85% 54%, 8% 54%, 0 54%); --clip-four: polygon(0 0, 100% 0, 100% 0, 95% 0, 95% 0, 85% 0, 85% 0, 8% 0, 0 0); --clip-five: polygon(0 0, 100% 0, 100% 0, 95% 0, 95% 0, 85% 0, 85% 0, 8% 0, 0 0); --clip-six: polygon(0 40%, 100% 40%, 100% 85%, 95% 85%, 95% 85%, 85% 85%, 85% 85%, 8% 85%, 0 70%); --clip-seven: polygon(0 63%, 100% 63%, 100% 80%, 95% 80%, 95% 80%, 85% 80%, 85% 80%, 8% 80%, 0 70%); font-family: 'Cyber', sans-serif; color: var(--color); cursor: pointer; background: transparent; text-transform: uppercase; font-size: var(--font-size); outline: transparent; letter-spacing: 2px; position: relative; font-weight: 700; border: 0; min-width: 300px; height: 75px; line-height: 75px; transition: background 0.2s; } .karkas-knopku:hover { --primary: hsl(var(--primary-hue), 85%, calc(var(--primary-lightness, 50) * 0.8%)); } .karkas-knopku:active { --primary: hsl(var(--primary-hue), 85%, calc(var(--primary-lightness, 50) * 0.6%)); } .karkas-knopku:after, .karkas-knopku:before { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; clip-path: var(--clip); z-index: -1; } .karkas-knopku:before { background: var(--shadow-primary); transform: translate(var(--border), 0); } .karkas-knopku:after { background: var(--primary); } .meshchenia { position: absolute; padding: 1px 4px; letter-spacing: 1px; line-height: 1; bottom: -5%; right: 5%; font-weight: normal; color: hsl(0, 0%, 0%); font-size: var(--label-size); } .animatsiya { position: absolute; top: calc(var(--border) * -1); left: calc(var(--border) * -1); right: calc(var(--border) * -1); bottom: calc(var(--border) * -1); background: var(--shadow-primary); text-shadow: 2px 2px var(--shadow-primary), -2px -2px var(--shadow-secondary); clip-path: var(--clip); animation: glitch 2s infinite; display: none; } .karkas-knopku:hover .animatsiya { display: block; } .animatsiya:before { content: ''; position: absolute; top: calc(var(--border) * 1); right: calc(var(--border) * 1); bottom: calc(var(--border) * 1); left: calc(var(--border) * 1); clip-path: var(--clip); background: var(--primary); z-index: -1; } @keyframes glitch { 0% { clip-path: var(--clip-one); } 2%, 8% { clip-path: var(--clip-two); transform: translate(calc(var(--shimmy-distance) * -1%), 0); } 6% { clip-path: var(--clip-two); transform: translate(calc(var(--shimmy-distance) * 1%), 0); } 9% { clip-path: var(--clip-two); transform: translate(0, 0); } 10% { clip-path: var(--clip-three); transform: translate(calc(var(--shimmy-distance) * 1%), 0); } 13% { clip-path: var(--clip-three); transform: translate(0, 0); } 14%, 21% { clip-path: var(--clip-four); transform: translate(calc(var(--shimmy-distance) * 1%), 0); } 25% { clip-path: var(--clip-five); transform: translate(calc(var(--shimmy-distance) * 1%), 0); } 30% { clip-path: var(--clip-five); transform: translate(calc(var(--shimmy-distance) * -1%), 0); } 35%, 45% { clip-path: var(--clip-six); transform: translate(calc(var(--shimmy-distance) * -1%)); } 40% { clip-path: var(--clip-six); transform: translate(calc(var(--shimmy-distance) * 1%)); } 50% { clip-path: var(--clip-six); transform: translate(0, 0); } 55% { clip-path: var(--clip-seven); transform: translate(calc(var(--shimmy-distance) * 1%), 0); } 60% { clip-path: var(--clip-seven); transform: translate(0, 0); } 31%, 61%, 100% { clip-path: var(--clip-four); } } .karkas-knopku:nth-of-type(2) { --primary-hue: 260; } Здесь прилагаться страница с demo, где при наведение курсора на саму основу кнопки, то будет эффект шума. Обратите внимание, как мы используем вставку box-shadow вместо границы для этой синей линии, все ро потому, что граница сместила бы наш текст по центру. Демонстрация |
Поделиться в социальных сетях
Материал разместил
Комментарии: 0 | |