Vue.js একটি শক্তিশালী ফ্রেমওয়ার্ক যা ইউজার ইন্টারফেসের ট্রানজিশন এবং অ্যানিমেশনকে সহজেই কাস্টমাইজ করতে সাহায্য করে। Vue.js এর ট্রানজিশন সিস্টেম আপনাকে DOM এলিমেন্টে আংশিকভাবে বা সম্পূর্ণভাবে পরিবর্তন করতে অ্যানিমেশন প্রয়োগ করার সুযোগ দেয়। এর মধ্যে ট্রানজিশন গ্রুপস এবং কাস্টম ট্রানজিশন রয়েছে, যা ডেভেলপারদের জন্য ইউজার ইন্টারফেসে অ্যানিমেশন ও ইফেক্টগুলি অত্যন্ত সহজ এবং কার্যকরভাবে প্রয়োগ করতে সাহায্য করে।
এখানে আমরা Vue.js ট্রানজিশন গ্রুপস এবং এর কাস্টমাইজেশন কিভাবে করা যায় তা নিয়ে আলোচনা করব।
১. ট্রানজিশন গ্রুপস (Transition Groups)
Transition Groups ব্যবহার করে, আপনি একসাথে একাধিক উপাদান বা এলিমেন্টের ট্রানজিশন (যেমন, অ্যাড, রিমুভ, অথবা লিস্ট রেন্ডারিং) নিয়ন্ত্রণ করতে পারেন। এটি বিশেষভাবে লিস্ট বা এরে এলিমেন্টগুলির জন্য উপকারী, যেখানে আপনি একটি গ্রুপের মধ্যে এলিমেন্টগুলোকে একযোগে অ্যানিমেট করতে চান।
Transition Group এর সাধারণ উদাহরণ:
<template>
<div>
<button @click="addItem">Add Item</button>
<transition-group name="fade" tag="ul">
<li v-for="item in items" :key="item.id" class="fade-item">
{{ item.text }}
</li>
</transition-group>
</div>
</template>
<script>
export default {
data() {
return {
items: []
};
},
methods: {
addItem() {
const newItem = {
id: Date.now(),
text: 'New Item ' + this.items.length
};
this.items.push(newItem);
}
}
};
</script>
<style>
.fade-item {
transition: opacity 1s;
opacity: 0;
}
.fade-item-enter-active, .fade-item-leave-active {
opacity: 1;
}
</style>
এখানে:
<transition-group>: এটি লিস্ট বা গ্রুপের জন্য ট্রানজিশন যোগ করতে ব্যবহৃত হয়।name="fade": এই অ্যাট্রিবিউটের মাধ্যমে ট্রানজিশনের ক্লাস নাম নির্ধারণ করা হয়।tag="ul": এটি<ul>ট্যাগে ট্রানজিশন গ্রুপ তৈরি করতে সাহায্য করে।v-for: এখানেv-forব্যবহার করে লিস্ট আইটেম তৈরি করা হচ্ছে।
ট্রানজিশন যখন শুরু হবে, তখন এলিমেন্টগুলো ধীরে ধীরে দৃশ্যমান হয়ে যাবে এবং আপনি fade-item ক্লাসে CSS ট্রানজিশন প্রপার্টি নির্ধারণ করেছেন।
২. কাস্টম ট্রানজিশন
Vue.js আপনাকে কাস্টম ট্রানজিশনও তৈরি করার সুযোগ দেয়, যেখানে আপনি নিজের ট্রানজিশন ক্লাস এবং অ্যানিমেশন নির্ধারণ করতে পারেন। আপনি <transition> কম্পোনেন্ট ব্যবহার করে কম্পোনেন্ট বা এলিমেন্টে ট্রানজিশন প্রোপার্টি যোগ করতে পারেন।
কাস্টম ট্রানজিশন উদাহরণ:
<template>
<div>
<button @click="toggle">Toggle Visibility</button>
<transition name="fade" @before-enter="beforeEnter" @enter="enter" @leave="leave">
<p v-if="isVisible">Hello, Vue Transition!</p>
</transition>
</div>
</template>
<script>
export default {
data() {
return {
isVisible: true
};
},
methods: {
toggle() {
this.isVisible = !this.isVisible;
},
beforeEnter(el) {
el.style.opacity = 0;
},
enter(el, done) {
el.offsetHeight; // trigger reflow
el.style.transition = 'opacity 1s ease-in-out';
el.style.opacity = 1;
done();
},
leave(el, done) {
el.style.transition = 'opacity 1s ease-in-out';
el.style.opacity = 0;
done();
}
}
};
</script>
<style>
.fade-enter-active, .fade-leave-active {
transition: opacity 1s ease-in-out;
}
.fade-enter, .fade-leave-to {
opacity: 0;
}
</style>
এখানে:
<transition>: এখানে Vue.js এর<transition>কম্পোনেন্ট ব্যবহার করা হয়েছে, যা এলিমেন্টে ট্রানজিশন অ্যাপ্লাই করতে সাহায্য করে।@before-enter,@enter,@leave: এই লাইফসাইকেল হুকগুলি কাস্টম ট্রানজিশনের সময় বিভিন্ন পর্যায় পরিচালনা করে।toggle:isVisibleএর মান পরিবর্তন করতে ব্যবহৃত একটি বাটন।- CSS ক্লাস:
fade-enterএবংfade-leaveCSS ক্লাসের মাধ্যমে ট্রানজিশনের জন্য অ্যানিমেশন স্টাইল যোগ করা হয়।
এখানে, যখন isVisible এর মান পরিবর্তিত হয়, তখন <p> এলিমেন্টে একটি স্লো ফেড ইন এবং ফেড আউট অ্যানিমেশন প্রয়োগ করা হয়।
৩. ট্রানজিশন কাস্টমাইজেশন
Vue.js আপনাকে টেমপ্লেটের মধ্যে বা স্টাইলশীটে CSS দিয়ে ট্রানজিশন কাস্টমাইজ করতে সাহায্য করে। আপনি একাধিক স্টাইল, timing, delay, easing ফাংশন ইত্যাদি ব্যবহার করে কাস্টম অ্যানিমেশন তৈরি করতে পারেন।
কাস্টম ট্রানজিশন কাস্টমাইজেশনের উদাহরণ:
<template>
<div>
<button @click="toggle">Toggle</button>
<transition name="slide" :duration="duration">
<div v-show="isVisible" class="box">Vue Transition!</div>
</transition>
</div>
</template>
<script>
export default {
data() {
return {
isVisible: true,
duration: 500
};
},
methods: {
toggle() {
this.isVisible = !this.isVisible;
}
}
};
</script>
<style>
.slide-enter-active, .slide-leave-active {
transition: transform 0.5s ease-in-out;
}
.slide-enter, .slide-leave-to {
transform: translateX(-100%);
}
</style>
এখানে:
transformCSS প্রপার্টি দিয়ে এলিমেন্টটি স্ক্রল বা স্লাইড করা হচ্ছে।:duration="duration": এটা ডাইনামিকভাবে ট্রানজিশনের ডিউরেশন নির্ধারণ করতে সাহায্য করছে।translateX(-100%): এই স্টাইলটি এলিমেন্টটিকে বাম দিকে স্লাইড করার জন্য ব্যবহৃত হচ্ছে।
সারাংশ
- Transition Groups: লিস্ট বা গ্রুপে একাধিক এলিমেন্টের জন্য ট্রানজিশন বা অ্যানিমেশন প্রয়োগ করতে ব্যবহৃত হয়।
- Custom Transitions:
@before-enter,@enter, এবং@leaveহুক ব্যবহার করে আপনি কাস্টম ট্রানজিশন তৈরি করতে পারেন। - CSS কাস্টমাইজেশন: Vue.js এর মাধ্যমে CSS ব্যবহার করে ট্রানজিশনের টাইমিং, ইasing ফাংশন, এবং delay কাস্টমাইজ করা যায়।
Vue.js এর ট্রানজিশন সিস্টেম ব্যবহারের মাধ্যমে আপনি আপনার অ্যাপ্লিকেশনে প্রফেশনাল এবং আকর্ষণীয় অ্যানিমেশন সহজেই প্রয়োগ করতে পারবেন, যা ব্যবহারকারীর অভিজ্ঞতা উন্নত করবে।
Read more