Back
An artistic approach to a text input, transforming mundane text input into a mesmerizing experience with dynamic geometric patterns.
<div class="kaleidoscope-container"> <input type="text" class="kaleidoscope-input" placeholder="Type here..."> <button onclick="generatePattern()" class="pattern-button"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" height="15" viewBox="0 0 24 24" stroke="#6D4E90" stroke-width="2"> <path stroke-linecap="round" stroke-linejoin="round" d="M12 3v18m9-9H3"/> </svg> </button> <div class="pattern-display"></div> </div>
function generatePattern() { const patterns = ['#f06', '#f06868', '#68f0f0', '#f0f068']; const container = document.getElementsByClassName('kaleidoscope-container')[0]; const patternDisplay = document.getElementsByClassName('pattern-display')[0]; container.style.borderColor = patterns[Math.floor(Math.random() * patterns.length)]; patternDisplay.style.background = `radial-gradient(circle, ${patterns.join(', ')})`; patternDisplay.classList.toggle('active'); }
.kaleidoscope-container { border: 2px dashed #6D4E90; border-radius: 20px; padding: 10px; background-color: rgba(255, 255, 255, 0.6); backdrop-filter: blur(10px); display: flex; align-items: center; position: relative; transition: border-color 0.3s ease; } .pattern-button { margin-left: 10px; border: none; background: transparent; cursor: pointer; display: flex; align-items: center; transition: transform 0.3s; } .pattern-button:active { transform: scale(0.9); } .kaleidoscope-input { border: none; background: none; outline: none; width: 100%; padding: 5px; } .pattern-display { position: absolute; top: 0; left: 0; right: 0; bottom: 0; opacity: 0; z-index: -1; transition: opacity 0.5s ease; } .pattern-display.active { opacity: 0.8; }This carefully crafted component turns a simple text input into a captivating, interactive piece that draws users in with its artful flair and dynamic transformations.
<div class="kaleidoscope-container"> <input type="text" class="kaleidoscope-input" placeholder="Type here..."> <button onclick="generatePattern()" class="pattern-button"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" height="15" viewBox="0 0 24 24" stroke="#6D4E90" stroke-width="2"> <path stroke-linecap="round" stroke-linejoin="round" d="M12 3v18m9-9H3"/> </svg> </button> <div class="pattern-display"></div> </div> <script> function generatePattern() { const patterns = ['#f06', '#f06868', '#68f0f0', '#f0f068']; const container = document.getElementsByClassName('kaleidoscope-container')[0]; const patternDisplay = document.getElementsByClassName('pattern-display')[0]; container.style.borderColor = patterns[Math.floor(Math.random() * patterns.length)]; patternDisplay.style.background = `radial-gradient(circle, ${patterns.join(', ')})`; patternDisplay.classList.toggle('active'); } </script> <style> .kaleidoscope-container { border: 2px dashed #6D4E90; border-radius: 20px; padding: 10px; background-color: rgba(255, 255, 255, 0.6); backdrop-filter: blur(10px); display: flex; align-items: center; position: relative; transition: border-color 0.3s ease; } .pattern-button { margin-left: 10px; border: none; background: transparent; cursor: pointer; display: flex; align-items: center; transition: transform 0.3s; } .pattern-button:active { transform: scale(0.9); } .kaleidoscope-input { border: none; background: none; outline: none; width: 100%; padding: 5px; } .pattern-display { position: absolute; top: 0; left: 0; right: 0; bottom: 0; opacity: 0; z-index: -1; transition: opacity 0.5s ease; } .pattern-display.active { opacity: 0.8; } </style>Thank you for reading this article.
Comments
No comments yet. Be the first to comment!