جاوا اسکرپٹ کا استعمال کرتے ہوئے کی فریم ویلیوز کا حساب اور انیمیٹ کیسے کریں۔
متحرک ویب ایپلیکیشنز بناتے وقت، CSS اینیمیشنز کے ساتھ JavaScript کا امتزاج ہموار، بصری طور پر دلکش ٹرانزیشنز بنا سکتا ہے۔ ایک عام چیلنج ریئل ٹائم ڈیٹا ویلیوز پر مبنی عناصر کو متحرک کرنا ہے۔ ایک عمدہ مثال کلیدی فریم اینیمیشنز بنانا ہے جو SVG اور اسٹروک ڈیش آفسیٹ کا استعمال کرتے ہوئے پروگریس بار کے موجودہ فیصد کی عکاسی کرتی ہے۔
یہ تکنیک خاص طور پر اس وقت کارآمد ہو سکتی ہے جب آپ متحرک قدریں دکھا رہے ہوں جیسے سبسکرائبر کی تعداد، جیسا کہ اس مثال میں جہاں سبسکرپشنز کی تعداد حقیقی وقت میں اپ ڈیٹ ہوتی ہے۔ اینیمیشن کو بغیر کسی رکاوٹ کے کام کرنے کے لیے، ہم اس نمبر کو فیصد میں تبدیل کر کے اسے براہ راست CSS اینیمیشن پر لاگو کر سکتے ہیں۔
تاہم، CSS اینیمیشنز کے ساتھ کام کرتے وقت JavaScript الجھن کا باعث ہو سکتا ہے، خاص طور پر جب کلیدی فریموں کو مؤثر طریقے سے جوڑنے کے لیے فیصد جیسی اقدار کا حساب لگانا۔ اس صورت میں، یہ سمجھنا کہ جاوا اسکرپٹ کے ساتھ متحرک ڈیٹا کو کیسے نکالا جائے اور اس میں ہیرا پھیری کی جائے اس بات کو یقینی بنانے کے لیے کہ آپ کی اینیمیشنز صحیح قدر کی عکاسی کرتی ہیں۔
یہ مضمون جاوا اسکرپٹ کو عددی ڈیٹا کو چھیننے، فیصد کا حساب لگانے، اور سٹروک ڈیش آفسیٹ پراپرٹی کا استعمال کرتے ہوئے کلیدی فریموں پر لاگو کرنے میں آپ کی رہنمائی کرے گا۔ آخر تک، آپ کو اس بات کی واضح سمجھ ہو جائے گی کہ کس طرح جاوا اسکرپٹ اور سی ایس ایس ریسپانسیو اینیمیشن بنانے کے لیے مل کر کام کر سکتے ہیں۔
حکم | استعمال کی مثال |
---|---|
fetch() | fetch() طریقہ کسی وسائل سے ڈیٹا کی درخواست کرنے کے لیے استعمال کیا جاتا ہے (جیسے، ٹیکسٹ فائل، API)۔ اس اسکرپٹ میں، اسے پروگریس بار میں پروسیسنگ کے لیے ٹیکسٹ فائل سے سبسکرائبر کا ڈیٹا حاصل کرنے کے لیے استعمال کیا جاتا ہے۔ |
parseInt() | parseInt() فنکشن سٹرنگ کو انٹیجر میں تبدیل کرتا ہے۔ یہاں، یہ موجودہ سبسکرائبر کی گنتی حاصل کرنے کے لیے سلیش (جیسے 42/50) سے پہلے قدر کو چھین لیتا ہے۔ |
split() | split() طریقہ حد بندی کی بنیاد پر سٹرنگ کو ایک صف میں تقسیم کرتا ہے۔ اس صورت میں، یہ '/' کا استعمال کرتا ہے تاکہ موجودہ سبسکرائبر کی تعداد کو ہدف سے الگ کر سکے (42 سے 42/50)۔ |
strokeDashoffset | strokeDashoffset ایک SVG وصف ہے جو کنٹرول کرتا ہے کہ اسٹروک کیسے کھینچا جاتا ہے۔ سبسکرپشن فیصد کی بنیاد پر SVG حلقے کے بھرنے کو متحرک طور پر تبدیل کرنے کے لیے یہاں جوڑ توڑ کیا جاتا ہے۔ |
setTimeout() | یہ طریقہ ایک مخصوص تاخیر کے بعد فنکشن کو کال کرتا ہے۔ اسے یہاں لیبلز کو گھمانے کے لیے وقفہ مقرر کرنے کے لیے استعمال کیا جاتا ہے، جس سے چند سیکنڈ کے بعد نئے لیبل ظاہر ہو سکتے ہیں۔ |
cloneNode() | cloneNode(true) کا استعمال نوڈ کی کاپی بنانے کے لیے کیا جاتا ہے، بشمول اس کے بچے۔ یہ لیبل ٹیمپلیٹ کو ڈپلیکیٹ کرنے اور اسے DOM میں متحرک طور پر شامل کرنے کے لیے ضروری ہے۔ |
visibility | یہ CSS پراپرٹی لیبلز کو چھپانے یا دکھانے کے لیے JavaScript کے ذریعے کنٹرول کی جاتی ہے۔ یہ یقینی بناتا ہے کہ گردش کے دوران ایک وقت میں صرف ایک لیبل نظر آتا ہے۔ |
strokeDasharray | strokeDasharray SVG اسٹروک میں ڈیشز اور گیپس کے پیٹرن کی وضاحت کرتا ہے۔ اسے دائرے کے فریم سے ملنے کے لیے ایک مخصوص قدر (450) پر سیٹ کیا گیا ہے، جو اسٹروک ڈیش آفسیٹ کے ساتھ متحرک ہے۔ |
JavaScript کے ساتھ SVG حلقوں کو متحرک کرنا: ایک قدم بہ قدم گائیڈ
اس مثال میں، ہم نے JavaScript اور CSS کے امتزاج کا استعمال کرتے ہوئے SVG سرکل کے لیے ایک متحرک اینیمیشن بنایا ہے۔ اصل مقصد اصل وقت میں سبسکرپشن کی تعداد کو بصری طور پر نمائندگی کرنے کے لیے دائرے کی پیشرفت کو متحرک کرنا ہے۔ دائرہ استعمال کرتا ہے۔ اسٹروک ڈیش آفسیٹ CSS کی خاصیت، جو کنٹرول کرتی ہے کہ دائرے کے اسٹروک کا کتنا حصہ نظر آتا ہے۔ JavaScript کا استعمال ترقی کے فیصد کو حاصل کرنے اور اس کا حساب لگانے کے لیے کیا جاتا ہے اور پھر اس قدر کو اسٹروک پر لاگو کیا جاتا ہے، جس سے ریئل ٹائم ڈیٹا کی بنیاد پر ہموار حرکت پذیری کی اجازت ملتی ہے۔
ایک اہم جزو ہے لانا فنکشن، جو فائل یا سرور سے ڈیٹا بازیافت کرتا ہے، اس صورت میں، سبسکرپشن کی گنتی۔ اسکرپٹ سٹرنگ ہیرا پھیری کے طریقوں جیسے استعمال کرکے ڈیٹا کے عددی حصے کو نکالتا ہے۔ تقسیم ()، اور نتیجہ کو قابل استعمال نمبر میں تبدیل کرتا ہے۔ parseInt(). موجودہ سبسکرپشن کی گنتی کو ہدف سے تقسیم کر کے، ہم ترقی کو اعشاریہ (فیصد) کے حساب سے شمار کرتے ہیں۔ اس فیصد کو پھر لاگو کیا جاتا ہے۔ اسٹروک ڈیش آفسیٹ بصری اثر پیدا کرنے کے لیے۔
دوسرا اسکرپٹ لیبل کی گردش کو ہینڈل کرتا ہے، جو ڈسپلے میں متحرک مواد کی ایک پرت کو شامل کرتا ہے۔ کا استعمال کرتے ہوئے لیبلز کو DOM میں شامل کیا جاتا ہے۔ کلون نوڈ() طریقہ، جو موجودہ لیبل ٹیمپلیٹ کو نقل کرتا ہے۔ ہر لیبل کو ایک مقررہ وقفہ پر گھمایا جاتا ہے، جو کہ کے ذریعے کنٹرول کیا جاتا ہے۔ سیٹ ٹائم آؤٹ() فنکشن یہ طریقہ ایک مخصوص تاخیر کے بعد گردش کو متحرک کرتا ہے، جس سے صارف کے تعامل کی ضرورت کے بغیر لیبلز کے درمیان ہموار منتقلی پیدا ہوتی ہے۔
کا مجموعہ اسٹروک ڈیش آفسیٹ دائرے اور لیبل کی گردش کے لیے اسکرپٹ ایک پرکشش یوزر انٹرفیس بناتا ہے۔ دائرے کی پیشرفت اور دکھائے جانے والے لیبل دونوں کو متحرک طور پر تبدیل کرکے، ہم صارفین کو حقیقی وقت میں پیشرفت کا بصری اشارہ دیتے ہیں۔ کوڈ کی ماڈیولریٹی اس بات کو بھی یقینی بناتی ہے کہ ان خصوصیات کو آسانی سے ڈیٹا سے چلنے والی دیگر ایپلی کیشنز کے مطابق ڈھالا جا سکتا ہے، جس سے یہ متحرک UI عناصر کو لاگو کرنے کے خواہاں ڈویلپرز کے لیے ایک لچکدار حل ہے۔
JavaScript اور CSS Keyframes کے ساتھ SVG پروگریس بار کو متحرک کرنا
یہ حل فرنٹ اینڈ ڈائنامک پروگریس بار اینیمیشن کے لیے ونیلا جاوا اسکرپٹ اور ایس وی جی کا استعمال کرتا ہے۔ اسکرپٹ اقدار کو نکالتا ہے، فیصد کا حساب لگاتا ہے، اور ہموار اینیمیشن کے لیے انہیں SVG عنصر کے اسٹروک ڈیش آفسیٹ پر لاگو کرتا ہے۔
// HTML and SVG structure
<div id="labels"></div>
<svg width="200" height="200">
<circle id="circle" cx="100" cy="100" r="90" />
</svg>
// JavaScript to animate stroke-dashoffset
let labels = document.getElementById("labels");
const SubGoal = 50; // Total subscription goal
function updateProgress(data) {
const SubCount = parseInt(data.split('/')[0]); // Extract number
const SubPercent = SubCount / SubGoal; // Calculate percentage
const SubPercentStroke = 450 - 450 * SubPercent; // Set stroke offset
document.getElementById('circle').style.strokeDashoffset = SubPercentStroke;
}
// Example usage
fetch('subscribers.txt').then(response => response.text())
.then(data => updateProgress(data));
جاوا اسکرپٹ کے ساتھ ڈائنامک لیبل کی گردش
یہ حل جاوا اسکرپٹ کا استعمال کرتے ہوئے مقررہ وقفوں پر مختلف لیبلز کو متحرک طور پر گھماتا ہے۔ یہ صارف کی ترتیبات کی بنیاد پر جامد اور گھومنے والے ڈسپلے دونوں کو سپورٹ کرتا ہے۔
// Label rotation logic
var displaySettings = "RotatingDisplays";
var displayRotationSeconds = 2;
var displayRotationIndex = 0;
function rotateLabelDisplay() {
if (displayRotationIndex >= labels.children.length) {
displayRotationIndex = 0;
}
for (const label of labels.children) {
label.style.visibility = 'hidden';
}
let label = labels.children[displayRotationIndex];
label.style.visibility = 'visible';
displayRotationIndex++;
setTimeout(rotateLabelDisplay, displayRotationSeconds * 1000);
}
// Trigger rotation if display setting is enabled
if (displaySettings === "RotatingDisplays") {
rotateLabelDisplay();
} else {
labels.children[0].style.visibility = "visible";
}
جاوا اسکرپٹ اور سی ایس ایس متغیرات کے ساتھ متحرک تصاویر کو بڑھانا
استعمال کرنے کا ایک اہم پہلو جاوا اسکرپٹ متحرک تصاویر کو کنٹرول کرنا اس کے ساتھ بات چیت کرنے کی صلاحیت ہے۔ سی ایس ایس متغیرات. یہ متغیرات ڈویلپرز کو دوبارہ قابل استعمال اور آسانی سے برقرار رکھنے کے قابل کوڈ بنانے کی اجازت دیتے ہیں۔ مثال کے طور پر، ہارڈ کوڈنگ اینیمیشن ویلیوز جیسے سٹروک ڈیش آفسیٹ کو براہ راست JavaScript میں ڈالنے کے بجائے، آپ انہیں CSS متغیرات کے طور پر بیان کر سکتے ہیں اور JavaScript کا استعمال کرتے ہوئے ان میں ہیرا پھیری کر سکتے ہیں۔ یہ آپ کی حرکت پذیری کی خصوصیات کو منظم کرنے کا ایک صاف طریقہ فراہم کرتا ہے اور آپ کے کوڈ کو مزید ماڈیولر اور توسیع پذیر بناتا ہے۔
جاوا اسکرپٹ کو CSS کے ساتھ ملاتے وقت ایک اور طاقتور خصوصیت ایونٹ سننے والوں کا استعمال ہے۔ ایونٹ سے چلنے والی اینیمیشنز صارف کے تعاملات کی بنیاد پر متحرک ہو سکتی ہیں، جیسے بٹن پر کلک کرنا یا صفحہ کو نیچے سکرول کرنا۔ ہماری مثال میں، آپ انٹرایکٹیویٹی کو شامل کرکے اینیمیشن کو بڑھا سکتے ہیں۔ مثال کے طور پر، جب بھی صارف سبسکرائب کرتا ہے یا کوئی اور کارروائی کرتا ہے تو اسٹروک ڈیش آفسیٹ کا دوبارہ حساب لگایا جا سکتا ہے اور اسے متحرک طور پر لاگو کیا جا سکتا ہے۔ یہ ایک انتہائی پرکشش اور انٹرایکٹو تجربہ تخلیق کرتا ہے جو ریئل ٹائم ڈیٹا کا جواب دیتا ہے۔
مزید برآں، امتزاج اینیمیشن فریم کی درخواست کریں۔ کی فریمز کے ساتھ ہموار اور موثر اینیمیشن بنانے کا ایک اور طریقہ ہے۔ یہ طریقہ اس بات کو یقینی بناتا ہے کہ متحرک تصاویر براؤزر کے بہترین ری پینٹ سائیکل کے دوران انجام دی جائیں، روایتی سیٹ انٹروال یا سیٹ ٹائم آؤٹ کے مقابلے میں بہتر کارکردگی فراہم کرتی ہے۔ یہ تکنیک خاص طور پر مفید ہے جب متواتر متحرک تصاویر یا جاوا اسکرپٹ کے بھاری عمل سے نمٹنے کے لیے جو بصورت دیگر صارف کے انٹرفیس کو سست کر سکتے ہیں۔
JavaScript اور CSS اینیمیشنز کے بارے میں اکثر پوچھے گئے سوالات
- کیسے کرتا ہے strokeDashoffset SVG متحرک تصاویر کو متاثر کرتے ہیں؟
- دی strokeDashoffset کنٹرول کرتا ہے کہ SVG پاتھ اسٹروک کا کتنا حصہ نظر آتا ہے۔ اس کی قدر کو تبدیل کرنے سے ہموار ترقی جیسی متحرک تصاویر کی اجازت ملتی ہے۔
- کا کردار کیا ہے۔ fetch() ریئل ٹائم متحرک تصاویر میں؟
- fetch() API یا فائل سے ڈیٹا بازیافت کرنے کے لیے استعمال کیا جاتا ہے۔ اینیمیشنز میں، یہ متحرک اقدار کو لوڈ کرنے میں مدد کرتا ہے جیسے سبسکرائبر کاؤنٹ، جسے پھر اسکرین پر اینیمیٹ کیا جا سکتا ہے۔
- کر سکتے ہیں۔ setTimeout() حرکت پذیری کے وقفوں کو کنٹرول کرنے کے لیے استعمال کیا جائے؟
- ہاں، setTimeout() اینیمیشن میں تاخیر کو متعارف کرانے کے لیے استعمال کیا جا سکتا ہے، جیسے وقفوں سے لیبل کو گھومنا۔
- کا مقصد کیا ہے parseInt() جاوا اسکرپٹ اینیمیشن اسکرپٹس میں؟
- parseInt() ایک سٹرنگ (جیسے "42/50") کو ایک عدد میں تبدیل کرتا ہے، جو متحرک اینیمیشنز میں فیصد کا حساب لگانے کے لیے ضروری ہے۔
- میں کیوں استعمال کروں؟ requestAnimationFrame() کے بجائے setInterval()?
- requestAnimationFrame() براؤزر کے دوبارہ پینٹ سائیکل کے ساتھ مطابقت پذیری کے ذریعے ہموار ٹرانزیشن کو یقینی بناتے ہوئے، متحرک تصاویر کے لیے موزوں ہے۔
ڈائنامک کی فریم اینیمیشنز پر حتمی خیالات
یکجا کرنا جاوا اسکرپٹ CSS کے ساتھ طاقتور اور متحرک اینیمیشنز کی اجازت دیتا ہے جو ریئل ٹائم ڈیٹا کا جواب دے سکتے ہیں۔ فیصد جیسی قدروں کا حساب لگانے اور انہیں کلیدی فریم اینیمیشنز پر لاگو کرنے کے طریقے کو سمجھ کر، آپ پرکشش اور جوابی صارف انٹرفیس بنا سکتے ہیں جو لائیو پیش رفت یا ڈیٹا اپ ڈیٹس کی عکاسی کرتے ہیں۔
اس گائیڈ میں شامل تکنیکوں کے ساتھ، آپ آسانی سے خصوصیات کو جوڑ سکتے ہیں جیسے اسٹروک ڈیش آفسیٹ SVG اینیمیشنز کے لیے اور عناصر کو متحرک طور پر گھمائیں۔ یہ مجموعہ ان ڈویلپرز کے لیے ایک قابل توسیع حل فراہم کرتا ہے جو اپنے پروجیکٹس میں ریئل ٹائم ڈیٹا ان پٹ کے ساتھ متحرک اینیمیشنز کو ضم کرنا چاہتے ہیں۔
جاوا اسکرپٹ کے ساتھ متحرک متحرک تصاویر کے ذرائع اور حوالہ جات
- استعمال کرنے کے بارے میں تفصیلی معلومات اسٹروک ڈیش آفسیٹ SVG متحرک تصاویر کے لیے پر پایا جا سکتا ہے۔ MDN ویب دستاویزات: اسٹروک ڈیش آفسیٹ .
- جاوا اسکرپٹ اور سی ایس ایس کا استعمال کرتے ہوئے متحرک کلی فریم اینیمیشنز میں مزید بصیرت کے لیے، دیکھیں Smashing Magazine: CSS Keyframe Animations .
- DOM کے ساتھ جوڑ توڑ پر اضافی رہنمائی کلون نوڈ() جاوا اسکرپٹ میں دستیاب ہے۔ MDN ویب دستاویزات: کلون نوڈ .
- استعمال کرنے کے بارے میں مزید جانیں۔ حاصل کریں() سے حقیقی وقت میں ڈیٹا بازیافت کرنے کے لیے MDN ویب دستاویزات: بازیافت کا استعمال .