144 views
CSSAdd prefixes
1.card { 2 --cardbg: 245, 245, 245; 3 --cardBase: 235, 16, 206; 4 --cardText: 100, 100, 100; 5 --cardTextBtn: 106, 16, 88; 6 --cardsquares: 156, 113, 227; 7 display: flex; 8 flex-flow: column nowrap; 9 place-items: center; 10 text-align: center; 11 border: 1px solid #ccc; 12 box-shadow: 0 0 3em rgba(var(--cardBase), .25), 13 inset 0 -.25em 1px rgba(var(--cardBase), .125); 14 border-radius: 4px; 15 background: rgba(var(--cardbg), 1); 16 position: relative; 17 width: 220px; 18 height: 310px; 19 perspective: 1000px; 20 z-index: 0; 21 transition: all 1s ease-out; 22} 23 24.card:hover { 25 filter: grayscale(0%); 26 scale: 1.025; 27 box-shadow: 0 0 5em rgba(var(--cardBase), .5); 28} 29 30.card::after, 31.card::before { 32 content: ''; 33 width: 200px; 34 height: 50%; 35 display: block; 36 background-color: rgba(var(--cardsquares), .5); 37 filter: blur(10px); 38 position: absolute; 39 transition: all 5s ease-out; 40 opacity: .1; 41 z-index: 0; 42} 43 44.card:hover::after, 45.card:hover::before { 46 opacity: .5; 47 rotate: 60deg; 48} 49 50.card:hover::after { 51 translate: 100% 0; 52} 53 54.card:hover::before { 55 translate: -100% 0; 56} 57 58.card .card-title { 59 color: rgba(var(--cardText), .75); 60 font-size: 1.1em; 61 font-weight: 600; 62 margin: .5em; 63 position: relative; 64 transition: all .3s ease-out; 65 z-index: 100; 66 text-shadow: 0px 0px 0px rgba(var(--cardText), .25); 67} 68 69.card:hover h3 { 70 color: rgba(var(--cardText), 1); 71 text-shadow: 0px 8px 5px rgba(var(--cardText), .35); 72} 73 74.card:hover span { 75 filter: grayscale(0%); 76} 77 78/* Inner card */ 79.card-info::after { 80 left: -6rem; 81 bottom: 0; 82} 83 84.card-info::before { 85 right: -6rem; 86 top: 1rem; 87} 88 89/* Avatar container */ 90.card-info span { 91 color: rgba(var(--cardBase), 1); 92 display: flex; 93 place-items: center; 94 text-align: center; 95 border-radius: 50%; 96 overflow: hidden; 97 background-color: rgba(var(--cardBase), .5); 98 height: 80px; 99 width: 50%; 100 box-shadow: inset 0px 2px 4px rgba(var(--cardBase), .95), 101 inset 0px 2px 40px rgba(var(--cardbg), .95); 102 position: relative; 103 transition: all .3s ease-out .1s; 104 filter: grayscale(75%); 105 z-index: 0; 106} 107 108.card-info span:hover .avatar { 109 scale: 1.5; 110} 111 112.avatar { 113 transition: all .3s ease-out; 114 position: relative; 115} 116 117/* Inner card container and UI */ 118.card-info { 119 --angle: 0deg; 120 display: flex; 121 flex-flow: column nowrap; 122 place-items: center; 123 padding: 1em; 124 margin: 0 .75em; 125 color: rgba(var(--cardText), 1); 126 background-color: rgba(250, 246, 246, 1); 127 transition: all .5s ease-out; 128 animation: animateBorder 10s linear infinite reverse; 129 border: .15em solid; 130 position: relative; 131 z-index: 10; 132 border-image: linear-gradient(var(--angle), rgba(var(--cardbg), 1), rgba(var(--cardBase), .5), rgba(var(--cardbg), 1)) 1; 133} 134 135.card-info p { 136 color: rgba(var(--cardText), 1); 137 line-height: 1.25em; 138 display: -webkit-box; 139 -webkit-box-orient: vertical; 140 overflow: hidden; 141 text-overflow: ellipsis; 142 -webkit-line-clamp: 3; 143 font-size: 1em; 144 margin: 1em 0; 145 transition: all .3s ease-out .3s; 146} 147 148.card-info .btn { 149 display: block; 150 padding: 8px 16px; 151 background-color: rgba(var(--cardBase), .35); 152 color: rgba(var(--cardTextBtn), .75); 153 text-decoration: none; 154 border-radius: 4px; 155 font-size: .85em; 156 transition: all 0.3s ease-in-out; 157} 158 159.card-info .btn:hover { 160 cursor: pointer; 161 background-color: rgba(var(--cardsquares), .35); 162} 163 164.card-info .btn:active { 165 box-shadow: inset 0px -2px 3px rgba(var(--cardBase), .25); 166} 167 168/* Card links container */ 169.card-links { 170 transition: all .3s linear; 171 opacity: 0; 172 display: flex; 173 flex-flow: row wrap; 174 gap: 1em; 175 position: relative; 176 top: -2rem; 177 list-style: none; 178 color: rgba(var(--cardText), 1); 179 font-size: .75em 180} 181 182.card-links a { 183 transition: color .3s ease-out; 184} 185 186.card-links a:hover { 187 color: rgba(var(--cardBase), .75); 188} 189 190/* Card chckbox active state */ 191.card input[type="checkbox"] { 192 visibility: hidden; 193} 194 195.card:hover:has(#toggle:checked) .card-title { 196 text-shadow: 0px 2px 5px rgba(var(--cardText), .35); 197} 198 199.card:has(#toggle:checked) { 200 border-radius: 10px; 201 height: 295px; 202} 203 204.card:has(#toggle:checked) .card-info > *:not(.btn):not(span) { 205 opacity: 0; 206} 207 208.card:has(#toggle:checked) .card-info { 209 translate: 0 -20%; 210 border-width: 1px; 211 border: none; 212 box-shadow: inset 0 0 5px rgba(var(--cardBase), .5), 213 inset 0px 0px 2px rgba(var(--cardText), .25), 214 inset 0px 30px 40px rgba(var(--cardBase), .25); 215 border-radius: 10px; 216} 217 218.card:has(#toggle:checked) .card-info span { 219 translate: 0 75%; 220} 221 222.card:has(#toggle:checked) .card-info p { 223 transition: all .1s ease-out; 224} 225 226.card:has(#toggle:checked) .card-links { 227 opacity: 1; 228 top: -2rem; 229} 230 231.card #toggle { 232 visibility: hidden; 233} 234 235@keyframes animateBorder { 236 to { 237 --angle: 360deg; 238 } 239} 240 241@property --angle { 242 syntax: '<angle>'; 243 initial-value: 0deg; 244 inherits: false; 245}
HTML
1<div class="card"> 2 <div class="card-title">Profile Card</div> 3 <div class="card-info"> 4 <span> 5 <svg class="avatar" viewBox="-5 -10 30 34" fill="none" xmlns="http://www.w3.org/2000/svg"> 6 <path d="M5.37164 12H3C1.34315 12 0 13.3431 0 15V21C0 22.6569 1.34315 24 3 24H17C18.6569 24 20 22.6569 20 21V15C20 13.3431 18.6569 12 17 12H14.6284C14.5071 12.1347 14.3785 12.2646 14.2426 12.3891C13.1174 13.4205 11.5913 14 10 14C8.4087 14 6.88258 13.4205 5.75736 12.3891C5.62152 12.2646 5.49286 12.1347 5.37164 12Z" fill="#D9D9D9"></path> 7 <path d="M16 6.5C16 7.95869 15.3679 9.35764 14.2426 10.3891C13.1174 11.4205 11.5913 12 10 12C8.4087 12 6.88258 11.4205 5.75736 10.3891C4.63214 9.35764 4 7.95869 4 6.5L6.34017 6.5C6.34017 7.38976 6.72576 8.24308 7.41211 8.87223C8.09846 9.50139 9.02935 9.85485 10 9.85485C10.9706 9.85484 11.9015 9.50139 12.5879 8.87223C13.2742 8.24308 13.6598 7.38976 13.6598 6.5H16Z" fill="#D9D9D9"></path> 8 <path d="M16 5.5C16 4.04131 15.3679 2.64236 14.2426 1.61091C13.1174 0.579463 11.5913 1.10128e-07 10 0C8.4087 -1.10128e-07 6.88258 0.579462 5.75736 1.61091C4.63214 2.64236 4 4.04131 4 5.5L4.85269 5.5C4.85269 4.24861 5.395 3.04848 6.3603 2.16361C7.32561 1.27875 8.63485 0.781634 10 0.781634C11.3652 0.781634 12.6744 1.27875 13.6397 2.16361C14.605 3.04848 15.1473 4.24861 15.1473 5.5H16Z" fill="#D9D9D9"></path> 9 </svg> 10 </span> 11 <p>Bio description with some interesting data about yourself...</p> 12 <label class="btn" for="toggle"> 13 Social networks 14 </label> 15 <input id="toggle" type="checkbox"> 16 </div> 17 <ul class="card-links"> 18 <li> 19 <a href="">LinkedIn</a> 20 </li> 21 <li> 22 <a href="">Twitter</a> 23 </li> 24 <li> 25 <a href="">Facebook</a> 26 </li> 27 </ul> 28</div>