جاوا اسکریپت یکی از کاربردیترین زبانهای برنامه نویسی است که در امور مختلفی از آن میتوان استفاده کرد ولی با این حال کاربرد جاوا اسکریپت در اصل متمرکز بر توسعه وب و تعاملی کردن صفحات وب است. یکی از کارهای جالبی که با این زبان میتوان انجام داد ساخت ساعتهای دیجیتال و آنالوگ در صفحات وب بوده که به تجربه کاربری بهتر کمک میکنند. در این مطلب از «مجله فرادرس» این بار قصد داریم به عنوان نوعی تمرین و پروژه جاوا اسکریپت به ساخت ساعتهای آنالوگ و دیجیتال با این زبان بپردازیم. ساخت ساعت با جاوا اسکریپت میتواند به بهبود مهارتهای کاربران کمک کند و تمرین بسیار جذاب و قابلتوجهی باشد.
در این مطلب ابتدا پیشنیازهای فرایند کدنویسی ساعت را بررسی میکنیم. سپس نحوه ساخت ساعت آنالوگ و دیجیتال را در جاوا اسکریپت به همراه مثال بررسی میکنیم. پس اگر میخواهید ساخت انواع ساعت با جاوا اسکریپت را یاد بگیرید، تا انتهای این مطلب با مجله فرادرس همراه باشید.
پیش نیاز ساخت ساعت با جاوا اسکریپت؟
به عنوان نوعی پیشنیاز برای درک بهتر فرایند کدنویسی ساخت ساعت با جاوا اسکریپت درک مقدماتی از «Html» ،«Css» و خود جاوا اسکریپت اهمیت بسیار زیادی دارد. در مطلب پیشرو ابتدا ۲ نوع ساعت آنالوگ با جاوا اسکریپت ساخته میشود و بعد از آن سعی خواهیم کرد یک ساعت دیجیتالی را نیز پیادهسازی کنیم. برای ساخت ساعت با جاوا اسکریپت در ابتدا به سه فایل با نام و فرمتهای زیر نیاز است:
- «Index.html»
- «Style.css»
- «index.js»
در ادامه با سه فناوری مهم در برنامه نویسی وب یعنی HTML، CSS و جاوا اسکریپت پیادهسازی چند ساعت آنالوگ و دیجیتالی آورده شده است.
ساخت ساعت آنالوگ با جاوا اسکریپت
برای ساخت ساعت آنالوگ با جاوا اسکریپت باید یک سری قدمها را تا انتها پیش رفت و با نوشتن کدهای هر مرحله در فایلهای مربوط به خودشان، درنهایت پیادهسازی این نوع ساعت امکانپذیر خواهد بود. برای راحتی کار فرایند ساخت ساعت با جاوا اسکریپت بهصورت قدمبهقدم تشریح خواهد شد.
مرحله ١. ایجاد طرح اولیه ساخت ساعت با جاوا اسکریپت
برای شروع ساخت ساعت آنالوگ با جاوا اسکریپت ابتدا باید ساختار پایه ساعت ایجاد شود که برای این کار از تگ
در فایل Html به صورت زیر استفاده خواهد شد:
<div class="clock">
</div>
حال نوبت به اضافه کردن استایل به ساعت با استفاده از اعمال قواعد CSS است که باید این عمل در ابتدا به صورت زیر انجام بگیرد:
.clock {
background: #ececec;
width: 300px;
height: 300px;
margin: 8% auto 0;
border-radius: 50%;
border: 14px solid #333;
position: relative;
box-shadow: 0 2vw 4vw -1vw rgba(0,0,0,0.8);
}
در کدهای CSS فوق ظاهر ساعت جاوا اسکریپتی به صورت زیر پیکربندی شده است:
- : رنگ پسزمینه خاکستری روشن انتخاب شده است.
- ابعاد: عرض و ارتفاع ساعت هر دو روی ٣۰۰ پیکسل تنظیم شده است که ساعت را مربعی شکل میکند.
- : از حاشیه ٨ درصد در بالا و خودکار برای وسط استفاده شده است.
- : برای ایجاد شکل دایرهای، شعاع حاشیه روی ۵۰ درصد قرار داده شده است.
- : حاشیهای به رنگ زغالی تیره به اندازه ١۴ پیکسلی برای تعیین طرح کلی ساعت اضافه شده است.
- : موقعیت به صورت نسبی تنظیم شده است که امکان قرارگیری عناصر در ساعت را فراهم میکند.
- : نوعی جعبه به طرح کلی ساعت برای زیبایی بهتر ارائه شده است.
خروجی فعلی این ساعت جاوا اسکریپتی به صورت زیر است:
این ساختار و استایل بهعنوان پایهای برای ساعت جاوا اسکریپت مد نظر عمل میکند که میتوان آن را به صورت دلخواه نیز سفارشیتر کرد.
مرحله ٢. اضافه کردن تاریخ، عقربه ها و خطوط شماره گذاری ساعت
برای بهبود عملکرد و ظاهر ساعت آنالوگ در این مرحله عناصر و کلاس جدید ارائه خواهند شد و کد html آن به صورت زیر بهروز میشود:
<div>
<div class="info date"></div>
<div class="info day"></div>
</div>
<div class="dot"></div>
<div>
<div class="hour-hand"></div>
<div class="minute-hand"></div>
<div class="second-hand"></div>
</div>
<div>
<span class="h3">3</span>
<span class="h6">6</span>
<span class="h9">9</span>
<span class="h12">12</span>
</div>
<div class="diallines"></div>
تشریح کد بالا به صورت زیر است:
- نمایش تاریخ و روز: دو عنصر
با کلاسهای
و
برای نمایش تاریخ و روز هفته در صفحه ساعت اضافه میشوند. - نقطه مرکزی: عنصر
با کلاس
برای نمایش مرکز ساعت درج شده است. - عقربههای ساعت: سه عنصر
با کلاسهای
،
و
به ترتیب برای نمایش عقربههای ساعت، دقیقه و ثانیه ساعت معرفی شدهاند. - علائم زمان مهم: چهار عنصر
با کلاسهای «
» برای علامتگذاری ساعتهای کلیدی (٣، ۶، ۹ و ١٢) در صفحه ساعت گنجانده شدهاند. میتوان این علائم را بیشتر سفارشی کرد. - شمارهگیری خطوط: عنصر
با کلاس
برای ایجاد خطوط شمارهگیری یا نشانگرها در سراسر صفحه ساعت اضافه میشود که موقعیت ساعت یا دقیقه را نشان میدهد.
این عناصر اجزای ضروری برای ساخت ساعت آنالوگ کارآمد را فراهم میکنند. برای دستیابی به ظاهر و عملکرد دلخواه برای ساعت خود، میتوان آنها را در صورت نیاز سفارشی کرد.
مرحله ٣. اضافه کردن استایل به عناصر
در این مرحله از ساخت ساعت با جاوا اسکریپت باید استایل CSS روی عقربهها و عناصر ساعت اعمال شوند تا از نظر بصری جذاب و کاربردی باشند. در این مرحله کد CSS به صورت زیر بهروز میشود:
.dot {
width: 14px;
height: 14px;
border-radius: 50%;
background: silvergrey; /* Changed background color to silvergrey */
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
position: absolute;
z-index: 10; /* Added z-index to make the dot stand out */
box-shadow: 0 2px 4px -1px black; /* Added a subtle box shadow */
}
تشریح کد بالا به صورت زیر است:
- عرض و ارتفاع نقطه روی ١۴ پیکسل قرار میگیرد و این کار مرکز ساعت را به عنصر دایرهای کوچک تبدیل میکند.
- شعاع حاشیه روی ۵۰ درصد تنظیم شده است تا شکل دایرهای به آن بدهد.
- رنگ پسزمینه را به رنگ خاکستری نقرهای تغییر داده میشود تا ظاهری زیبا داشته باشیم.
- موقعیت به عنوان
برای قرار دادن دقیق نقطه در مرکز ساعت تعریف شده است. - یک
اضافه میشود تا نقطه مرکزی ساعت به صورت بصری برجسته شود.
خروجی این مرحله به صورت زیر است:
اضافه کردن استایل به عقربه ها
در این مرحله اکنون شماره و عقربهها به ساعت اضافه خواهند شد. با استفاده از تگ
، استایل مد نظر به شماره ساعت اضافه میشود. در این حالت نمایشگر روی
و موقعیت روی
تنظیم خواهد شد. همچنین اندازه فونت شماره ساعت روی ٢٢ پیکسل تنظیم شده است. همچنین
به اعداد اضافه شده است. از طرفی دیگر در این مرحله شمارههای ساعت با استفاده از کلاسهای تعریف شده
در صفحه ساعت قرار میگیرند.
قطعه کد CSS این بار به صورت زیر بهروز میشود.
.hour-hand {
position: absolute;
z-index: 5;
width: 4px;
height: 65px;
background: #333;
top: 79px;
transform-origin: 50% 72px;
left: 50%;
margin-left: -2px;
border-top-left-radius: 50%;
border-top-right-radius: 50%;
}
.minute-hand {
position: absolute;
z-index: 6;
width: 4px;
height: 100px;
background: #666;
top: 46px;
left: 50%;
margin-left: -2px;
border-top-left-radius: 50%;
border-top-right-radius: 50%;
transform-origin: 50% 105px;
}
.second-hand {
position: absolute;
z-index: 7;
width: 2px;
height: 120px;
background: gold;
top: 26px;
lefT: 50%;
margin-left: -1px;
border-top-left-radius: 50%;
border-top-right-radius: 50%;
transform-origin: 50% 125px;
}
span {
display: inline-block;
position: absolute;
color: #333;
font-size: 22px;
font-family: 'Poiret One';
font-weight: 700;
z-index: 4;
}
.h12 {
top: 30px;
left: 50%;
margin-left: -9px;
}
.h3 {
top: 140px;
right: 30px;
}
.h6 {
bottom: 30px;
left: 50%;
margin-left: -5px;
}
.h9 {
left: 32px;
top: 140px;
}
.diallines {
position: absolute;
z-index: 2;
width: 2px;
height: 15px;
background: #666;
left: 50%;
margin-left: -1px;
transform-origin: 50% 150px;
}
.diallines:nth-of-type(5n) {
position: absolute;
z-index: 2;
width: 4px;
height: 25px;
background: #666;
left: 50%;
margin-left: -1px;
transform-origin: 50% 150px;
}
این بار خروجی به صورت زیر خواهد بود:
اکنون صفحه نمایش با کد زیر طوری استایل دهی خواهد شد که زمان و تاریخ کامل را نشان دهد.
.info {
position: absolute;
width: 120px;
height: 20px;
border-radius: 7px;
background: #ccc;
text-align: center;
line-height: 20px;
color: #000;
font-size: 11px;
top: 200px;
left: 50%;
margin-left: -60px;
font-family: "Poiret One";
font-weight: 700;
z-index: 3;
letter-spacing: 3px;
margin-left: -60px;
left: 50%;
}
.date {
top: 80px;
}
.day {
top: 200px;
}
مرحله ۴: فعال کردن ساعت آنالوگ با استفاده از جاوا اسکریپت
در این مرحله از ساخت ساعت با جاوا اسکریپت طراحی تکمیل و با استفاده از کدنویسی جاوا اسکریپت بخش عملکردی ساعت فعال خواهد شد. در این مرحله در درجه اول روی متحرکسازی عقربههای ساعت کار انجام میگیرد، برای این هدف ابتدا خطوط شمارهگیری و عنصر ساعت با استفاده از
به صورت زیر انتخاب میشوند:
var dialLines = document.getElementsByClassName('diallines');
var clockEl = document.getElementsByClassName('clock')[0];
در مرحله بعد، از حلقه for در جاوا اسکریپت برای ایجاد خطوط شمارهگیری و چرخاندن عقربهها استفاده خواهد شد. حلقه مد نظر از ١ تا ۵٩ به ازای هر ۶۰ ثانیه (١ دقیقه) اجرا میشود. همچنین در این بخش عناصر
جدیدی با کلاس
ایجاد خواهد شد. علاوه بر این، نوعی ویژگی
یا تبدیل نیز اعمال میشود تا هر شمارهگذاریهای مربوط به دقیقهها را ۶ درجه بچرخاند تا بهدرستی در اطراف صفحه ساعت قرار بگیرند. قطعه کد مربوط به این بخش به صورت زیر است:
for (var i = 1; i < 60; i++) {
clockEl.innerHTML += "<div class='diallines'></div>";
dialLines[i].style.transform = "rotate(" + 6 * i + "deg)";
}
این حلقه بهطور مؤثر نشانگرهای دقیقه (خطوط شماره مربوط به دقیقه) را در سراسر صفحه ساعت ایجاد میکند. حال تابعی به نام
ایجاد میشود تا بهروزرسانی مداوم زمان و انیمیشن ساعت را مدیریت کند.
اکنون در این بخش از ساخت ساعت با جاوا اسکریپت، تابع
ایجاد میشود تا عملکرد ساعت و تاریخ ساعت آنالوگ را مدیریت کند که قطعه کد آن به صورت زیر است:
function clock() {
var weekday = [
"Sunday",
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday"
],
d = new Date(),
h = d.getHours(),
m = d.getMinutes(),
s = d.getSeconds(),
date = d.getDate(),
month = d.getMonth() + 1,
year = d.getFullYear(),
تشریح کد بالا به صورت زیر است:
- آرایهای به نام
حاوی نام روزهای هفته در کد بالا تعریف شده است. - شی نمونه
برای بازیابی تاریخ و زمان فعلی ارائه شده است. - از متدهای مختلفی مانند «
» ،«
» ،«
» ،«
» ،«
» ،«
» و «
» برای استخراج اطلاعات مربوط به تاریخ و زمان استفاده شده است. - از متغیرهای «
»، «
»، «
»، «
»، «
»، «
» و «
» برای اقدامات بعدی مانند بهروزرسانی عقربههای ساعت، نمایش تاریخ یا نشان دادن روز هفته استفاده شده است. برای بهروزرسانی مداوم ساعت، میتوان تابع
را در فواصل زمانی منظم با استفاده از متد SetInterval در جاوا اسکریپت فراخوانی کرد. مانند مثال زیر:
setInterval(clock, 1000); // Calls the clock function every 1000 milliseconds (1 second)
با این تنظیمات، ساعت آنالوگ ساخته شده به طور مداوم زمان و تاریخ فعلی را نمایش میدهد و میتوان آن را مطابق با ترجیحات شخصی سفارشی کرد.
کد نهایی ساخت ساعت آنالوگ با جاوا اسکریپت
کدهای نهایی ساخت ساعت با جاوا اسکریپت مربوط به پروژه بالا به صورت موارد زیر هستند:
کد HTML پروژه به صورت زیر است:
<div class="clock">
<div>
<div class="info date"></div>
<div class="info day"></div>
</div>
<div class="dot"></div>
<div>
<div class="hour-hand"></div>
<div class="minute-hand"></div>
<div class="second-hand"></div>
</div>
<div>
<span class="h3">3</span>
<span class="h6">6</span>
<span class="h9">9</span>
<span class="h12">12</span>
</div>
<div class="diallines"></div>
</div>
کد CSS پروژه به صورت زیر است:
.clock {
background: #ececec;
width: 300px;
height: 300px;
margin: 8% auto 0;
border-radius: 50%;
border: 14px solid #333;
position: relative;
box-shadow: 0 2vw 4vw -1vw rgba(0,0,0,0.8);
}
.dot {
width: 14px;
height: 14px;
border-radius: 50%;
background: #ccc;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
position: absolute;
z-index: 10;
box-shadow: 0 2px 4px -1px black;
}
.hour-hand {
position: absolute;
z-index: 5;
width: 4px;
height: 65px;
background: #333;
top: 79px;
transform-origin: 50% 72px;
left: 50%;
margin-left: -2px;
border-top-left-radius: 50%;
border-top-right-radius: 50%;
}
.minute-hand {
position: absolute;
z-index: 6;
width: 4px;
height: 100px;
background: #666;
top: 46px;
left: 50%;
margin-left: -2px;
border-top-left-radius: 50%;
border-top-right-radius: 50%;
transform-origin: 50% 105px;
}
.second-hand {
position: absolute;
z-index: 7;
width: 2px;
height: 120px;
background: gold;
top: 26px;
lefT: 50%;
margin-left: -1px;
border-top-left-radius: 50%;
border-top-right-radius: 50%;
transform-origin: 50% 125px;
}
span {
display: inline-block;
position: absolute;
color: #333;
font-size: 22px;
font-family: 'Poiret One';
font-weight: 700;
z-index: 4;
}
.h12 {
top: 30px;
left: 50%;
margin-left: -9px;
}
.h3 {
top: 140px;
right: 30px;
}
.h6 {
bottom: 30px;
left: 50%;
margin-left: -5px;
}
.h9 {
left: 32px;
top: 140px;
}
.diallines {
position: absolute;
z-index: 2;
width: 2px;
height: 15px;
background: #666;
left: 50%;
margin-left: -1px;
transform-origin: 50% 150px;
}
.diallines:nth-of-type(5n) {
position: absolute;
z-index: 2;
width: 4px;
height: 25px;
background: #666;
left: 50%;
margin-left: -1px;
transform-origin: 50% 150px;
}
.info {
position: absolute;
width: 120px;
height: 20px;
border-radius: 7px;
background: #ccc;
text-align: center;
line-height: 20px;
color: #000;
font-size: 11px;
top: 200px;
left: 50%;
margin-left: -60px;
font-family: "Poiret One";
font-weight: 700;
z-index: 3;
letter-spacing: 3px;
margin-left: -60px;
left: 50%;
}
.date {
top: 80px;
}
.day {
top: 200px;
}
همچنین کد جاوا اسکریپت پروژه به صورت زیر است:
var dialLines = document.getElementsByClassName('diallines');
var clockEl = document.getElementsByClassName('clock')[0];
for (var i = 1; i < 60; i++) {
clockEl.innerHTML += "<div class='diallines'></div>";
dialLines[i].style.transform = "rotate(" + 6 * i + "deg)";
}
function clock() {
var weekday = [
"Sunday",
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday"
],
d = new Date(),
h = d.getHours(),
m = d.getMinutes(),
s = d.getSeconds(),
date = d.getDate(),
month = d.getMonth() + 1,
year = d.getFullYear(),
hDeg = h * 30 + m * (360/720),
mDeg = m * 6 + s * (360/3600),
sDeg = s * 6,
hEl = document.querySelector('.hour-hand'),
mEl = document.querySelector('.minute-hand'),
sEl = document.querySelector('.second-hand'),
dateEl = document.querySelector('.date'),
dayEl = document.querySelector('.day');
var day = weekday[d.getDay()];
if(month < 9) {
month = "0" + month;
}
hEl.style.transform = "rotate("+hDeg+"deg)";
mEl.style.transform = "rotate("+mDeg+"deg)";
sEl.style.transform = "rotate("+sDeg+"deg)";
dateEl.innerHTML = date+"/"+month+"/"+year;
dayEl.innerHTML = day;
}
setInterval("clock()", 100);
خروجی نهایی این پروژه ساخت ساعت با جاوا اسکریپت به صورت تصویر زیر است:
نمونه ساعت آنالوگ با جاوا اسکریپت
در این بخش قطعه کد مربوط به ساخت ساعت آنالوگی دیگر از جاوا اسکریپت ارائه خواهد شد. پیشنیازهای ساخت این ساعت هم درک اولیه از HTML ،CSS و جاوا اسکریپت بوده که در زیر مراحل ساخت این ساعت آورده شده است:
- ایجاد فایلهای مربوط: در مرحله اول باید سه فایل HTML، CSS و JavaScript ایجاد شود. همچنین در این رویکرد به تصویری مناسب از ساعت برای استفاده به عنوان پسزمینه ساعت نیاز است.
- ساخت فایل HTML: این فایل ساختار اصلی صفحه وب را ارائه میدهد و شامل شناسههای بدنه ساعت و عقربههای ثانیه، دقیقه و ساعت است.
- ساخت فایل CSS: این فایل برای استایل دادن به ساعت استفاده میشود و از نظر بصری آن را جذاب میکند. استایل دهی مربوطه ساعت را در وسط صفحه وب قرار میدهد.
- کد جاوا اسکریپت ساخت ساعت آنالوگ: کد جاوا اسکریپت ساخت ساعت حاوی منطق چرخش عقربههای ساعت است و در ابتدا عناصر ساعت، دقیقه و ثانیه را از HTML انتخاب میکند. این کد همچنین برای دریافت زمان فعلی از شی
استفاده میکند که به وسیله جاوا اسکریپت ارائه شده است و ثانیهها، دقیقهها و ساعتهای جاری را نشان میدهد. همچنین کد جاوا اسکریپت به طور مداوم عقربههای ساعت را بر اساس زمان فعلی بهروز میکند و نوعی ساعت آنالوگ بلادرنگ ایجاد خواهد کرد.
با دنبال کردن مراحل بالا، میتوان ساعت آنالوگ کاربردی و جذاب برای استفادههای شخصی ساخت. قطعه کد ساخت ساعت با جاوا اسکریپت در این مثال برای سه فایل HTML ،CSS و جاوا اسکریپت در ادامه قرار گرفتهاند.
قطعه کد HTML ساخت ساعت آنالوگ با جاوا اسکریپت به صورت زیر است:
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="style.css">
<script src="index.js"></script>
</head>
<body>
<div id="clockContainer">
<div id="hour"></div>
<div id="minute"></div>
<div id="second"></div>
</div>
</body>
</html>
قطعه کد CSS این ساعت آنالوگی به صورت زیر است:
#clockContainer {
position: relative;
margin: auto;
height: 40vw;
/*to make the height and width responsive*/
width: 40vw;
background: url(clock.png) no-repeat;
/*setting our background image*/
background-size: 100%;
}
#hour,
#minute,
#second {
position: absolute;
background: black;
border-radius: 10px;
transform-origin: bottom;
}
#hour {
width: 1.8%;
height: 25%;
top: 25%;
left: 48.85%;
opacity: 0.8;
}
#minute {
width: 1.6%;
height: 30%;
top: 19%;
left: 48.9%;
opacity: 0.8;
}
#second {
width: 1%;
height: 40%;
top: 9%;
left: 49.25%;
opacity: 0.8;
}
همچنین قطعه کد جاوا اسکریپت ساعت آنالوگ مد نظر به صورت زیر است:
setInterval(() => {
d = new Date(); //object of date()
hr = d.getHours();
min = d.getMinutes();
sec = d.getSeconds();
hr_rotation = 30 * hr + min / 2; //converting current time
min_rotation = 6 * min;
sec_rotation = 6 * sec;
hour.style.transform = `rotate(${hr_rotation}deg)`;
minute.style.transform = `rotate(${min_rotation}deg)`;
second.style.transform = `rotate(${sec_rotation}deg)`;
}, 1000);
خروجی این ساعت آنالوگ ساخته شده با جاوا اسکریپت به صورت زیر است:
در نمونه پروژه ساخت ساعت با جاوا اسکریپت بالا زیاد به جزئیات کار ورود نکردیم چون فرآیند ساخت با نمونه اول مشابه است و ورود به جزئیات را به عهده کاربر خواهیم گذاشت. در مرحله بعد به پیادهسازی ساعت دیجیتال با جاوا اسکریپت خواهیم پرداخت.
ساخت ساعت دیجیتال با جاوا اسکریپت
در این بخش از آموزش ساخت ساعت با جاوا اسکریپت این بار ساعتی دیجیتالی پیادهسازی خواهد شد. روند ساخت ساعت دیجیتالی با ساخت ساعت آنالوگ در جاوا اسکریپت کمی متفاوت است. در ادامه مرحله به مرحله نحوه پیادهسازی ساعت دیجیتالی ارائه خواهد شد.
مرحله ١. طراحی صفحه وب
برای ساخت ساعت دیجیتال با استفاده از جاوا اسکریپت ابتدا کار را با طراحی صفحه وب شروع میکنیم. در این مرحله از CSS برای استایل دادن به صفحه وب و قرار دادن ساعت در مرکز صفحه با پسزمینه آبی استفاده خواهد شد که کد آن به صورت زیر است:
body{
margin-top: 200px;
height: 100vh;
background: #2477b7;
}
در کد CSS بالا،
به معنای حاشیه بالا روی ١۵۰ پیکسل قرار داده شده تا ساعت به صورت عمودی در مرکز صفحه وب قرار بگیرد. میتوان این مقدار را برای تنظیم دقیق موقعیت تنظیم و آن را کرد. همچنین رنگ پسزمینه برای صفحه وب روی آبی (
) تنظیمشده است. کد فوق در اصل طرح پایه ساعت دیجیتالی را تنظیم میکند. خروجی این مرحله به صورت زیر است:
در مراحل بعدی از HTML برای ساختار اولیه و از جاوا اسکریپت برای عملگرا کردن ساعت استفاده خواهد شد.
مرحله ٢. ایجاد ساختار اصلی ساعت دیجیتالی
در این مرحله ساختار اولیه ساعت دیجیتال با استفاده از HTML تنظیم شده و با CSS استایل دهی خواهد شد. برای این هدف کادر مستطیلی ساده برای نمایش زمان ایجاد میکنیم. کدهای HTML و CSS برای این هدف در زیر آمده است. کد HTML این ساختار به صورت زیر خواهد بود:
<div id="clockDisplay" class="clockStyle"></div>
در کدهای فوق، عنصر
با شناسه
و کلاس
ایجاد شده تا به عنوان کانتینر یا ظرف ساعت دیجیتال عمل کند. همچنین کد CSS برای اضافه کردن استایل به ساختار به صورت زیر است:
#clockDisplay {
margin: 0px auto;
width: 400px;
background-color: #1E1E1E; /* Black background color */
border: 5px solid #ededee; /* White border */
box-shadow: 0 20px 30px rgba(0, 0, 0, 0.2);
height: 100px;
color: #2ed9f7; /* Text color */
padding-top: 30px;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 60px; /* Text size */
text-align: center;
letter-spacing: 2px;
}
ویژگیهای مختلف CSS برای استایل دهی در ساخت ساعت با جاوا اسکریپت به صورت زیر تنظیم شدهاند:
-
و
ابعاد ساعت را مشخص میکنند. -
رنگ پسزمینه کادر یا محفظه ساعت را روی سیاه (
) تنظیم خواهد کرد. - نوعی حاشیه سفید در تمام ساعات شبانهروز ایجاد میکند.
- سایهای ظریف به ساعت اضافه خواهد کرد.
-
رنگ متن را به صورت آبی روشن مشخص میکند (
). - تراز عمودی متن را تنظیم میکند.
- نوع فونتها را مشخص خواهد کرد.
- اندازه متن را کنترل میکند (۶۰ پیکسل در این مورد).
- متن را به صورت افقی در مرکز قرار میدهد.
- فاصله بین کاراکترها را برای خوانایی بهتر اضافه میکند.
خروجی کدهای فوق به صورت تصویر زیر است:
کد CSS بالا، استایل اصلی ساعت دیجیتال مدنظر را تشکیل میدهد. در مراحل بعدی، از جاوا اسکریپت برای کاربردی کردن آن با بهروزرسانی زمان در زمان واقعی استفاده میکنیم.
مرحله ٣. کدنویسی جاوا اکسریپت ساعت دیجیتال
در این مرحله از ساخت ساعت با جاوا اسکریپت نوبت به عملگرا کردن ساعت دیجیتالی خواهد رسید. برای این هدف باید با کدنویسی جاوا اسکریپت کار را شروع کنیم. قطعه کد جاوا اسکریپت برای ساخت ساعت دیجیتالی مدنظر به صورت زیر است:
// Get the current time from the user's device
var currentTime = new Date();
var h = currentTime.getHours();
var m = currentTime.getMinutes();
var s = currentTime.getSeconds();
// Determine whether it's AM or PM
var diem = "AM";
if (h == 0) {
h = 12;
} else if (h > 12) {
h = h - 12;
diem = "PM";
}
// Add leading zeros to hours, minutes, and seconds if needed
if (h < 10) {
h = "0" + h;
}
if (m < 10) {
m = "0" + m;
}
if (s < 10) {
s = "0" + s;
}
// Get the clock container element
var myClock = document.getElementById('clockDisplay');
// Format the time and display it in the clock container
myClock.textContent = h + ":" + m + ":" + s + " " + diem;
// Update the clock every 1000 milliseconds (1 second)
setTimeout(renderTime, 1000);
function renderTime() {
// Get the current time again
var currentTime = new Date();
var h = currentTime.getHours();
var m = currentTime.getMinutes();
var s = currentTime.getSeconds();
// Determine whether it's AM or PM
var diem = "AM";
if (h == 0) {
h = 12;
} else if (h > 12) {
h = h - 12;
diem = "PM";
}
// Add leading zeros to hours, minutes, and seconds if needed
if (h < 10) {
h = "0" + h;
}
if (m < 10) {
m = "0" + m;
}
if (s < 10) {
s = "0" + s;
}
// Update the clock display
myClock.textContent = h + ":" + m + ":" + s + " " + diem;
// Set a timeout to update the clock again after 1000 milliseconds
setTimeout(renderTime, 1000);
}
تشریح کد فوق به صورت زیر است:
دریافت زمان فعلی:
در کد جاوا اسکریپت فوق ابتدا با استفاده از متد
زمان جاری دریافت و ساعتها، دقیقهها و ثانیهها استخراج خواهند شد. همچنین تعیین خواهد شد که آیا زمان فعلی صبح است یا بعد از ظهر که این زمان با
یا
تعیین میشود. همچنین اگر ساعت ۰ (نیمهشب) باشد آن را ١٢ صبح در نظر میگیریم. اگر رقم ساعت بزرگتر از ١٢ باشد، مقدار ١٢ از آن کم خواهد شد تا زمان
به دست آید. همچنین ارقام ساعتها، دقیقهها و ثانیهها در کد بالا دو رقمی هستند. به عنوان مثال، بهجای نشان دادن
، به صورت
نمایش داده خواهد شد.
دسترسی به کادر یا محفظه ساعت:
در کد فوق عنصر HTML با شناسه
موجود و در متغیری به نام
ذخیره شده است. در این رابطه از
برای دریافت عنصر محفظه ساعت و بهروزرسانی محتوای آن با زمان قالببندی شده با استفاده از ویژگی
استفاده خواهد شد. در واقع زمان فعلی با ساعت، دقیقه، ثانیه و «AM/PM» قالببندی شده و متن نمایشدهنده ساعت در داخل محفظه یا کادر ساعت
بهروزرسانی میشود.
بهروزرسانی مداوم زمان:
همچنین در کد فوق از
برای فراخوانی تابع
هر ١۰۰۰ میلیثانیه (١ ثانیه) استفاده شده است تا بهطور مداوم ساعت را بهروزرسانی کرده و نوعی ساعت دیجیتال بیدرنگ ایجاد شود. این کار در کدنویسی ساخت ساعت با جاوا اسکریپت به صورت طور مداوم زمان فعلی را نشان میدهد. خروجی نهایی قطعه بالا در ساخت ساعت دیجیتال با جاوا اسکریپت به صورت زیر است:
تا به این جا ما توانستیم که ساعت دیجیتالی خود را با موفقیت پیادهسازی کنیم.
سوالات متداول برای ساخت ساعت با جاوا اسکریپت
در این بخش از مطلب مجله فرادرس چند سوال متداول در رابطه با ساخت ساعت با جاوا اسکریپت برای درک بهتر فرایند ساخت و پیادهسازی این پروژه جذاب ارائه خواهد شد.
چگونه ساعت دیجیتالی با جاوا اسکریپت ایجاد کنیم؟
برای ساخت ساعت دیجیتال در جاوا اسکریپت، میتوان از شی Date در جاوا اسکریپت برای دریافت زمان فعلی، قالببندی آن و سپس بهروزرسانی مرتب زمان استفاده کرد. همچنین برای نمایش و استایل دهی به ساعت به HTML و CSS است. در اصل ساعت دیجیتال معمولاً به HTML برای ساختار، CSS برای استایل دهی و جاوا اسکریپت برای عملگرا کردن ساعت نیاز دارد. HTML کادر یا محفظه ساعت را فراهم میکند، CSS به ساعت استایل داده و جاوا اسکریپت زمان را بهروز کرده و آن را نمایش میدهد.
چگونه میتوان با استفاده از جاوا اسکریپت ساعت آنالوگ ساخت؟
ایجاد ساعت آنالوگ شامل کشیدن عقربههای ساعت و چرخش آنها بر اساس زمان فعلی است. برای دستیابی به این هدف میتوان از «HTML5» یا «SVG» به همراه جاوا اسکریپت استفاده کرد. همچنین میتوان ظاهر ساعت دیجیتال را با اعمال استایلهای CSS شخصیسازی کرد. از طرفی دیگر میتوان فونت، رنگ، اندازه و موقعیت را برای مطابقت با ترجیحات طراحی مدنظر تغییر داد.
چگونه میتوان زمان واقعی در ساعت دیجیتالی جاوا اسکریپتی را به روز کرد؟
میتوان از تابع «SetTimeout» یا «SetInterval» برای بهروزرسانی مکرر زمان در ساعت دیجیتال خود استفاده کرد. این توابع به کاربر این امکان را میدهند که کد را در فواصل زمانی منظم مانند هر ثانیه اجرا کند.
آیا میتوان ویژگیهای اضافی مانند نمایش تاریخ به ساعت دیجیتال یا آنالوگ اضافه کرد؟
بله، میتوان ساعت دیجیتال را با افزودن ویژگیهایی مانند نمایش تاریخ یا گزینههای قالب زمانی سفارشی کرد و این مسئله در مثال اول این مطلب به صورت عملی ارائه گردید. جاوا اسکریپت به کاربر اجازه میدهد تا جنبههای مختلف زمان و تاریخ را دستکاری کند.
از چه کتابخانهها یا فریمورکهایی میتوان برای سادهسازی ساخت ساعت با جاوا اسکریپت استفاده کرد؟
کتابخانههایی مانند «Moment.js» یا «Date-fns» میتوانند دستکاری تاریخ و زمان را در جاوا اسکریپت ساده کنند. همچنین برای این هدف میتوان از فریمورکهای جاوا اسکریپت مانند «ری اکت» (React) یا «انگولار» (Angular) به منظور ساخت ساعت با جاوا اسکریپت استفاده کرد.
سخن پایانی
ساخت ساعت با جاوا اسکریپت نوعی پروژه تمرینی بسیار جذاب و در عین حال کاربردی است که کاربران میتوانند از آن بهره ببرند. پروژه ساخت ساعتهای آنالوگ و دیجیتال در کنار کاربردی بودنشان به کاربران میآموزند که چگونه تاریخ و زمان را در پروژههای جاوا اسکریپتی خود مدیریت کنند. همچنین کاربران با مطالعه مطلب فوق و بهکارگیری مفاهیم به کار رفته در آن میتوانند که کدهای ارائه شده برای ساخت ساعت کاملاً سفارشی کرده و از آن در پروژههای شخصی خود استفاده کنند.
در مطلب فوق از مجله فرادرس روشهای ساخت ساعت دیجیتال و آنالوگ با استفاده از جاوا اسکریپت به صورت قدمبهقدم تشریح شد و در نهایت خروجی نهایی هر یک از پروژهها نیز به نمایش درآمد. در پروژههای فوق ساختار اصلی ساعتهای موجود در وب تشریح شدند و ٣ مثال عینی و واقعی برای آنها پیادهسازی شد و در کنار نمایش ساعت، شیوه نمایش تاریخ با جاوا اسکریپت نیز مورد بررسی قرار گرفت. به امید اینکه مطلب فوق در رابطه با ساخت ساعت با Javascript برای کاربران عزیز مجله مفید بوده باشد.
نوشته ساخت ساعت با جاوا اسکریپت – دیجیتال و آنالوگ به زبان ساده اولین بار در فرادرس – مجله. پدیدار شد.