<div class="container"> <div class="folder"> <div class="front-side"> <div class="tip"></div> <div class="cover"></div> </div> <div class="back-side cover"></div> </div> <label class="custom-file-upload"> <input class="title" type="file" /> Choose a file </label> </div>
/* From Uiverse.io by 3bdel3ziz-T */ .container { --transition: 350ms; --folder-W: 120px; --folder-H: 80px; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; padding: 10px; background: linear-gradient(135deg, #6dd5ed, #2193b0); border-radius: 15px; box-shadow: 0 15px 30px rgba(0, 0, 0, 0.2); height: calc(var(--folder-H) * 1.7); position: relative; } .folder { position: absolute; top: -20px; left: calc(50% - 60px); animation: float 2.5s infinite ease-in-out; transition: transform var(--transition) ease; } .folder:hover { transform: scale(1.05); } .folder .front-side, .folder .back-side { position: absolute; transition: transform var(--transition); transform-origin: bottom center; } .folder .back-side::before, .folder .back-side::after { content: ""; display: block; background-color: white; opacity: 0.5; z-index: 0; width: var(--folder-W); height: var(--folder-H); position: absolute; transform-origin: bottom center; border-radius: 15px; transition: transform 350ms; z-index: 0; } .container:hover .back-side::before { transform: rotateX(-5deg) skewX(5deg); } .container:hover .back-side::after { transform: rotateX(-15deg) skewX(12deg); } .folder .front-side { z-index: 1; } .container:hover .front-side { transform: rotateX(-40deg) skewX(15deg); } .folder .tip { background: linear-gradient(135deg, #ff9a56, #ff6f56); width: 80px; height: 20px; border-radius: 12px 12px 0 0; box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2); position: absolute; top: -10px; z-index: 2; } .folder .cover { background: linear-gradient(135deg, #ffe563, #ffc663); width: var(--folder-W); height: var(--folder-H); box-shadow: 0 15px 30px rgba(0, 0, 0, 0.3); border-radius: 10px; } .custom-file-upload { font-size: 1.1em; color: #ffffff; text-align: center; background: rgba(255, 255, 255, 0.2); border: none; border-radius: 10px; box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1); cursor: pointer; transition: background var(--transition) ease; display: inline-block; width: 60%; padding: 10px 35px; position: relative; } .custom-file-upload:hover { background: rgba(255, 255, 255, 0.4); } .custom-file-upload input[type="file"] { display: none; } @keyframes float { 0% { transform: translateY(0px); } 50% { transform: translateY(-20px); } 100% { transform: translateY(0px); } }
100%
Comments
Please log in to join the conversation
Loading Comments