linkfree-themes
Version:
CSS themes for a free and open source alternative to LinkTree
245 lines (212 loc) • 4.05 kB
CSS
body {
background-image: linear-gradient(to bottom right, #eb01a5, #d13531);
width: 100%;
height: 100vh;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
overflow: hidden;
background-size: cover;
font-family: system-ui, sans-serif;
font-weight: 200;
}
body:before {
content: "";
position: absolute;
z-index: -1;
left: 0;
top: 0;
width: 100%;
height: 5076px;
background-size: 100%;
animation: 20s infiniteScroll linear infinite;
background-repeat: repeat;
background-image: url(./images/circles-pattern.svg);
}
a {
text-decoration: none;
}
#userPhoto,
#userName,
#description,
.link {
-webkit-animation-duration: 1s;
animation-duration: 1s;
-webkit-animation-fill-mode: both;
animation-fill-mode: both;
}
#userPhoto {
width: 96px;
height: 96px;
display: block;
margin: 35px auto 30px;
transition: all 0.15s;
-webkit-animation-name: zoomIn;
animation-name: zoomIn;
}
#userName,
#description {
color: white;
font-size: 1rem;
line-height: 1.25;
display: block;
width: 100%;
text-align: center;
margin: 0;
text-decoration: none;
-webkit-animation-name: fadeIn;
animation-name: fadeIn;
}
#userName {
font-weight: bold;
}
#links {
display: flex;
flex-direction: column;
justify-content: center;
align-items: stretch;
gap: 15px;
min-width: 250px;
margin: 30px 0;
}
.link {
display: block;
background-color: #1d9e96;
color: white;
text-align: center;
padding: 17px;
text-decoration: none;
font-size: 1rem;
font-weight: bold;
transition: all 0.15s;
box-shadow: 0px 6px #06695f;
border-radius: 35% 20%;
}
.link:hover {
font-size: 2rem;
box-shadow: none;
border-radius: 20% 35%;
}
.link:nth-child(even) {
-webkit-animation-name: fadeInLeft;
animation-name: fadeInLeft;
}
.link:nth-child(odd) {
-webkit-animation-name: fadeInRight;
animation-name: fadeInRight;
}
ion-icon {
vertical-align: text-bottom;
width: 1.1875em;
height: 1.1875em;
}
@-webkit-keyframes fadeIn {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
@keyframes fadeIn {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
@-webkit-keyframes zoomIn {
0% {
opacity: 0;
-webkit-transform: scale(0.3);
transform: scale(0.3);
}
50% {
opacity: 1;
}
}
@keyframes zoomIn {
0% {
opacity: 0;
-webkit-transform: scale(0.3);
-ms-transform: scale(0.3);
transform: scale(0.3);
}
50% {
opacity: 1;
}
}
@-webkit-keyframes fadeInLeft {
0% {
opacity: 0;
-webkit-transform: translateX(-20px);
transform: translateX(-20px);
}
100% {
opacity: 1;
-webkit-transform: translateX(0);
transform: translateX(0);
}
}
@keyframes fadeInLeft {
0% {
opacity: 0;
-webkit-transform: translateX(-20px);
-ms-transform: translateX(-20px);
transform: translateX(-20px);
}
100% {
opacity: 1;
-webkit-transform: translateX(0);
-ms-transform: translateX(0);
transform: translateX(0);
}
}
@-webkit-keyframes fadeInRight {
0% {
opacity: 0;
-webkit-transform: translateX(20px);
transform: translateX(20px);
}
100% {
opacity: 1;
-webkit-transform: translateX(0);
transform: translateX(0);
}
}
@keyframes fadeInRight {
0% {
opacity: 0;
-webkit-transform: translateX(20px);
-ms-transform: translateX(20px);
transform: translateX(20px);
}
100% {
opacity: 1;
-webkit-transform: translateX(0);
-ms-transform: translateX(0);
transform: translateX(0);
}
}
@-webkit-keyframes infiniteScroll {
0% {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
100% {
-webkit-transform: translate3d(0, -1692px, 0);
transform: translate3d(0, -1692px, 0);
}
}
@keyframes infiniteScroll {
0% {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
100% {
-webkit-transform: translate3d(0, -1692px, 0);
transform: translate3d(0, -1692px, 0);
}
}