<html>
<head>
<title>Shiny Button</title>
</head>
<body>
<div class="container">
<a href="#" class="btn btn-hover">CodeBlanks</a>
<a href="#" class="btn btn-hover bg-black">Shine</a>
<a href="#" class="btn btn-anim">Animated Shine</a>
<a href="#" class="btn-alt">Alternative Shine Effect</a>
</div>
</body>
</html>
Giriş yap
Snippet’leri beğenmek ve favorilerine eklemek için ücretsiz hesabınla giriş yap.
@import url(https://fonts.googleapis.com/css?family=Raleway:300);
:root {
--btn-border: 1px solid rgba(255, 255, 255, 0.2);
--btn-bg: transparent;
--btn-shadow: 1px 1px 25px 10px rgba(255, 255, 255, 0.5);
--btn-text-color: #f4f4f4;
--shine-degree: 120deg;
--shine-color: rgba(255, 255, 255, 0.2);
--shine-effect: linear-gradient(var(--shine-degree), transparent, var(--shine-color), transparent);
--shine-transition: all 0.65s ease-in-out;
}
* {
padding: 0;
margin: 0;
box-sizing: border-box;
}
body {
background: #111;
font-family: "Raleway", Arial, Helvetica, sans-serif;
}
body .container {
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
padding: 2rem;
}
.btn {
position: relative;
overflow: hidden;
font-size: 1.1rem;
padding: 1rem 3rem;
border-radius: 4px;
text-decoration: none;
border: 4px solid rgba(255, 255, 255, 0.2);
color: #f4f4f4;
background: #8d3131;
width: 400px;
height: 100px;
border-radius: 50px;
text-align: center;
align-content: center;
}
.btn:not(:last-child) {
margin-bottom: 3rem;
}
.btn::before {
content: "";
position: absolute;
top: 0;
width: 100%;
height: 100%;
background: linear-gradient(120deg, transparent, rgba(255, 255, 255, 0.2), transparent);
}
.bg-black {
background: #000000;
}
.btn-hover::before {
left: -100%;
transition: all 0.65s ease-in-out;
}
.btn-hover:hover::before {
left: 100%;
}
.btn-hover:hover {
box-shadow: 1px 1px 7px 5px rgb(255 255 255 / 10%);
}
.btn-anim::before {
-webkit-animation: shine 5s ease-in-out infinite;
animation: shine 5s ease-in-out infinite;
}
@-webkit-keyframes shine {
0% {
left: -100%;
transition-property: left;
}
11.5044247788%,
100% {
left: 100%;
transition-property: left;
}
}
@keyframes shine {
0% {
left: -100%;
transition-property: left;
}
11.5044247788%,
100% {
left: 100%;
transition-property: left;
}
}
.btn-alt {
display: inline-flex;
align-items: center;
justify-content: center;
width: 250px;
height: 60px;
font-size: 1.1rem;
position: relative;
overflow: hidden;
border-radius: 4px;
text-decoration: none;
border: var(--btn-border);
color: var(--btn-text-color);
background: var(--btn-bg);
}
.btn-alt:not(:last-child) {
margin-bottom: 3rem;
}
.btn-alt::before,
.btn-alt::after {
content: "";
display: block;
position: absolute;
height: 100%;
top: 0;
}
.btn-alt:before {
background: rgba(255, 255, 255, 0.5);
width: 60px;
left: 0;
filter: blur(30px);
-webkit-animation: shine-alt1 5s ease-in-out infinite;
animation: shine-alt1 5s ease-in-out infinite;
}
.btn-alt:after {
background: rgba(255, 255, 255, 0.2);
width: 30px;
left: 30px;
filter: blur(5px);
-webkit-animation: shine-alt2 5s ease-in-out infinite;
animation: shine-alt2 5s ease-in-out infinite;
}
@-webkit-keyframes shine-alt1 {
0% {
opacity: 0.5;
transform: translateX(-100px) skewX(-15deg);
transition-property: opacity, transform;
}
11.5044247788%,
100% {
opacity: 0.6;
transform: translateX(300px) skewX(-15deg);
transition-property: opacity, transform;
}
}
@keyframes shine-alt1 {
0% {
opacity: 0.5;
transform: translateX(-100px) skewX(-15deg);
transition-property: opacity, transform;
}
11.5044247788%,
100% {
opacity: 0.6;
transform: translateX(300px) skewX(-15deg);
transition-property: opacity, transform;
}
}
@-webkit-keyframes shine-alt2 {
0% {
opacity: 0;
transform: translateX(-100px) skewX(-15deg);
transition-property: opacity, transform;
}
11.5044247788%,
100% {
opacity: 1;
transform: translateX(300px) skewX(-15deg);
transition-property: opacity, transform;
}
}
@keyframes shine-alt2 {
0% {
opacity: 0;
transform: translateX(-100px) skewX(-15deg);
transition-property: opacity, transform;
}
11.5044247788%,
100% {
opacity: 1;
transform: translateX(300px) skewX(-15deg);
transition-property: opacity, transform;
}
}
Bu snippet hakkında
"Parlama" (shine) efekti, parlak bir yüzeyden yansıyan ışığı taklit eder. Bu snippet dört farklı varyasyonu yan yana gösterir; tasarımına uyanı seçip kullanabilirsin.
Varyasyonlar
.btn.btn-hover: yansıma yalnızca imleç butonun üzerindeyken geçer..btn.btn-hover.bg-black: aynı efektin koyu arka plan üzerindeki hali; parlama burada daha belirgin görünür..btn.btn-anim:shinekeyframe'leri kendiliğinden çalışır; buton etkileşim olmadan belirli aralıklarla parlar..btn-alt: iki bulanık ışık çubuğunun (::beforeve::after)shine-alt1veshine-alt2animasyonlarıyla üzerinden geçtiği, daha yumuşak çift süpürmeli, çerçeveli şeffaf sürüm.
Nasıl çalışır?
Her butonda position: relative ve overflow: hidden vardır. linear-gradient(120deg, transparent, rgba(255,255,255,0.2), transparent) ile doldurulmuş bir ::before sözde öğesi left: -100% konumunda bekler; 0,65 saniyelik hover geçişiyle ya da 5 saniyelik shine keyframe'leriyle left: 100% konumuna taşınır. Çerçeveli sürüm kenarlık, arka plan ve yazı rengini :root içindeki --btn-* değişkenlerinden alır; aynı yerde gradyanı tek noktadan yönetmek için kullanabileceğin --shine-* değişkenleri de tanımlıdır.
Nasıl kullanılır?
:rootdeğişkenlerini ve istediğin varyasyonun kurallarını kopyala.- Sınıfları bir bağlantıya ya da butona ekle; örneğin
<a class="btn btn-hover">. - Daha güçlü bir yansıma için gradyandaki
0.2saydamlık değerini artır, farklı bir açı için120degdeğerini değiştir. - Sabit
width: 400pxveheight: 100pxdeğerlerini sayfa düzenine uygun değerlerle değiştir.
Örnek, Raleway yazı tipini Google Fonts'tan yükler; kendi yazı tipini kullanıyorsan @import satırını silebilirsin.
Yorumlar 0
Henüz yorum yok. İlk yorumu sen yaz.