സിഎസ്എസ് മോഷൻ പാത്ത് മൊഡ്യൂളിനെക്കുറിച്ചുള്ള ഈ സമഗ്രമായ ഗൈഡ് ഉപയോഗിച്ച് നൂതന വെബ് ആനിമേഷൻ ടെക്നിക്കുകൾ പഠിക്കാം. ഓഫ്സെറ്റ്-പാത്ത്, ഓഫ്സെറ്റ്-ഡിസ്റ്റൻസ് എന്നിവ ഉപയോഗിച്ച് ചലനപാതകൾ നിയന്ത്രിക്കാൻ പഠിക്കുക.
സിഎസ്എസ് മോഷൻ പാത്ത് ഓഫ്സെറ്റ്: അഡ്വാൻസ്ഡ് ആനിമേഷൻ ട്രാക്ക് കൺട്രോളിലേക്കുള്ള ഒരു ആഴത്തിലുള്ള യാത്ര
വർഷങ്ങളായി, വെബിൽ സങ്കീർണ്ണവും നേർരേഖയിലല്ലാത്തതുമായ ആനിമേഷനുകൾ നിർമ്മിക്കുന്നതിന് വലിയ അളവിൽ ജാവാസ്ക്രിപ്റ്റോ അല്ലെങ്കിൽ സങ്കീർണ്ണമായ എസ്വിജി SMIL വിദ്യകളോ ആവശ്യമായിരുന്നു. ഒരു ഘടകത്തെ വളഞ്ഞതോ ഇഷ്ടാനുസൃതമായതോ ആയ ഒരു പാതയിലൂടെ ആനിമേറ്റ് ചെയ്യുന്നതിന് ഓരോ ഫ്രെയിമിലെയും സ്ഥാനങ്ങൾ കണക്കാക്കേണ്ടിയിരുന്നു, ഇത് പ്രകടനത്തെ ബാധിക്കുന്നതും പരിപാലിക്കാൻ ബുദ്ധിമുട്ടുള്ളതുമായ ഒരു പ്രക്രിയയായിരുന്നു. എന്നാൽ വെബ് പ്ലാറ്റ്ഫോം വികസിച്ചു, അതോടൊപ്പം സങ്കീർണ്ണമായ ദൃശ്യാനുഭവങ്ങൾ വ്യക്തമായി നിർവചിക്കാനുള്ള നമ്മുടെ കഴിവും. ഇവിടെയാണ് സിഎസ്എസ് മോഷൻ പാത്ത് മൊഡ്യൂൾ വരുന്നത്, ഇത് ഡെവലപ്പർമാർക്ക് ഒരു ഘടകത്തിന്റെ ചലനത്തെ ഇഷ്ടാനുസൃതമായി നിർവചിച്ച പാതയിലൂടെ നേരിട്ട് നിയന്ത്രിക്കാൻ സഹായിക്കുന്ന ശക്തമായ പ്രോപ്പർട്ടികളുടെ ഒരു കൂട്ടമാണ്.
ഈ മൊഡ്യൂൾ ഒരു ഘടകത്തെ ഒരു പോയിന്റിൽ നിന്ന് മറ്റൊന്നിലേക്ക് നീക്കുന്നതിനെക്കുറിച്ച് മാത്രമല്ല; ഇത് മുഴുവൻ യാത്രയെയും നിർവചിക്കുന്നതിനെക്കുറിച്ചാണ്. മുമ്പ് പ്രത്യേക ആനിമേഷൻ സോഫ്റ്റ്വെയറുകളിൽ മാത്രം സാധ്യമായിരുന്ന, സുഗമവും സ്വാഭാവികവും ആകർഷകവുമായ ആനിമേഷനുകൾ നിർമ്മിക്കാൻ ഇത് നമ്മളെ അനുവദിക്കുന്നു. ഒരു അറിയിപ്പ് ഐക്കൺ മനോഹരമായ ഒരു വളവിലൂടെ വരണമെന്നോ, ഉപയോക്താവ് സ്ക്രോൾ ചെയ്യുമ്പോൾ ഒരു ഉൽപ്പന്നത്തിന്റെ ചിത്രം വളഞ്ഞ പാത പിന്തുടരണമെന്നോ, അല്ലെങ്കിൽ ഒരു വിമാനം മാപ്പിലൂടെ പറന്നുപോകണമെന്നോ നിങ്ങൾ ആഗ്രഹിക്കുന്നുവെങ്കിൽ, സിഎസ്എസ് മോഷൻ പാത്ത് അത് കാര്യക്ഷമമായും മനോഹരമായും ചെയ്യാൻ ആവശ്യമായ ടൂളുകൾ നൽകുന്നു.
ഈ സമഗ്രമായ ഗൈഡിൽ, സിഎസ്എസ് മോഷൻ പാത്ത് പ്രോപ്പർട്ടികളുടെ മുഴുവൻ ശ്രേണിയും നമ്മൾ പര്യവേക്ഷണം ചെയ്യും, ഇവയെല്ലാം ഒരു ഘടകത്തെ ഒരു പാതയിലൂടെ 'ഓഫ്സെറ്റ്' ചെയ്യുന്ന പ്രവർത്തനം കാരണം ഒരുമിച്ച് അറിയപ്പെടുന്നു. നമ്മൾ ഓരോ പ്രോപ്പർട്ടിയെയും വിശദമായി പരിശോധിക്കുകയും, പ്രായോഗിക ഉപയോഗങ്ങൾ പര്യവേക്ഷണം ചെയ്യുകയും, റെസ്പോൺസീവും ഇന്ററാക്ടീവുമായ ആനിമേഷനുകൾക്കായുള്ള നൂതന സാങ്കേതിക വിദ്യകളിലേക്ക് കടന്നുചെല്ലുകയും, സാധാരണ വെല്ലുവിളികളെ അഭിമുഖീകരിക്കുകയും ചെയ്യും. ഇത് പൂർത്തിയാകുമ്പോഴേക്കും, ലളിതമായ ട്രാൻസിഷനുകൾക്കപ്പുറം കടന്നുചെന്ന് നിങ്ങളുടെ വെബ് പ്രോജക്റ്റുകളെ ഉയർത്തുന്ന യഥാർത്ഥ ഡൈനാമിക്, പാത്ത് അടിസ്ഥാനമാക്കിയുള്ള ആനിമേഷനുകൾ നിർമ്മിക്കാനുള്ള അറിവ് നിങ്ങൾക്കുണ്ടാകും.
പ്രധാന പ്രോപ്പർട്ടികൾ: മോഷൻ പാത്ത് മൊഡ്യൂളിനെ മനസ്സിലാക്കാം
സിഎസ്എസ് മോഷൻ പാത്തിന്റെ മാന്ത്രികത ഒരുമിച്ച് പ്രവർത്തിക്കുന്ന ഏതാനും പ്രധാന പ്രോപ്പർട്ടികളിലാണ്. സുഗമമായ ചലനം സൃഷ്ടിക്കുന്നതിന് അവയുടെ വ്യക്തിഗത റോളുകളും അവ എങ്ങനെ സഹകരിക്കുന്നുവെന്നും മനസ്സിലാക്കാൻ നമുക്ക് അവ ഓരോന്നായി പരിശോധിക്കാം.
offset-path: നിങ്ങളുടെ ചലനപാത നിർവചിക്കുന്നു
ഏതൊരു മോഷൻ പാത്ത് ആനിമേഷന്റെയും അടിസ്ഥാനമാണ് offset-path പ്രോപ്പർട്ടി. ഘടകം പിന്തുടരേണ്ട ജ്യാമിതീയ പാത ഇത് നിർവചിക്കുന്നു. ഒരു പാതയില്ലാതെ യാത്രയില്ല. ഒരു പാത നിർവചിക്കുന്നതിനുള്ള ഏറ്റവും സാധാരണവും ശക്തവുമായ മാർഗ്ഗം path() ഫംഗ്ഷൻ ഉപയോഗിക്കുക എന്നതാണ്, ഇത് ഒരു എസ്വിജി പാത്ത് ഡാറ്റാ സ്ട്രിംഗ് സ്വീകരിക്കുന്നു—ഒരു എസ്വിജി <path> ഘടകത്തിന്റെ d ആട്രിബ്യൂട്ടിൽ നിങ്ങൾ കാണുന്ന അതേ സ്ട്രിംഗ്.
ഒരു എസ്വിജി പാത്ത് സ്ട്രിംഗ് എന്നത് രൂപങ്ങൾ വരയ്ക്കുന്നതിനുള്ള ഒരു ചെറിയ ഭാഷയാണ്. ഉദാഹരണത്തിന്:
- M x y: ഒരു വര വരയ്ക്കാതെ (x, y) കോർഡിനേറ്റിലേക്ക് നീങ്ങുക.
- L x y: (x, y) കോർഡിനേറ്റിലേക്ക് ഒരു നേർരേഖ വരയ്ക്കുക.
- C c1x c1y, c2x c2y, x y: (c1x, c1y), (c2x, c2y) എന്നീ കൺട്രോൾ പോയിന്റുകൾ ഉപയോഗിച്ച് (x, y) എന്നതിലേക്ക് ഒരു ക്യൂബിക് ബെസിയർ കർവ് വരയ്ക്കുക.
- Q cx cy, x y: (cx, cy) എന്ന കൺട്രോൾ പോയിന്റ് ഉപയോഗിച്ച് (x, y) എന്നതിലേക്ക് ഒരു ക്വാഡ്രാറ്റിക് ബെസിയർ കർവ് വരയ്ക്കുക.
- Z: ആരംഭ പോയിന്റിലേക്ക് ഒരു രേഖ വരച്ച് പാത അടയ്ക്കുക.
നിങ്ങൾ ഈ കമാൻഡുകൾ മനഃപാഠമാക്കേണ്ടതില്ല. Inkscape, Figma, അല്ലെങ്കിൽ Adobe Illustrator പോലുള്ള മിക്ക വെക്റ്റർ ഗ്രാഫിക്സ് എഡിറ്ററുകൾക്കും എസ്വിജി കോഡ് എക്സ്പോർട്ട് ചെയ്യാൻ കഴിയും, അതിൽ നിന്ന് നിങ്ങൾക്ക് പാത്ത് സ്ട്രിംഗ് എളുപ്പത്തിൽ പകർത്താനാകും.
നമുക്ക് ഒരു അടിസ്ഥാന ഉദാഹരണം നോക്കാം:
.element-to-animate {
offset-path: path('M 20 20 C 100 20, 100 100, 200 120 S 300 140, 350 80');
/* Additional animation properties will go here */
}
path() കൂടാതെ, offset-path പ്രോപ്പർട്ടിക്ക് circle(), ellipse(), polygon() തുടങ്ങിയ അടിസ്ഥാന രൂപങ്ങളും സ്വീകരിക്കാൻ കഴിയും, അല്ലെങ്കിൽ ഡോക്യുമെന്റിനുള്ളിലെ ഒരു എസ്വിജി പാത്ത് ഘടകത്തിലേക്ക് വിരൽ ചൂണ്ടുന്ന ഒരു URL (url(#svgPathId)) പോലും സ്വീകരിക്കാം. എന്നിരുന്നാലും, ഇഷ്ടാനുസൃത ചലനപാതകൾക്ക് ഏറ്റവും കൂടുതൽ വൈവിധ്യം നൽകുന്നത് path() ഫംഗ്ഷനാണ്.
offset-distance: പാതയിലൂടെ ആനിമേറ്റ് ചെയ്യുന്നു
ഒരു പാത നിർവചിക്കുന്നത് ആദ്യപടി മാത്രമാണ്. offset-distance പ്രോപ്പർട്ടിയാണ് ഘടകത്തെ ആ പാതയിലൂടെ യഥാർത്ഥത്തിൽ ചലിപ്പിക്കുന്നത്. പാതയുടെ തുടക്കത്തിൽ നിന്നുള്ള ദൂരമായി ഇത് ഘടകത്തിന്റെ സ്ഥാനം വ്യക്തമാക്കുന്നു. 0% എന്ന മൂല്യം ഘടകത്തെ തുടക്കത്തിലും, 50% മധ്യത്തിലും, 100% അവസാനത്തിലും സ്ഥാപിക്കുന്നു.
സിഎസ്എസ് @keyframes ഉപയോഗിച്ച് നിങ്ങൾ സാധാരണയായി ആനിമേറ്റ് ചെയ്യുന്ന പ്രോപ്പർട്ടി ഇതാണ്.
.element-to-animate {
offset-path: path('M 0 50 L 300 50'); /* A simple horizontal line */
animation: move-along-path 3s linear infinite;
}
@keyframes move-along-path {
from {
offset-distance: 0%;
}
to {
offset-distance: 100%;
}
}
ഈ ഉദാഹരണത്തിൽ, ഘടകം 3 സെക്കൻഡിനുള്ളിൽ തിരശ്ചീന രേഖയുടെ തുടക്കം (0%) മുതൽ അവസാനം (100%) വരെ സഞ്ചരിക്കും, ഇത് അനന്തമായി ആവർത്തിക്കും. പാതയിലൂടെയുള്ള ചലനത്തിന്റെ വേഗത നിയന്ത്രിക്കുന്നതിന് animation-timing-function (ഉദാ: ease-in-out) പോലുള്ള സാധുവായ ഏത് സിഎസ്എസ് ആനിമേഷൻ പ്രോപ്പർട്ടികളും നിങ്ങൾക്ക് ഉപയോഗിക്കാം.
offset-rotate: ഒരു ഘടകത്തിന്റെ ദിശ നിയന്ത്രിക്കുന്നു
സ്ഥിരമായി, ഒരു പാതയിലൂടെ നീങ്ങുന്ന ഒരു ഘടകം അതിന്റെ യഥാർത്ഥ ദിശ നിലനിർത്തുന്നു. ഒരു ലളിതമായ ഡോട്ട് അല്ലെങ്കിൽ ഒരു വൃത്തത്തിന് ഇത് മതിയാകും, എന്നാൽ ഒരു അമ്പ്, കാർ, അല്ലെങ്കിൽ വിമാനം പോലുള്ള ഒരു വസ്തുവിന്, അത് നീങ്ങുന്ന ദിശയിലേക്ക് തിരിഞ്ഞിരിക്കണമെന്ന് നിങ്ങൾ ആഗ്രഹിച്ചേക്കാം.
ഇവിടെയാണ് offset-rotate വരുന്നത്. അത് സഞ്ചരിക്കുമ്പോൾ ഘടകത്തിന്റെ കോണീയ ദിശ നിയന്ത്രിക്കുന്നു. ഇത് നിരവധി മൂല്യങ്ങൾ സ്വീകരിക്കുന്നു:
auto(ഡിഫോൾട്ട്): ഘടകത്തിന്റെ നിലവിലെ സ്ഥാനത്തുള്ള പാതയുടെ ദിശയ്ക്ക് തുല്യമായ ഒരു കോണിൽ ഘടകം തിരിയുന്നു. ഇത് ഘടകത്തെ 'മുന്നോട്ട് തിരിഞ്ഞുനിൽക്കാൻ' സഹായിക്കുന്നു.reverse: ഇത്autoപോലെ പ്രവർത്തിക്കുന്നു, പക്ഷേ 180-ഡിഗ്രി റൊട്ടേഷൻ ചേർക്കുന്നു. പാതയിലൂടെ പിന്നോട്ട് തിരിഞ്ഞുനിൽക്കേണ്ട ഒരു വസ്തുവിന് ഇത് ഉപയോഗപ്രദമാണ്.<angle>:90degഅല്ലെങ്കിൽ-1.5radപോലുള്ള ഒരു നിശ്ചിത കോൺ. ആനിമേഷനിലുടനീളം ഘടകം ഈ റൊട്ടേഷൻ നിലനിർത്തും, പാതയുടെ ദിശയെ അവഗണിക്കും.auto <angle>: ഇത് ഓട്ടോമാറ്റിക് റൊട്ടേഷനും ഒരു നിശ്ചിത ഓഫ്സെറ്റും സംയോജിപ്പിക്കുന്നു. ഉദാഹരണത്തിന്,offset-rotate: auto 90deg;ഘടകത്തെ പാതയിലൂടെ മുന്നോട്ട് തിരിയാൻ സഹായിക്കും, പക്ഷേ ഒരു അധിക 90-ഡിഗ്രി ക്ലോക്ക്വൈസ് റൊട്ടേഷനോടൊപ്പം. നിങ്ങളുടെ അസറ്റിന്റെ 'മുന്നോട്ട്' ദിശ പോസിറ്റീവ് X-അക്ഷവുമായി യോജിക്കുന്നില്ലെങ്കിൽ ഇത് വളരെ ഉപയോഗപ്രദമാണ് (ഉദാഹരണത്തിന്, വലത്തേക്ക് എന്നതിലുപരി മുകളിലേക്ക് തിരിഞ്ഞിരിക്കുന്ന ഒരു കാറിന്റെ ടോപ്പ്-ഡൗൺ ചിത്രം).
നമ്മുടെ മുൻ ഉദാഹരണം മുന്നോട്ട് തിരിഞ്ഞ ഒരു അമ്പടയാളം ഉപയോഗിച്ച് പരിഷ്കരിക്കാം:
.arrow {
/* Assuming the arrow SVG points to the right by default */
offset-path: path('M 20 20 C 100 20, 100 100, 200 120');
offset-rotate: auto;
animation: follow-curve 4s ease-in-out infinite;
}
@keyframes follow-curve {
from { offset-distance: 0%; }
to { offset-distance: 100%; }
}
ഇപ്പോൾ, അമ്പടയാളം വളവിലൂടെ നീങ്ങുമ്പോൾ, അത് യാത്ര ചെയ്യുന്ന ദിശയിലേക്ക് എല്ലായ്പ്പോഴും തിരിയും, ഇത് കൂടുതൽ സ്വാഭാവികവും ലളിതവുമായ ഒരു ആനിമേഷൻ സൃഷ്ടിക്കുന്നു.
offset-anchor: ചലനത്തിന്റെ കേന്ദ്രം
അവസാനത്തെ പ്രധാന പ്രോപ്പർട്ടി offset-anchor ആണ്. ഈ പ്രോപ്പർട്ടി transform-origin ന് സമാനമാണ്, പക്ഷേ ഇത് മോഷൻ പാത്ത് ആനിമേഷനുകൾക്ക് മാത്രമുള്ളതാണ്. ആനിമേറ്റ് ചെയ്ത ഘടകത്തിലെ ഏത് പോയിന്റാണ് പാതയിൽ ഉറപ്പിക്കേണ്ടതെന്ന് ഇത് നിർവചിക്കുന്നു.
സ്ഥിരമായി, ഈ ആങ്കർ പോയിന്റ് ഘടകത്തിന്റെ കേന്ദ്രമാണ് (50% 50% അല്ലെങ്കിൽ center). എന്നിരുന്നാലും, കൃത്യമായ സ്ഥാനനിർണ്ണയത്തിനായി നിങ്ങൾക്കിത് മാറ്റേണ്ടി വന്നേക്കാം. ഉദാഹരണത്തിന്, നിങ്ങൾ ഒരു മാപ്പിൽ ഒരു പിൻ ആനിമേറ്റ് ചെയ്യുകയാണെങ്കിൽ, പിന്നിന്റെ കേന്ദ്രമല്ല, അതിന്റെ അറ്റമാണ് പാത പിന്തുടരേണ്ടത്.
offset-anchor പ്രോപ്പർട്ടി background-position അല്ലെങ്കിൽ transform-origin പോലെ ഒരു പൊസിഷൻ മൂല്യം സ്വീകരിക്കുന്നു:
- കീവേഡുകൾ:
top,bottom,left,right,center. - ശതമാനം:
25% 75%. - നീളം:
10px 20px.
ഭ്രമണം ചെയ്യുന്ന ഒരു ഉപഗ്രഹത്തിന്റെ ആനിമേഷൻ പരിഗണിക്കുക:
.planet {
/* Positioned at the center of the container */
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.satellite {
width: 20px;
height: 20px;
offset-path: circle(150px at center);
offset-anchor: center; /* The satellite's center follows the circle */
animation: orbit 10s linear infinite;
}
@keyframes orbit {
from { offset-distance: 0%; }
to { offset-distance: 100%; }
}
ഈ സാഹചര്യത്തിൽ, offset-anchor-നായി ഡിഫോൾട്ടായ center ഉപയോഗിക്കുന്നത് തികച്ചും അനുയോജ്യമാണ്. എന്നാൽ ഉപഗ്രഹത്തിന് ഒരു നീണ്ട ആന്റിന ഉണ്ടായിരുന്നെങ്കിൽ, പ്രധാന ഭാഗം പാതയിൽ ഉറപ്പിക്കാൻ നിങ്ങൾ ആഗ്രഹിച്ചേക്കാം, ഇതിന് മറ്റൊരു ആങ്കർ പോയിന്റ് ആവശ്യമായി വരും.
പ്രായോഗിക ഉപയോഗങ്ങളും നൂതന സാങ്കേതിക വിദ്യകളും
പ്രധാന പ്രോപ്പർട്ടികൾ മനസ്സിലാക്കുന്നത് ഒരു കാര്യമാണ്; സങ്കീർണ്ണവും റെസ്പോൺസീവും ഇന്ററാക്ടീവുമായ ആനിമേഷനുകൾ നിർമ്മിക്കാൻ അവ പ്രയോഗിക്കുന്നത് മറ്റൊന്നാണ്. സിഎസ്എസ് മോഷൻ പാത്തിന്റെ മുഴുവൻ സാധ്യതകളും പ്രയോജനപ്പെടുത്തുന്ന ചില നൂതന സാങ്കേതിക വിദ്യകൾ നമുക്ക് പര്യവേക്ഷണം ചെയ്യാം.
എസ്വിജി പാത്തുകൾ ഉപയോഗിച്ച് സങ്കീർണ്ണമായ ആനിമേഷനുകൾ നിർമ്മിക്കുന്നു
സങ്കീർണ്ണമായ path() സ്ട്രിംഗുകൾ നേരിട്ട് എഴുതുന്നത് ശ്രമകരവും തെറ്റുകൾക്ക് സാധ്യതയുള്ളതുമാണ്. ഏറ്റവും കാര്യക്ഷമമായ വർക്ക്ഫ്ലോ ഒരു വെക്റ്റർ ഗ്രാഫിക്സ് എഡിറ്റർ ഉപയോഗിക്കുക എന്നതാണ്. ഇതിനായുള്ള ഒരു ലളിതമായ പ്രക്രിയ ഇതാ:
- പാത രൂപകൽപ്പന ചെയ്യുക: ഒരു വെക്റ്റർ എഡിറ്റർ തുറക്കുക (സൗജന്യവും ഓപ്പൺ സോഴ്സുമായ Inkscape, അല്ലെങ്കിൽ Figma അല്ലെങ്കിൽ Adobe Illustrator പോലുള്ള വാണിജ്യ ടൂളുകൾ). നിങ്ങളുടെ ഘടകം പിന്തുടരാൻ ആഗ്രഹിക്കുന്ന കൃത്യമായ പാത വരയ്ക്കുക. ഇത് ഒരു ലൂപ്പിംഗ് റോളർകോസ്റ്റർ ട്രാക്ക്, ഒരു ഭൂഖണ്ഡത്തിന്റെ രൂപരേഖ, അല്ലെങ്കിൽ ഒരു വിചിത്രമായ വളഞ്ഞ വര എന്നിവയാകാം.
- എസ്വിജി ആയി എക്സ്പോർട്ട് ചെയ്യുക: നിങ്ങളുടെ ഡ്രോയിംഗ് ഒരു എസ്വിജി ഫയലായി സേവ് ചെയ്യുക അല്ലെങ്കിൽ എക്സ്പോർട്ട് ചെയ്യുക. വൃത്തിയുള്ള കോഡ് ലഭിക്കുന്നതിന് 'പ്ലെയിൻ എസ്വിജി' അല്ലെങ്കിൽ 'ഒപ്റ്റിമൈസ്ഡ് എസ്വിജി' ഓപ്ഷൻ തിരഞ്ഞെടുക്കുക.
- പാത്ത് ഡാറ്റ എക്സ്ട്രാക്റ്റ് ചെയ്യുക: എസ്വിജി ഫയൽ ഒരു ടെക്സ്റ്റ് എഡിറ്ററിലോ നിങ്ങളുടെ കോഡ് എഡിറ്ററിലോ തുറക്കുക. നിങ്ങൾ വരച്ച
<path>ഘടകം കണ്ടെത്തി അതിന്റെd="..."ആട്രിബ്യൂട്ടിൽ നിന്നുള്ള മുഴുവൻ സ്ട്രിംഗും പകർത്തുക. - സിഎസ്എസ്-ൽ ഉപയോഗിക്കുക: ഈ സ്ട്രിംഗ് നിങ്ങളുടെ സിഎസ്എസ്
offset-path: path('...');പ്രോപ്പർട്ടിയിലേക്ക് നേരിട്ട് പേസ്റ്റ് ചെയ്യുക.
ഈ വർക്ക്ഫ്ലോ ചലനത്തിന്റെ രൂപകൽപ്പനയെ നിർവ്വഹണത്തിൽ നിന്ന് വേർതിരിക്കുന്നു, ഇത് ഡിസൈനർമാരെയും ഡെവലപ്പർമാരെയും ഫലപ്രദമായി സഹകരിക്കാൻ അനുവദിക്കുന്നു. ഒരു പൂവിന് ചുറ്റും പാറിപ്പറക്കുന്ന ചിത്രശലഭം പോലുള്ള അവിശ്വസനീയമാംവിധം സങ്കീർണ്ണമായ ആനിമേഷനുകൾ കുറഞ്ഞ കോഡിൽ നിർമ്മിക്കാൻ ഇത് നിങ്ങളെ പ്രാപ്തരാക്കുന്നു.
റെസ്പോൺസീവ് മോഷൻ പാത്തുകൾ
offset-path-ന്റെ ഒരു പ്രധാന വെല്ലുവിളി, പാത്ത് ഡാറ്റ നിർവചിച്ചിരിക്കുന്നത് കേവല കോർഡിനേറ്റുകൾ ഉപയോഗിച്ചാണ് എന്നതാണ്. 1200px വീതിയുള്ള ഡെസ്ക്ടോപ്പ് സ്ക്രീനിൽ മികച്ചതായി കാണുന്ന ഒരു പാത്ത് 375px വീതിയുള്ള മൊബൈൽ സ്ക്രീനിൽ ക്ലിപ്പ് ചെയ്യപ്പെടുകയോ പൂർണ്ണമായും തെറ്റായി കാണപ്പെടുകയോ ചെയ്യും.
ഇത് കൈകാര്യം ചെയ്യാൻ നിരവധി തന്ത്രങ്ങളുണ്ട്:
1. ഇൻലൈൻ എസ്വിജിയും url()-ഉം ഉപയോഗിക്കുന്നു:
ഏറ്റവും ശക്തമായ രീതികളിലൊന്ന് നിങ്ങളുടെ എച്ച്ടിഎംഎൽ-ൽ നേരിട്ട് ഒരു എസ്വിജി ഉൾപ്പെടുത്തുക എന്നതാണ്. ഒരു viewBox ആട്രിബ്യൂട്ടുള്ള ഒരു എസ്വിജി സ്വാഭാവികമായും റെസ്പോൺസീവാണ്. തുടർന്ന് നിങ്ങളുടെ സിഎസ്എസ്-ൽ നിന്ന് ആ എസ്വിജി-ക്കുള്ളിലെ ഒരു പാതയെ റഫർ ചെയ്യാൻ കഴിയും.
<!-- In your HTML -->
<div class="animation-container">
<svg width="100%" height="100%" viewBox="0 0 400 200" preserveAspectRatio="xMidYMid meet">
<path id="responsivePath" d="M 20 20 C 100 20, 100 100, 200 120 S 300 140, 350 80" fill="none" stroke="lightgrey" />
</svg>
<div class="moving-element"></div>
</div>
/* In your CSS */
.animation-container {
position: relative;
width: 80vw;
max-width: 800px;
}
.moving-element {
position: absolute; /* Crucial for positioning within the container */
top: 0; left: 0;
offset-path: url(#responsivePath);
animation: travel 5s infinite;
}
@keyframes travel {
100% { offset-distance: 100%; }
}
ഈ സജ്ജീകരണത്തിൽ, എസ്വിജി അതിന്റെ കണ്ടെയ്നറിന് അനുയോജ്യമായ രീതിയിൽ സ്കെയിൽ ചെയ്യുന്നു, കൂടാതെ .moving-element ആ എസ്വിജിയിൽ നിന്നുള്ള പാത ഉപയോഗിക്കുന്നതിനാൽ, അതിന്റെ ചലനപാതയും അതോടൊപ്പം സ്കെയിൽ ചെയ്യുന്നു.
2. ജാവാസ്ക്രിപ്റ്റ്-ഡ്രൈവൻ പാത്തുകൾ:
വളരെ ഡൈനാമിക് ആയ സാഹചര്യങ്ങൾക്കായി, നിലവിലെ വ്യൂപോർട്ടിന്റെയോ കണ്ടെയ്നറിന്റെയോ വലുപ്പത്തെ അടിസ്ഥാനമാക്കി പാത്ത് സ്ട്രിംഗ് കണക്കാക്കാൻ നിങ്ങൾക്ക് ജാവാസ്ക്രിപ്റ്റ് ഉപയോഗിക്കാം. നിങ്ങൾക്ക് വിൻഡോയുടെ resize ഇവന്റ് ശ്രദ്ധിക്കുകയും സിഎസ്എസ് കസ്റ്റം പ്രോപ്പർട്ടി അല്ലെങ്കിൽ ഘടകത്തിന്റെ സ്റ്റൈൽ നേരിട്ട് അപ്ഡേറ്റ് ചെയ്യുകയും ചെയ്യാം.
const element = document.querySelector('.moving-element');
function updatePath() {
const width = window.innerWidth;
const height = 200;
const pathString = `M 0 ${height / 2} Q ${width / 2} 0, ${width} ${height / 2}`;
element.style.offsetPath = `path('${pathString}')`;
}
window.addEventListener('resize', updatePath);
updatePath(); // Initial call
ഇന്ററാക്ടീവ് നിയന്ത്രണത്തിനായി ജാവാസ്ക്രിപ്റ്റുമായി സംയോജിപ്പിക്കുന്നു
ജാവാസ്ക്രിപ്റ്റുമായി സംയോജിപ്പിക്കുമ്പോൾ സിഎസ്എസ് മോഷൻ പാത്ത് കൂടുതൽ ശക്തമാകും. ഒരു നിശ്ചിത ആനിമേഷനുപകരം, നിങ്ങൾക്ക് offset-distance-നെ സ്ക്രോളിംഗ്, മൗസ് ചലനം, അല്ലെങ്കിൽ ഓഡിയോ ഇൻപുട്ട് പോലുള്ള ഉപയോക്തൃ ഇടപെടലുകളുമായി ബന്ധിപ്പിക്കാൻ കഴിയും.
ഒരു സ്ക്രോൾ-ഡ്രൈവൻ ആനിമേഷൻ സൃഷ്ടിക്കുന്നത് ഇതിന്റെ ഒരു പ്രധാന ഉദാഹരണമാണ്. ഉപയോക്താവ് പേജ് താഴേക്ക് സ്ക്രോൾ ചെയ്യുമ്പോൾ, ഒരു ഘടകം മുൻകൂട്ടി നിശ്ചയിച്ച പാതയിലൂടെ നീങ്ങുന്നു.
const pathElement = document.querySelector('.path-rider');
window.addEventListener('scroll', () => {
const scrollTop = window.pageYOffset || document.documentElement.scrollTop;
const scrollHeight = document.documentElement.scrollHeight - document.documentElement.clientHeight;
const scrollPercentage = (scrollTop / scrollHeight) * 100;
// Update offset-distance based on scroll percentage
pathElement.style.offsetDistance = `${scrollPercentage}%`;
});
ഈ ലളിതമായ സ്ക്രിപ്റ്റ് മുഴുവൻ പേജിന്റെയും സ്ക്രോൾ പുരോഗതിയെ ഘടകത്തിന്റെ പാതയിലെ സ്ഥാനവുമായി ബന്ധിപ്പിക്കുന്നു. സ്റ്റോറി ടെല്ലിംഗ്, വിഷ്വൽ ഡാറ്റാ റെപ്രസന്റേഷൻ, ആകർഷകമായ ലാൻഡിംഗ് പേജുകൾ സൃഷ്ടിക്കൽ എന്നിവയ്ക്ക് ഈ സാങ്കേതികവിദ്യ മികച്ചതാണ്.
ശ്രദ്ധിക്കുക: പുതിയ സിഎസ്എസ് സ്ക്രോൾ-ഡ്രൈവൻ ആനിമേഷൻസ് എപിഐ ഇത്തരം ആനിമേഷനുകൾ പൂർണ്ണമായും സിഎസ്എസ്-ൽ മാത്രം സാധ്യമാക്കാൻ ലക്ഷ്യമിടുന്നു, ഇത് കാര്യമായ പ്രകടന നേട്ടങ്ങൾ വാഗ്ദാനം ചെയ്യുന്നു. ബ്രൗസർ പിന്തുണ വർദ്ധിക്കുന്നതിനനുസരിച്ച്, ഇത് ഇഷ്ടപ്പെട്ട രീതിയായി മാറും.
പ്രകടന പരിഗണനകളും ബ്രൗസർ പിന്തുണയും
സിഎസ്എസ് മോഷൻ പാത്തിന്റെ ഒരു പ്രധാന നേട്ടം പ്രകടനമാണ്. top, left പ്രോപ്പർട്ടികൾ ആനിമേറ്റ് ചെയ്യുന്നതിനേക്കാൾ വളരെ മികച്ച പ്രകടനമാണ് offset-distance ആനിമേറ്റ് ചെയ്യുന്നത് നൽകുന്നത്. transform, opacity എന്നിവ പോലെ, offset-distance-ലെ മാറ്റങ്ങൾ ബ്രൗസറിന്റെ കമ്പോസിറ്റർ ത്രെഡിന് കൈകാര്യം ചെയ്യാൻ കഴിയും, ഇത് പ്രധാന ത്രെഡിലെ കനത്ത ജാവാസ്ക്രിപ്റ്റ് എക്സിക്യൂഷൻ തടസ്സപ്പെടുത്താൻ സാധ്യതയില്ലാത്ത, സുഗമവും ഹാർഡ്വെയർ-ആക്സിലറേറ്റഡ് ആയതുമായ ആനിമേഷനുകളിലേക്ക് നയിക്കുന്നു.
ബ്രൗസർ പിന്തുണയുടെ കാര്യത്തിൽ, Chrome, Firefox, Safari, Edge എന്നിവയുൾപ്പെടെ എല്ലാ ആധുനിക എവർഗ്രീൻ ബ്രൗസറുകളിലും സിഎസ്എസ് മോഷൻ പാത്ത് മൊഡ്യൂൾ നന്നായി പിന്തുണയ്ക്കുന്നു. എന്നിരുന്നാലും, ഏറ്റവും പുതിയ പിന്തുണാ ഡാറ്റയ്ക്കായി CanIUse.com പോലുള്ള ഒരു ഉറവിടം പരിശോധിക്കുന്നത് എല്ലായ്പ്പോഴും നല്ലതാണ്, പ്രത്യേകിച്ചും നിങ്ങൾക്ക് പഴയ ബ്രൗസർ പതിപ്പുകളെ പിന്തുണയ്ക്കണമെങ്കിൽ. ഇതിനെ പിന്തുണയ്ക്കാത്ത ബ്രൗസറുകളിൽ, ആനിമേഷൻ പ്രവർത്തിക്കുകയില്ല, ഘടകം അതിന്റെ സ്റ്റാറ്റിക് സ്ഥാനത്ത് തുടരും, ഇത് പല കേസുകളിലും സ്വീകാര്യമായ ഒരു ഫാൾബാക്ക് ആകാം.
സാധാരണ പിഴവുകളും ട്രബിൾഷൂട്ടിംഗും
ഏതൊരു ശക്തമായ ഫീച്ചറിനെയും പോലെ, സിഎസ്എസ് മോഷൻ പാത്ത് ആദ്യമായി ഉപയോഗിക്കുമ്പോൾ നിങ്ങൾക്ക് ചില സാധാരണ പ്രശ്നങ്ങൾ നേരിടേണ്ടി വന്നേക്കാം. അവ എങ്ങനെ പരിഹരിക്കാമെന്ന് നോക്കാം.
- പ്രശ്നം: എന്റെ ഘടകം ചലിക്കുന്നില്ല!
- പരിഹാരം: നിങ്ങൾ
offset-distanceപ്രോപ്പർട്ടി തന്നെയാണ് ആനിമേറ്റ് ചെയ്യുന്നതെന്ന് ഉറപ്പാക്കുക. ഒരുoffset-pathനിർവചിച്ചതുകൊണ്ട് മാത്രം ചലനമുണ്ടാകില്ല. സമയത്തിനനുസരിച്ച്offset-distanceമാറ്റുന്ന ഒരു@keyframesനിയമം നിങ്ങൾക്ക് ആവശ്യമാണ്. കൂടാതെ,animationപ്രോപ്പർട്ടി ഉപയോഗിച്ച് നിങ്ങളുടെ ഘടകത്തിൽ ആനിമേഷൻ ശരിയായി പ്രയോഗിച്ചിട്ടുണ്ടോയെന്ന് പരിശോധിക്കുക.
- പരിഹാരം: നിങ്ങൾ
- പ്രശ്നം: ആനിമേഷൻ അപ്രതീക്ഷിതമായ ഒരു സ്ഥലത്ത് നിന്ന് ആരംഭിക്കുന്നു.
- പരിഹാരം: ആനിമേഷൻ സമയത്ത് മോഷൻ പാത്ത് പ്രോപ്പർട്ടികൾ
top,left,transformപോലുള്ള സാധാരണ പൊസിഷനിംഗ് പ്രോപ്പർട്ടികളെ മറികടക്കുമെന്ന് ഓർക്കുക. ഘടകം സാധാരണ ഫ്ലോയിൽ നിന്ന് 'ഉയർത്തപ്പെടുകയും' പാതയിൽ സ്ഥാപിക്കപ്പെടുകയും ചെയ്യുന്നു. പാത തന്നെ ഘടകത്തിന്റെ കണ്ടെയ്നിംഗ് ബ്ലോക്കിന് ആപേക്ഷികമായാണ് സ്ഥാപിക്കപ്പെടുന്നത്. നിങ്ങളുടെ പാത്ത് ഡാറ്റയുടെ ആരംഭ പോയിന്റും ('M' കമാൻഡ്) കണ്ടെയ്നറിന്റെ സ്ഥാനവും പരിശോധിക്കുക.
- പരിഹാരം: ആനിമേഷൻ സമയത്ത് മോഷൻ പാത്ത് പ്രോപ്പർട്ടികൾ
- പ്രശ്നം: എന്റെ ഘടകത്തിന്റെ റൊട്ടേഷൻ തെറ്റാണ് അല്ലെങ്കിൽ വിറയലുളളതാണ്.
- പരിഹാരം: ഇത് പലപ്പോഴും
offset-rotateപ്രോപ്പർട്ടിയുമായി ബന്ധപ്പെട്ടതാണ്. നിങ്ങൾautoഉപയോഗിക്കുകയാണെങ്കിൽ, നിങ്ങളുടെ പാത സുഗമമാണെന്ന് ഉറപ്പാക്കുക. മൂർച്ചയുള്ള കോണുകൾ (ഒരു `L` കമാൻഡിലെ പോലെ) ദിശയിൽ പെട്ടെന്നുള്ള മാറ്റത്തിനും അതുവഴി റൊട്ടേഷനിൽ പെട്ടെന്നുള്ള സ്നാപ്പിനും കാരണമാകും. സുഗമമായ തിരിവുകൾക്കായി ബെസിയർ കർവുകൾ (Cഅല്ലെങ്കിൽQ) ഉപയോഗിക്കുക. നിങ്ങളുടെ ഘടക അസറ്റ് 'മുന്നോട്ട്' (വലത്തേക്ക്) തിരിഞ്ഞിട്ടില്ലെങ്കിൽ, അത് ശരിയാക്കാൻauto <angle>സിന്റാക്സ് (ഉദാ.,offset-rotate: auto 90deg;) ഉപയോഗിക്കുക.
- പരിഹാരം: ഇത് പലപ്പോഴും
- പ്രശ്നം: എന്റെ റെസ്പോൺസീവ് ലേഔട്ടിനൊപ്പം പാത സ്കെയിൽ ചെയ്യുന്നില്ല.
- പരിഹാരം: നൂതന സാങ്കേതിക വിദ്യകളുടെ വിഭാഗത്തിൽ ചർച്ച ചെയ്തതുപോലെ,
path()ഫംഗ്ഷൻ ഒരു കേവല കോർഡിനേറ്റ് സിസ്റ്റം ഉപയോഗിക്കുന്നതുകൊണ്ടാണ് ഇത് സംഭവിക്കുന്നത്. ശക്തവും റെസ്പോൺസീവുമായ ഒരു പരിഹാരത്തിനായി ഇൻലൈൻ എസ്വിജിയുംurl(#pathId)സാങ്കേതികവിദ്യയും ഉപയോഗിക്കുക.
- പരിഹാരം: നൂതന സാങ്കേതിക വിദ്യകളുടെ വിഭാഗത്തിൽ ചർച്ച ചെയ്തതുപോലെ,
വെബിലെ ചലനത്തിന്റെ ഭാവി
വെബ് ആനിമേഷന്റെ കാര്യത്തിൽ സിഎസ്എസ് മോഷൻ പാത്ത് ഒരു സുപ്രധാന മുന്നേറ്റമാണ്, ഇത് മുൻപ് നേടാൻ വളരെ ബുദ്ധിമുട്ടായിരുന്ന സമ്പന്നവും ആഖ്യാനാധിഷ്ഠിതവുമായ അനുഭവങ്ങൾ നിർമ്മിക്കാൻ സ്രഷ്ടാക്കളെ ശാക്തീകരിക്കുന്നു. ഇത് ഡിക്ലറേറ്റീവ് സ്റ്റൈലിംഗും സങ്കീർണ്ണമായ ആനിമേഷനും തമ്മിലുള്ള വിടവ് നികത്തുന്നു, പ്രകടനം നഷ്ടപ്പെടുത്താതെ ഡെവലപ്പർമാർക്ക് ചലനത്തിൽ സൂക്ഷ്മമായ നിയന്ത്രണം നൽകുന്നു.
മുന്നോട്ട് നോക്കുമ്പോൾ, മോഷൻ പാത്തും ഉയർന്നുവരുന്ന സിഎസ്എസ് എപിഐകളും തമ്മിലുള്ള സഹവർത്തിത്വം അവിശ്വസനീയമാംവിധം ആവേശകരമാണ്. മുകളിൽ സൂചിപ്പിച്ച സ്ക്രോൾ-ഡ്രൈവൻ ആനിമേഷൻസ് എപിഐ ഉയർന്ന പ്രകടനമുള്ള, സ്ക്രോളുമായി ബന്ധിപ്പിച്ച പാത്ത് ആനിമേഷനുകൾ നിർമ്മിക്കുന്നത് നിസ്സാരമാക്കും. സിഎസ്എസ് ഹൗഡിനിയുമായുള്ള സംയോജനം ഒരുനാൾ സിഎസ്എസ് വഴി തന്നെ പാതകൾ ഡൈനാമിക്കായി നിർമ്മിക്കാൻ അനുവദിച്ചേക്കാം. ഈ സാങ്കേതികവിദ്യകൾ വെബിനെ കൂടുതൽ പ്രകടവും ചലനാത്മകവുമായ ഒരു ക്യാൻവാസാക്കി മാറ്റുകയാണ്.
ഉപസംഹാരം
സിഎസ്എസ് മോഷൻ പാത്ത് മൊഡ്യൂൾ ഒരു പുതിയ പ്രോപ്പർട്ടികളുടെ കൂട്ടം എന്നതിലുപരി, വെബിലെ ആനിമേഷനെക്കുറിച്ച് ചിന്തിക്കുന്നതിനുള്ള ഒരു പുതിയ രീതിയാണ്. ചലനത്തിന്റെ പാതയെ ആനിമേഷന്റെ സമയത്തിൽ നിന്ന് വേർതിരിക്കുന്നതിലൂടെ, ഇത് സമാനതകളില്ലാത്ത വഴക്കവും നിയന്ത്രണവും നൽകുന്നു.
അവശ്യ ഘടകങ്ങളെക്കുറിച്ച് നമ്മൾ ചർച്ചചെയ്തു:
offset-path: നിങ്ങളുടെ ആനിമേഷനായുള്ള റോഡ് മാപ്പ്.offset-distance: റോഡിലൂടെ സഞ്ചരിക്കുന്ന വാഹനം.offset-rotate: വാഹനത്തെ തിരിക്കുന്ന സ്റ്റിയറിംഗ് വീൽ.offset-anchor: വാഹനത്തിൽ റോഡിൽ സ്പർശിക്കുന്ന പോയിന്റ്.
ഈ പ്രോപ്പർട്ടികൾ മാസ്റ്റർ ചെയ്യുന്നതിലൂടെയും റെസ്പോൺസീവ്നസ്സിനും ഇന്ററാക്റ്റിവിറ്റിക്കുമുള്ള നൂതന സാങ്കേതിക വിദ്യകൾ ഉപയോഗിക്കുന്നതിലൂടെയും, നിങ്ങൾക്ക് ലളിതമായ ഫേഡുകളും സ്ലൈഡുകളും മറികടക്കാൻ കഴിയും. കാഴ്ചയിൽ ആകർഷകമായത് മാത്രമല്ല, അർത്ഥവത്തായതും, ഉപയോക്താവിന്റെ കണ്ണിനെ നയിക്കുന്നതും, ഒരു കഥ പറയുന്നതും, കൂടുതൽ ആകർഷകവും ആനന്ദകരവുമായ ഒരു ഉപയോക്തൃ അനുഭവം സൃഷ്ടിക്കുന്നതുമായ ആനിമേഷനുകൾ നിങ്ങൾക്ക് നിർമ്മിക്കാൻ കഴിയും. വെബ് നിരന്തരമായ ചലനത്തിന്റെ ഒരു പ്ലാറ്റ്ഫോമാണ്, സിഎസ്എസ് മോഷൻ പാത്ത് ഉപയോഗിച്ച്, ആ ചലനത്തെ കൃത്യതയോടെയും സർഗ്ഗാത്മകതയോടെയും നയിക്കാനുള്ള ശക്തി ഇപ്പോൾ നിങ്ങൾക്കുണ്ട്.