CSS-এ @starting-style-এর শক্তি উন্মোচন করে অ্যানিমেশনের প্রাথমিক অবস্থা নির্ভুলভাবে নিয়ন্ত্রণ করুন, যা সব ডিভাইস ও প্ল্যাটফর্মে মসৃণ ট্রানজিশন এবং আরও অনুমানযোগ্য ব্যবহারকারী অভিজ্ঞতা নিশ্চিত করে।
CSS @starting-style আয়ত্ত করা: অ্যানিমেশনের প্রাথমিক অবস্থা নির্ধারণ
ওয়েব ডেভেলপমেন্টের গতিশীল জগতে, অ্যানিমেশন ব্যবহারকারীর অভিজ্ঞতা বাড়াতে, ভিজ্যুয়াল ফিডব্যাক দিতে এবং ব্যবহারকারীর ইন্টারঅ্যাকশনকে গাইড করতে একটি গুরুত্বপূর্ণ ভূমিকা পালন করে। যদিও CSS অ্যানিমেশন এবং ট্রানজিশনগুলি অনেক উন্নত হয়েছে, অ্যানিমেশনের প্রাথমিক অবস্থা নির্ভুলভাবে নিয়ন্ত্রণ করা, বিশেষ করে যখন এটি ব্যবহারকারীর ইন্টারঅ্যাকশন বা অবস্থার পরিবর্তনের দ্বারা ট্রিগার হয়, তখন প্রায়শই সূক্ষ্ম চ্যালেঞ্জ তৈরি করে। এখানেই আসে @starting-style
অ্যাট-রুল, যা এই সমস্যাটি সুন্দরভাবে সমাধান করার জন্য ডিজাইন করা একটি শক্তিশালী CSS ফিচার।
চ্যালেঞ্জটি বোঝা: অ্যানিমেশনের প্রথম ফ্রেম
ঐতিহ্যগতভাবে, যখন কোনো এলিমেন্টে একটি অ্যানিমেশন বা ট্রানজিশন প্রয়োগ করা হয়, তখন তার প্রাথমিক অবস্থা নির্ধারিত হয় অ্যানিমেশন/ট্রানজিশন শুরু হওয়ার মুহূর্তে এলিমেন্টটির বর্তমান কম্পিউটেড স্টাইল দ্বারা। এর ফলে অপ্রত্যাশিত ভিজ্যুয়াল জাম্প বা অসামঞ্জস্য দেখা দিতে পারে, বিশেষ করে এই ধরনের পরিস্থিতিতে:
- পেজগুলির মধ্যে নেভিগেট করা: যখন কোনো নতুন পেজে একটি কম্পোনেন্ট অ্যানিমেট করে আসে, তখন তার প্রাথমিক স্টাইলগুলি যদি সাবধানে পরিচালনা না করা হয় তবে যা উদ্দেশ্য ছিল তার থেকে ভিন্ন হতে পারে।
- হোভার বা ফোকাসে অ্যানিমেশন ট্রিগার করা: অ্যানিমেশনটি মসৃণভাবে শুরু হওয়ার আগে এলিমেন্টটিতে এমন স্টাইল থাকতে পারে যা ক্ষণিকের জন্য ফ্ল্যাশ করে বা পরিবর্তিত হয়।
- জাভাস্ক্রিপ্টের মাধ্যমে অ্যানিমেশন প্রয়োগ করা: যদি জাভাস্ক্রিপ্ট গতিশীলভাবে একটি ক্লাস যোগ করে যা একটি অ্যানিমেশন ট্রিগার করে, তবে ক্লাসটি যোগ করার ঠিক আগের এলিমেন্টের অবস্থা অ্যানিমেশনের শুরুকে প্রভাবিত করে।
display: none
বাvisibility: hidden
জড়িত অ্যানিমেশন: যে এলিমেন্টগুলি প্রাথমিকভাবে রেন্ডার করা হয় না, সেগুলি দৃশ্যমান না হওয়া পর্যন্ত অ্যানিমেশনে অংশ নিতে পারে না, যা একটি মসৃণ প্রবেশের পরিবর্তে হঠাৎ উপস্থিতির কারণ হয়।
একটি সহজ উদাহরণ বিবেচনা করুন: আপনি চান একটি এলিমেন্ট ফেড ইন এবং স্কেল আপ হোক। যদি এলিমেন্টটির প্রাথমিকভাবে opacity: 0
এবং transform: scale(0.5)
থাকে, এবং তারপরে একটি CSS অ্যানিমেশন প্রয়োগ করা হয় যা opacity: 1
এবং transform: scale(1)
কে টার্গেট করে, তবে অ্যানিমেশনটি তার বর্তমান অবস্থা (অদৃশ্য এবং স্কেল ডাউন) থেকে শুরু হয়। এটি প্রত্যাশিতভাবে কাজ করে। কিন্তু, যদি এলিমেন্টটির প্রাথমিকভাবে opacity: 1
এবং transform: scale(1)
থাকে, এবং তারপরে এমন একটি অ্যানিমেশন প্রয়োগ করা হয় যা opacity: 0
এবং scale(0.5)
থেকে শুরু হওয়া উচিত? @starting-style
ছাড়া, অ্যানিমেশনটি এলিমেন্টের বিদ্যমান opacity: 1
এবং scale(1)
থেকে শুরু হবে, যা কার্যকরভাবে উদ্দিষ্ট প্রারম্ভিক বিন্দুটি এড়িয়ে যাবে।
@starting-style
-এর পরিচিতি: সমাধান
@starting-style
অ্যাট-রুলটি সিএসএস অ্যানিমেশন এবং ট্রানজিশনের জন্য প্রাথমিক মান নির্ধারণের একটি ঘোষণামূলক উপায় সরবরাহ করে যা একটি এলিমেন্টে প্রথমবার ডকুমেন্টে প্রবেশ করার সময় বা যখন এটি একটি নতুন অবস্থায় প্রবেশ করে তখন প্রয়োগ করা হয়। এটি আপনাকে এমন এক সেট স্টাইল নির্দিষ্ট করতে দেয় যা দিয়ে অ্যানিমেশন শুরু হবে, এলিমেন্টের তৈরির সময় বা ট্রানজিশন শুরুর সময়ে তার ডিফল্ট স্টাইল নির্বিশেষে।
এটি বিশেষত শক্তিশালী যখন এর সাথে ব্যবহার করা হয়:
@keyframes
অ্যানিমেশন: এমন অ্যানিমেশনের জন্য প্রাথমিক অবস্থা নির্ধারণ করা যা হয়তো0%
(বাfrom
) থেকে শুরু নাও হতে পারে।- CSS Transitions: একটি নন-ট্রানজিশনড অবস্থা থেকে ট্রানজিশনের শুরুতে একটি মসৃণ রূপান্তর নিশ্চিত করা।
@keyframes
-এর সাথে @starting-style
কীভাবে কাজ করে
যখন আপনি একটি @keyframes
অ্যানিমেশনের সাথে @starting-style
ব্যবহার করেন, তখন আপনি এমন স্টাইলগুলি নির্দিষ্ট করতে পারেন যা অ্যানিমেশনের প্রথম কীফ্রেম (সাধারণত 0%
বা from
কীফ্রেম) কার্যকর হওয়ার *আগে* প্রয়োগ করা উচিত। এটি এমন অ্যানিমেশনগুলির জন্য বিশেষভাবে কার্যকর যেগুলি একটি 'অদৃশ্য' বা 'সংকুচিত' অবস্থা থেকে শুরু হওয়া প্রয়োজন কিন্তু এলিমেন্টটি অন্যথায় ডিফল্ট দৃশ্যমান স্টাইলগুলির সাথে রেন্ডার হতে পারে।
এর সিনট্যাক্সটি সহজ:
@keyframes fadeAndScale {
from {
opacity: 1;
transform: scale(1);
}
to {
opacity: 0;
transform: scale(0.5);
}
}
.my-element {
/* Other styles */
animation: fadeAndScale 1s ease-out forwards;
}
@starting-style {
opacity: 0;
transform: scale(0.5);
}
এই উদাহরণে, .my-element
-কে ফেড আউট এবং সঙ্কুচিত করার উদ্দেশ্য। যদি এটি প্রাথমিকভাবে opacity: 1
এবং transform: scale(1)
দিয়ে রেন্ডার করা হতো, তবে from { opacity: 1; transform: scale(1); }
থেকে শুরু হওয়া অ্যানিমেশনটি তাৎক্ষণিক মনে হতো কারণ এটি ইতিমধ্যে 'from' অবস্থায় রয়েছে। তবে, @starting-style
ব্যবহার করে, আমরা ব্রাউজারকে স্পষ্টভাবে বলি:
- যখন এই অ্যানিমেশন শুরু হবে, এলিমেন্টটি দৃশ্যত
opacity: 0
দিয়ে প্রস্তুত করা উচিত। - এবং এর transform হওয়া উচিত
scale(0.5)
।
এটি নিশ্চিত করে যে এলিমেন্টের স্বাভাবিক অবস্থা ভিন্ন হলেও, অ্যানিমেশনটি নির্দিষ্ট প্রারম্ভিক মান থেকে সঠিকভাবে তার ক্রম শুরু করে। ব্রাউজার কার্যকরভাবে এই @starting-style
মানগুলি প্রয়োগ করে, তারপর সেই মানগুলি থেকে from
কীফ্রেম শুরু করে, এবং to
কীফ্রেমের দিকে এগিয়ে যায়। যদি অ্যানিমেশনটি forwards
-এ সেট করা থাকে, তবে অ্যানিমেশন সম্পূর্ণ হওয়ার পরে to
কীফ্রেমের চূড়ান্ত অবস্থা বজায় থাকে।
ট্রানজিশনের সাথে @starting-style
কীভাবে কাজ করে
যখন একটি CSS ট্রানজিশন কোনো এলিমেন্টে প্রয়োগ করা হয়, তখন এটি ট্রানজিশন ঘটার *আগে* এলিমেন্টের স্টাইল এবং ট্রানজিশন ঘটার *পরে* তার স্টাইলের মধ্যে মসৃণভাবে ইন্টারপোলেট করে। চ্যালেঞ্জটি তখন দেখা দেয় যখন যে অবস্থাটি ট্রানজিশন ট্রিগার করে তা গতিশীলভাবে যোগ করা হয়, অথবা যখন আপনি চান একটি ট্রানজিশন একটি নির্দিষ্ট বিন্দু থেকে শুরু হোক যা এলিমেন্টের ডিফল্ট রেন্ডার করা অবস্থা নয়।
একটি বাটনের কথা ভাবুন যা হোভারে স্কেল আপ হয়। ডিফল্টভাবে, ট্রানজিশনটি বাটনের নন-হোভার অবস্থা থেকে হোভার অবস্থায় মসৃণভাবে চলে যাবে।
.my-button {
transition: transform 0.3s ease;
}
.my-button:hover {
transform: scale(1.1);
}
এটি পুরোপুরি ঠিকভাবে কাজ করে। ট্রানজিশনটি বাটনের ডিফল্ট transform: scale(1)
থেকে transform: scale(1.1)
-এ শুরু হয়।
এখন, কল্পনা করুন আপনি চান বাটনটি একটি স্কেল-আপ ইফেক্টের সাথে অ্যানিমেট করে *প্রবেশ* করবে এবং তারপরে, হোভারে, *আরও* স্কেল আপ হবে। যদি বাটনটি প্রাথমিকভাবে তার পূর্ণ আকারে উপস্থিত হয়, তবে হোভার ট্রানজিশনটি সহজ। কিন্তু যদি বাটনটি একটি ফেড-ইন এবং স্কেল-আপ অ্যানিমেশন ব্যবহার করে উপস্থিত হয়, এবং আপনি চান হোভার ইফেক্টটিও তার *বর্তমান* অবস্থা থেকে একটি মসৃণ স্কেল-আপ হোক, তার আসল অবস্থা থেকে নয়?
এখানেই @starting-style
অমূল্য হয়ে ওঠে। এটি আপনাকে একটি ট্রানজিশনের প্রাথমিক অবস্থা নির্ধারণ করতে দেয় যখন সেই ট্রানজিশনটি এমন একটি এলিমেন্টে প্রয়োগ করা হয় যা প্রথমবার রেন্ডার করা হচ্ছে (যেমন, যখন একটি কম্পোনেন্ট জাভাস্ক্রিপ্ট বা পেজ লোডের মাধ্যমে DOM-এ প্রবেশ করে)।
ধরা যাক আপনার একটি এলিমেন্ট আছে যা ভিউতে ফেড এবং স্কেল করে আসবে, এবং তারপর হোভারে আরও স্কেল আপ হবে। আপনি প্রবেশের জন্য একটি অ্যানিমেশন এবং তারপর হোভার ইফেক্টের জন্য একটি ট্রানজিশন ব্যবহার করতে পারেন:
@keyframes fadeInScale {
from {
opacity: 0;
transform: scale(0.8);
}
to {
opacity: 1;
transform: scale(1);
}
}
.animated-card {
opacity: 0;
transform: scale(0.8);
animation: fadeInScale 0.5s ease-out forwards;
transition: transform 0.3s ease;
}
.animated-card:hover {
transform: scale(1.1);
}
/* Define the starting style for the initial entry animation */
@starting-style {
opacity: 0;
transform: scale(0.8);
}
এই পরিস্থিতিতে, @starting-style
রুলটি নিশ্চিত করে যে এলিমেন্টটি তার রেন্ডারিং শুরু করবে opacity: 0
এবং transform: scale(0.8)
দিয়ে, যা fadeInScale
অ্যানিমেশনের from
কীফ্রেমের সাথে মেলে। একবার অ্যানিমেশনটি সম্পূর্ণ হয়ে গেলে এবং এলিমেন্টটি opacity: 1
এবং transform: scale(1)
-এ স্থির হলে, হোভার ইফেক্টের জন্য ট্রানজিশনটি এই অবস্থা থেকে transform: scale(1.1)
-এ মসৃণভাবে ইন্টারপোলেট করে। @starting-style
এখানে বিশেষভাবে অ্যানিমেশনের প্রাথমিক প্রয়োগকে প্রভাবিত করে, এটি নিশ্চিত করে যে এটি পছন্দসই ভিজ্যুয়াল পয়েন্ট থেকে শুরু হয়।
গুরুত্বপূর্ণভাবে, @starting-style
সেই ট্রানজিশনগুলির জন্য প্রযোজ্য যা ডকুমেন্টে নতুনভাবে ঢোকানো এলিমেন্টগুলিতে প্রয়োগ করা হয়। যদি কোনো এলিমেন্ট ইতিমধ্যে বিদ্যমান থাকে এবং তার স্টাইলগুলি একটি ট্রানজিশন প্রপার্টি অন্তর্ভুক্ত করার জন্য পরিবর্তিত হয়, @starting-style
সরাসরি সেই নির্দিষ্ট ট্রানজিশনের শুরুকে প্রভাবিত করে না যদি না এলিমেন্টটি নতুনভাবে রেন্ডার করা হয়।
ব্রাউজার সাপোর্ট এবং বাস্তবায়ন
@starting-style
অ্যাট-রুলটি CSS স্পেসিফিকেশনের একটি অপেক্ষাকৃত নতুন সংযোজন। এর ব্যাপক গ্রহণের সময়:
- Chrome এবং Edge-এ চমৎকার সাপোর্ট রয়েছে।
- Firefox-এ ভালো সাপোর্ট রয়েছে।
- Safari-ও ভালো সাপোর্ট প্রদান করে।
সর্বশেষ ব্রাউজার সামঞ্জস্যতার তথ্যের জন্য Can I Use চেক করার পরামর্শ দেওয়া হয়। যে ব্রাউজারগুলি @starting-style
সমর্থন করে না, সেগুলিতে অ্যানিমেশন বা ট্রানজিশনটি কেবল এলিমেন্টের বিদ্যমান কম্পিউটেড স্টাইলগুলিতে ফিরে যাবে, যা আগে বর্ণিত কম-আদর্শ আচরণের কারণ হতে পারে।
সেরা অভ্যাস এবং উন্নত ব্যবহার
১. ধারাবাহিকতা চাবিকাঠি
@starting-style
ব্যবহার করে নিশ্চিত করুন যে অ্যানিমেশন এবং ট্রানজিশনগুলি ধারাবাহিকভাবে শুরু হয়, এলিমেন্টটি DOM-এ কীভাবে প্রবেশ করানো হয়েছে বা তার প্রাথমিক কম্পিউটেড স্টাইলগুলি কী হতে পারে তা নির্বিশেষে। এটি একটি আরও অনুমানযোগ্য এবং পরিশীলিত ব্যবহারকারীর অভিজ্ঞতা প্রচার করে।
২. আপনার কীফ্রেমগুলি ডিক্লাটার করুন
প্রতিটি অ্যানিমেশনের from
কীফ্রেমে প্রাথমিক অবস্থা (যেমন, opacity: 0
) যোগ করার পরিবর্তে, আপনি এটি একবার @starting-style
-এ সংজ্ঞায়িত করতে পারেন। এটি আপনার @keyframes
রুলগুলিকে আরও পরিষ্কার এবং অ্যানিমেশনের মূল অগ্রগতির উপর আরও বেশি কেন্দ্রীভূত করে।
৩. জটিল অবস্থা পরিবর্তন হ্যান্ডেল করা
যে কম্পোনেন্টগুলি একাধিক অবস্থা পরিবর্তন বা অ্যানিমেশনের মধ্য দিয়ে যায়, সেগুলির জন্য @starting-style
এলিমেন্টগুলি যোগ বা আপডেট করার সময় তাদের প্রাথমিক চেহারা পরিচালনা করতে সাহায্য করতে পারে। উদাহরণস্বরূপ, একটি সিঙ্গেল-পেজ অ্যাপ্লিকেশন (SPA)-এ যেখানে কম্পোনেন্টগুলি ঘন ঘন মাউন্ট এবং আনমাউন্ট করা হয়, @starting-style
দিয়ে একটি এন্ট্রি অ্যানিমেশনের প্রারম্ভিক স্টাইল সংজ্ঞায়িত করা একটি মসৃণ উপস্থিতি নিশ্চিত করে।
৪. পারফরম্যান্স বিবেচনা
যদিও @starting-style
নিজে পারফরম্যান্সের উপর সহজাতভাবে কোনো প্রভাব ফেলে না, এটি যে অ্যানিমেশন এবং ট্রানজিশনগুলি নিয়ন্ত্রণ করে সেগুলি ফেলে। সর্বদা এমন প্রপার্টিগুলি অ্যানিমেট করার চেষ্টা করুন যা ব্রাউজার দক্ষতার সাথে পরিচালনা করতে পারে, যেমন transform
এবং opacity
। সম্ভব হলে width
, height
, বা margin
-এর মতো প্রপার্টি অ্যানিমেট করা এড়িয়ে চলুন, কারণ এগুলি ব্যয়বহুল লেআউট রিক্যালকুলেশন ট্রিগার করতে পারে।
৫. পুরানো ব্রাউজারগুলির জন্য ফলব্যাক
যেসব ব্রাউজার @starting-style
সমর্থন করে না, তাদের ব্যবহারকারীদের জন্য একটি যুক্তিসঙ্গত অভিজ্ঞতা নিশ্চিত করতে, আপনি ফলব্যাক স্টাইল সরবরাহ করতে পারেন। এগুলি হল এলিমেন্টের স্বাভাবিক প্রাথমিক স্টাইল যেখান থেকে অ্যানিমেশন অন্যথায় শুরু হত। অনেক ক্ষেত্রে, @starting-style
ছাড়া ডিফল্ট আচরণ গ্রহণযোগ্য হতে পারে যদি অ্যানিমেশনটি সহজ হয়।
আরও জটিল পরিস্থিতির জন্য, আপনার ব্রাউজার সাপোর্ট সনাক্ত করতে বা নির্দিষ্ট প্রাথমিক স্টাইল প্রয়োগ করতে জাভাস্ক্রিপ্টের প্রয়োজন হতে পারে। তবে, @starting-style
-এর লক্ষ্য হল এই ধরনের জাভাস্ক্রিপ্ট হস্তক্ষেপের প্রয়োজন কমানো।
৬. বিশ্বব্যাপী পৌঁছানো এবং স্থানীয়করণ
বিশ্বব্যাপী দর্শকদের জন্য ডেভেলপ করার সময়, অ্যানিমেশনগুলি অন্তর্ভুক্তিমূলক হওয়া উচিত এবং দেশ-নির্দিষ্ট ভিজ্যুয়াল ইঙ্গিতের উপর নির্ভর করা উচিত নয়। @starting-style
অ্যাট-রুলটি একটি প্রযুক্তিগত CSS ফিচার যা সাংস্কৃতিক প্রেক্ষাপট থেকে স্বাধীনভাবে কাজ করে। এর মূল্য হলো অ্যানিমেশনগুলির জন্য একটি সামঞ্জস্যপূর্ণ প্রযুক্তিগত ভিত্তি প্রদান করা যা পরে সাংস্কৃতিকভাবে সংবেদনশীল উপায়ে স্টাইল এবং প্রয়োগ করা যেতে পারে। বিভিন্ন ডিভাইস এবং নেটওয়ার্ক পরিস্থিতিতে মসৃণ অ্যানিমেশন নিশ্চিত করা ওয়েব ডেভেলপারদের জন্য একটি সার্বজনীন লক্ষ্য, এবং @starting-style
সেই ধারাবাহিকতা অর্জনে অবদান রাখে।
উদাহরণ দৃশ্য: একটি পোর্টফোলিও কার্ড অ্যানিমেশন
আসুন একটি সাধারণ ওয়েব ডিজাইন প্যাটার্ন দিয়ে চিত্রিত করি: একটি পোর্টফোলিও গ্রিড যেখানে প্রতিটি কার্ড একটি সূক্ষ্ম বিলম্ব এবং একটি স্কেলিং ইফেক্টের সাথে ভিউতে অ্যানিমেট করে আসে।
লক্ষ্য: প্রতিটি কার্ড 0.9
থেকে 1
পর্যন্ত ফেড ইন এবং স্কেল আপ হওয়া উচিত, এবং গ্রিডে উপস্থিত হওয়ার সময় প্রতিটি কার্ডে একটি সামান্য বিলম্ব প্রয়োগ করা উচিত।
HTML:
<div class="portfolio-grid">
<div class="portfolio-item">Card 1</div>
<div class="portfolio-item">Card 2</div>
<div class="portfolio-item">Card 3</div>
<div class="portfolio-item">Card 4</div>
</div>
CSS:
.portfolio-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
gap: 20px;
padding: 20px;
}
.portfolio-item {
background-color: #f0f0f0;
padding: 30px;
border-radius: 8px;
text-align: center;
font-size: 1.2em;
color: #333;
box-shadow: 0 2px 5px rgba(0,0,0,0.1);
/* Default initial state */
opacity: 0;
transform: scale(0.9);
/* Animation properties */
animation: fadeInUpScale 0.6s ease-out forwards;
}
/* @keyframes for the animation */
@keyframes fadeInUpScale {
from {
opacity: 1;
transform: scale(1);
}
to {
opacity: 1;
transform: scale(1);
}
}
/* @starting-style to define the initial state for the animation */
@starting-style {
opacity: 0;
transform: scale(0.9);
}
/* Applying delays to each item using :nth-child */
.portfolio-item:nth-child(1) {
animation-delay: 0.1s;
}
.portfolio-item:nth-child(2) {
animation-delay: 0.2s;
}
.portfolio-item:nth-child(3) {
animation-delay: 0.3s;
}
.portfolio-item:nth-child(4) {
animation-delay: 0.4s;
}
/* Adjusting keyframes to show the effect */
@keyframes fadeInUpScale {
0% {
opacity: 0;
transform: scale(0.9);
}
100% {
opacity: 1;
transform: scale(1);
}
}
ব্যাখ্যা:
.portfolio-item
এলিমেন্টগুলি প্রাথমিকভাবেopacity: 0
এবংtransform: scale(0.9)
-এ সেট করা আছে। এটি অ্যানিমেশন প্রয়োগ করার আগে তাদের অবস্থা।@keyframes fadeInUpScale
0%
(যা অ্যানিমেশনের অগ্রগতির জন্য কার্যকরভাবে প্রারম্ভিক অবস্থা) থেকে100%
পর্যন্ত অ্যানিমেশন সংজ্ঞায়িত করে।@starting-style
রুলটি স্পষ্টভাবে ঘোষণা করে যে যখনfadeInUpScale
অ্যানিমেশন প্রয়োগ করা হয়, তখন এটিopacity: 0
এবংtransform: scale(0.9)
দিয়ে শুরু হওয়া উচিত। এটি নিশ্চিত করে যে যদি ডিফল্ট স্টাইলগুলি কোনোভাবে পরিবর্তিত হয়, তবুও অ্যানিমেশনটি এই সংজ্ঞায়িত বিন্দু থেকে শুরু হবে।animation-delay
প্রপার্টিটি প্রতিটি চাইল্ডে:nth-child
সিলেক্টর ব্যবহার করে প্রয়োগ করা হয় যাতে কার্ডগুলির উপস্থিতিতে একটি স্তব্ধতা তৈরি করা যায়, যা একটি আরও দৃশ্যত আকর্ষণীয় ক্রম তৈরি করে।forwards
কীওয়ার্ডটি নিশ্চিত করে যে অ্যানিমেশন শেষ হওয়ার পরে এলিমেন্টটি শেষ কীফ্রেমের স্টাইলগুলি ধরে রাখে।
@starting-style
ছাড়া, যদি ব্রাউজার .portfolio-item
-এর প্রাথমিক কম্পিউটেড স্টাইলগুলিকে অ্যানিমেশনের প্রারম্ভিক বিন্দু হিসাবে সঠিকভাবে ব্যাখ্যা না করত, তবে অ্যানিমেশনটি একটি ভিন্ন, অনিচ্ছাকৃত অবস্থা থেকে শুরু হতে পারত। @starting-style
গ্যারান্টি দেয় যে অ্যানিমেশনটি উদ্দিষ্ট মানগুলি থেকে সঠিকভাবে তার ক্রম শুরু করে।
উপসংহার
@starting-style
অ্যাট-রুলটি CSS অ্যানিমেশন এবং ট্রানজিশনে একটি উল্লেখযোগ্য অগ্রগতি। এটি ডেভেলপারদের অ্যানিমেটেড এলিমেন্টগুলির প্রাথমিক অবস্থার উপর আরও সুনির্দিষ্ট নিয়ন্ত্রণ অর্জনে ক্ষমতায়ন করে, যা মসৃণ, আরও অনুমানযোগ্য এবং পেশাদারভাবে পরিশীলিত ব্যবহারকারী ইন্টারফেসের দিকে পরিচালিত করে। @starting-style
বোঝা এবং বাস্তবায়ন করার মাধ্যমে, আপনি আপনার ওয়েব অ্যানিমেশনগুলিকে ভালো থেকে অসাধারণে উন্নীত করতে পারেন, যা আপনার বিশ্বব্যাপী দর্শকদের জন্য বিভিন্ন ডিভাইস এবং ব্রাউজারে একটি সামঞ্জস্যপূর্ণ এবং আকর্ষক অভিজ্ঞতা নিশ্চিত করে। এই শক্তিশালী টুলটি ব্যবহার করে অত্যাশ্চর্য অ্যানিমেটেড ওয়েব অভিজ্ঞতা তৈরি করুন যা সত্যিই ব্যবহারকারীদের মুগ্ধ করে।