3D Фигура (бутылка) из текста на CSS и HTML с анимацией
19 февраля 2021

Всем привет! Это практический урок по создании фигуры из текста на HTML и CSS. На примере бутылки мы разберем, как создаются фигуры из текста и добавим к ней немного анимации на CSS.
Данный урок позволит понять, как создать фигуру из текста будь она плоская или объемная.
Содержание файлов:
index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>bottle</title> <link rel="stylesheet" href="style.css"> </head> <body> <div class="bottle"> <div class="container"> <div class="latters"> <span>П</span> <span>Е</span> <span>Й</span> <span>Т</span> <span>Е</span> <span> </span> <span>Д</span> <span>Е</span> <span>Т</span> <span>И</span> <span> </span> <span>М</span> <span>О</span> <span>Л</span> <span>О</span> <span>К</span> <span>О</span> <span>!</span> </div> <div class="latters"> <span>П</span> <span>Е</span> <span>Й</span> <span>Т</span> <span>Е</span> <span> </span> <span>Д</span> <span>Е</span> <span>Т</span> <span>И</span> <span> </span> <span>М</span> <span>О</span> <span>Л</span> <span>О</span> <span>К</span> <span>О</span> <span>!</span> </div> <div class="latters"> <span>П</span> <span>Е</span> <span>Й</span> <span>Т</span> <span>Е</span> <span> </span> <span>Д</span> <span>Е</span> <span>Т</span> <span>И</span> <span> </span> <span>М</span> <span>О</span> <span>Л</span> <span>О</span> <span>К</span> <span>О</span> <span>!</span> </div> <div class="latters"> <span>П</span> <span>Е</span> <span>Й</span> <span>Т</span> <span>Е</span> <span> </span> <span>Д</span> <span>Е</span> <span>Т</span> <span>И</span> <span> </span> <span>М</span> <span>О</span> <span>Л</span> <span>О</span> <span>К</span> <span>О</span> <span>!</span> </div> <div class="latters"> <span>П</span> <span>Е</span> <span>Й</span> <span>Т</span> <span>Е</span> <span> </span> <span>Д</span> <span>Е</span> <span>Т</span> <span>И</span> <span> </span> <span>М</span> <span>О</span> <span>Л</span> <span>О</span> <span>К</span> <span>О</span> <span>!</span> </div> <div class="latters"> <span>П</span> <span>Е</span> <span>Й</span> <span>Т</span> <span>Е</span> <span> </span> <span>Д</span> <span>Е</span> <span>Т</span> <span>И</span> <span> </span> <span>М</span> <span>О</span> <span>Л</span> <span>О</span> <span>К</span> <span>О</span> <span>!</span> </div> </div> </div> </body> </html>
style.css
body { background: #121212; color: #fff; display: flex; font-weight: bold; font-family: monospace; font-size: 4em; height: 100vh; overflow: hidden; } .bottle { margin: auto; perspective: 25em; position: relative; width: 11em; height: 11em; } .container, .latters { position: absolute; top: 50%; left: 0; transform-style: preserve-3d; } .container { top: 0; height: 100%; width: 100%; transform: rotateZ(90deg) rotateX(-90deg); animation: spin 1s linear infinite; } .latters { display: flex; } .latters:nth-child(1) { transform: translateY(-50%)rotateX(0deg); } .latters:nth-child(2) { transform: translateY(-50%)rotateX(36deg); } .latters:nth-child(3) { transform: translateY(-50%)rotateX(72deg); } .latters:nth-child(4) { transform: translateY(-50%)rotateX(108deg); } .latters:nth-child(5) { transform: translateY(-50%)rotateX(144deg); } .latters:nth-child(6) { transform: translateY(-50%)rotateX(180deg); } .latters span { backface-visibility: hidden; display: inline-block; width: 1ch; } .latters span:nth-child(1) { transform: translateZ(2ch) rotateY(0deg) scaleY(1); } .latters span:nth-child(2) { transform: translateZ(2ch) rotateY(0deg) scaleY(1); } .latters span:nth-child(3) { transform: translateZ(2.25ch) rotateY(-30deg) scaleY(1); } .latters span:nth-child(4) { transform: translateZ(2.75ch) rotateY(-30deg) scaleY(1.3); } .latters span:nth-child(5) { transform: translateZ(3.25ch) rotateY(-30deg) scaleY(1.5); } .latters span:nth-child(6) { transform: translateZ(3.5ch) rotateY(0deg) scaleY(1.75); } .latters span:nth-child(7) { transform: translateZ(3.5ch) rotateY(0deg) scaleY(1.45); } .latters span:nth-child(8) { transform: translateZ(3.5ch) rotateY(0deg) scaleY(1.75); } .latters span:nth-child(9) { transform: translateZ(3.3ch) rotateY(15deg) scaleY(1.5); } .latters span:nth-child(10) { transform: translateZ(3ch) rotateY(15deg) scaleY(1.4); } .latters span:nth-child(11) { transform: translateZ(2.8ch) rotateY(0deg) scaleY(1.3); } .latters span:nth-child(12) { transform: translateZ(2.8ch) rotateY(0deg) scaleY(1.3); } .latters span:nth-child(13) { transform: translateZ(3ch) rotateY(-15deg) scaleY(1.4); } .latters span:nth-child(14) { transform: translateZ(3.3ch) rotateY(-15deg) scaleY(1.5); } .latters span:nth-child(15) { transform: translateZ(3.5ch) rotateY(0deg) scaleY(1.75); } .latters span:nth-child(16) { transform: translateZ(3.4ch) rotateY(15deg) scaleY(1.75); } .latters span:nth-child(17) { transform: translateZ(3.2ch) rotateY(15deg) scaleY(1.5); } .latters span:nth-child(18) { transform: translateZ(3ch) rotateY(0deg) scaleY(1.3); } @keyframes spin { from { transform: rotateZ(90deg) rotateX(-90deg); } to { transform: rotateZ(90deg) rotateX(-54deg); } }
Видео с пошаговой инструкцией
Дорогие друзья если Вам понравилась статья и Вы хотите меня поддержать, то подписывайтесь на мой блог и канал на youtube. Это для меня самая лучшая благодарность. Всем до новых встреч.