Skip to Content
🤖 Technology
CSS
৯. অ্যানিমেশন ও ট্রানজিশন

🔖 অ্যানিমেশন ও ট্রানজিশন (Animations & Transitions)

আধুনিক ওয়েবসাইটে ইউজার এক্সপেরিয়েন্স (UX) ভালো করার জন্য অ্যানিমেশনের বিকল্প নেই। তবে অ্যানিমেশন সবসময় সূক্ষ্ম (Subtle) হওয়া উচিত, বিরক্তি উৎপাদনকারী নয়!

📌 CSS ট্রানজিশন (Transitions)

ট্রানজিশন ব্যবহার করে একটি অবস্থা (State) থেকে অন্য অবস্থায় পরিবর্তনকে স্মুথ (Smooth) করা যায়। সাধারণত :hover, :focus এগুলোর সাথে এটি ব্যবহৃত হয়।

transition.css
.btn { background-color: blue; color: white; padding: 10px 20px; /* এখানে ট্রানজিশন সেট করা হলো */ transition: background-color 0.3s ease-in-out, transform 0.2s; } .btn:hover { background-color: darkblue; /* ০.৩ সেকেন্ড সময় নিয়ে বদলাবে */ transform: scale(1.1); /* ০.২ সেকেন্ডে একটু বড় হবে */ }
💡

অ্যানিমেশন টাইমিং: ease (ডিফল্ট, মাঝে ফাস্ট), linear (একই স্পিড), ease-in (শুরুতে স্লো), ease-out (শেষে স্লো), ease-in-out (শুরু এবং শেষে স্লো)।

📌 🥷 নিঞ্জা টেকনিক: transform বনাম margin

আপনি যদি কোনো এলিমেন্টকে ডানদিকে সরাতে চান বা বড় করতে চান, কখনোই margin বা width/height অ্যানিমেট করবেন না! ❌

কেন? margin পরিবর্তন করলে ব্রাউজারকে পুরো পেজের লেআউট নতুন করে হিসাব (Reflow/Repaint) করতে হয়, যা ব্রাউজারকে স্লো করে দেয় এবং অ্যানিমেশন ল্যাগ করে।

নিঞ্জা সলিউশন: সবসময় transform প্রপার্টি (translate, scale, rotate) ব্যবহার করুন। এটি সরাসরি জিপিইউ (GPU) দিয়ে রেন্ডার হয়, তাই অ্যানিমেশন হয় মাখনের মতো স্মুথ! 🧈✨

/* ❌ খারাপ প্র্যাকটিস (ল্যাগ করবে) */ .box:hover { margin-top: -10px; } /* ✅ নিঞ্জা প্র্যাকটিস (স্মুথ হবে) */ .box:hover { transform: translateY(-10px); }

📌 Keyframe অ্যানিমেশন (Advanced)

যখন কোনো কন্টিনিউয়াস বা জটিল অ্যানিমেশন দরকার হয় (যেমন লোডার বা স্পিনার), তখন @keyframes ব্যবহার করতে হয়।

keyframes.css
/* ১. অ্যানিমেশন ডিফাইন করা */ @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } /* ২. এলিমেন্টে অ্যাপ্লাই করা */ .loader { width: 50px; height: 50px; border: 5px solid lightgray; border-top: 5px solid blue; border-radius: 50%; /* spin অ্যানিমেশনটি ১ সেকেন্ড ধরে আনলিমিটেড ঘুরবে */ animation: spin 1s linear infinite; }
Last updated on