Professional Documents
Culture Documents
com
ﻧت ﭘﺎرادﯾس
www.netparadis.com
فهرست
مقدمه 6 ................................................................................................................
4
HTML5
من معتقدم HTML5دستاورد بزرگی خواهد بود (بسیاری از مردم هم چنین اعتقادی دارند .).این برنامه
ممکن است روش لباس پوشیدن و غذا خوردن ما را تغییر ندهد ،اما مطمئنا روش توسعه ی برنامه های وب و
طراحی صفحات وب را در 01سال آینده تغییر خواهد داد .به هرحال این صفحه آموزش HTMLنمی باشد.
HTML5چیز کامال جدیدی نمی باشد .بسیاری از ویژگی های HTML5از HTML4یا HTML1.0گرفته شده
اند .با زمان و انرژی محدودم می توانم فقط آنچه را در HTML5جدید است و تمرینات قدیمی که دیگر مورد
این یک سایت HTML5می باشد .هنگامی که در حال کشف و یادگیری HTML5هستم ،امیدوارم بتوانم آنچه
" دو نوع انگیزه وجود دارد که با دونوع هدف منطبق می شود .انگیزه های سلطه گرایی هستند که هدف آنها
رسیدن به متعلقات شخصی می باشد که نمی توان به اشتراک گذاشت و در مرکز انگیزه ی مادی قرار می
گیرند .انگیزه های خالقانه نیز وجود دارند که هدف آنها آوردن اموالی است که در آنها هیچ گونه تملک و یا
بهترین زنگی ،آن زندگی میباشد که انگیزه های خالقانه بیشترین نقش را داشته و انگیزه های مالی کمترین را".
با توجه به این نوشته HTML5یک نسخه ی در حال کار می باشد .به عبارت دیگر HTML5هنوز یک کار در
حال پیشروی می باشد .ویژگی های آن در W3Cمنتشر شده و روز به روز تغییر می کند.
احتماال تاکنون در مورد HTML5شنیده اید ،فکر می کنم محبوب ترین برنامه ای که فیلم را بدون Adobe
Flashاجرا می کند ،باید از آقای استیو جابز برای تبدیل آن به یک فن آوری معروف تشکر کرد.
7
عالوه بر این ممکن است در مورد ایجاد انیمیشن بدون پالگین ،کنترل ورودی غنی مانند دیت پیکر ،کالرپیکر،
اسالیدر بدون جاوااسکریپت و در انتها ذخیره ی داده ی برون خطی (آفالین) نیز شنیده باشید .به هرحال این
چه وقت؟
WC3در فوریه ی 1100اعالم کرد که جوالی 1101تاریخی است که HTML5پیشنهاد رسمی برای استاندارد
وب می شود.
واقعیت این است که جدول زمانی پیشنهادی از طرف WHATWGواقعا اتفاق نیفتاد .توسعه ی وب در دستان
اولین گروه کمپانی های مرورگر معروفی مانند ،Mozillaمایکروسافت ،اپل ،گوگل و اپرا می باشند .گروه دوم
نیز طراحان و توسعه دهندگان وب در این زمینه می باشند .ضعف HTML1.1و HTML 2خیلی ساده است،
کمپانی های مرورگر فکر می کردند که ایده ی احمقانه است ،بنابراین درهای خود را به روی آن بستند.
امروزه بسیاری از مرورگرها به شدت تمایل دارند که از HTML5پشتیبانی کنند .حتی اینترنت اکسپلورر که
درآهستگی تطبیق استانداردهای جدید شهرت دارد ،در IE9خود از HTML5پشتیبانی می کند ،و این بدین
از آنجایی که مایکروسافت اعالم کرده که هیچ طرحی برای آزاد کردن IE9برای کاربرهای ویندوز XPندارد ،اگر
تمایل دارید از IE9استفاده کنید ،باید از ویندوز vista sp2یا 7استفاده کنید.
هیچ دلیلی وجود ندارد که طراحان تحت تاثیر HTML5قرار نگیرند ،زیرا که زندگی را از همیشه برای ما آسانتر
کرده است.
اعالم نوع داکیومنت در HTML5هم ساده و هم جالب می باشد .این کار به سادگی زیر میباشد:
8
<!DOCTYPE html>
: که با آن آشنا هستیمHTML4 وHTML1 درdoctype بر خالف
این اولین دلیلی است که نشان می دهد کار طراحان وب با.برخی از آنها حتی در یک خط نوشته نمی شوند
<!DOCTYPE html>
<html>
<head>
<title>HTML5 is rocks!</title>
</head>
<body>
<h1>HTML5 Rocks!</h1>
</body>
</html>
و باز، را مشخص می کنیمCSS جاوااسکریپت و مسیر فایل، نوع محتوا،اغلب اوقات در تیتر صفحات وب خو
<meta charset="UTF-8">
در عمل فقط اسکریپت بخش کاربر،"دیگر الزم نیستندtype=text/javascript" اطالعت حشوHTML5 در
.روشن می باشد
<script src="jquery.js"></script>
9
مشابها CSSهم مانند جاوا اسکریپت ،پردازش شهروند درجه ی یک را دریافت می کند .شما از هم اکنون می
توانید " "type=text/cssرا فراموش کنید.
صدا در HTML5
اجازه بدهید در شروع یک سرگرمی داشته باشیم .قرار است در مورد مرورگری صحبت کنیم که فایل صدا را در
حالت طبیعی خود پشتیبانی می کند ،درست همانطور که برچسب > <imgاز 0111پشتیبانی می شودHTML .
5قرار است به صدای پالگین ) (plug-inمانند مدیاپلیر ،سیلورالیت ،اپل کویک تایم ،و Adobe Flashبد نام
خاتمه دهد.
اگر در باال کنترل اجرا کننده ی صدا نمی بینید ،احتماال مرورگر شما برچسب صدا را پشتیبانی نمی کند.
در باال یک گالری از پخش کننده های صدا را ،توسط مرورگرهای مهم می بینید .همانطور که می بینید اندازه
کنترل پخش کننده ها با یکدیگر متفاوت هستند .پخش کننده ی IE9در مقایسه با پخش کننده ی safari
بسیار بزرگ می باشد .این مسئله برای طراح وب می تواند یک مشکل بزرگ باشد.
اگر برای ویندوز از safariاستفاده می کنید ،اما بدون ،Quick Timeبرنامه ی Safariشما قرار نیست از
برچسب مدیا (هم در حالت صوتی و هم در حالت تصویری) پشتیبانی کند .تصور می کنم که برنامه ی Safari
برای اجرای فایل های مدیا ،به کدک Quick Timeاتکا دارد.
چگونه؟
برای اینکه صفحه ی وب شما موسیقی اجرا کند ،کد htmlشما می تواند به سادگی زیر باشد:
10
متاسفانه محبوب ترین فرمت صدا ) MPEG3 (mp3یک استاندارد باز نیست ،بلکه یک اختالل عمومی است،
و این بدین معنا که مرورگرها برای رمزگشایی آن باید مقداری پول پرداخت کنند و این ممکن است از لحاظ
اقتصادی برای شرکت ها و سازمان های کوچکتر عملی نباشد .همانطور که در جدول زیر مشاهده می کنند تنها
سران بزرگ ثروت کافی برای رمزگشایی MP3را دارند Opera .و firefoxتنها فرمت ) vorbis (oggرا
از طرف دیگر Vorbisتوسط Safariو IE9پشتیبانی نمی شود ،در حالیکه همیشه داشتن oggو MP3در کنار
href="http://www.happyworm.com/jquery/jplayer/HTML5.Audio.Support/">HTML5
11
><audio controls
><source src="vincent.mp3" type="audio/mpeg" /
><source src="vincent.ogg" type="audio/ogg" /
></audio
ارائه کردن یا نکردن نوع )" MIME (type="audio/mpegبرای مرورگر انتخابی می باشد .مدرنترین
مرورگرها به اندازه ی کافی هوشمند هستند تا نوع محتوا را از طریق خود آن مشخص کنند .به هرحال کمک
کننده بودن برای مرور گر همیشه خوب است ،چرا که باعث می شود مرورگر شما سریعتر و بهتر کار کند.
controls *Boolean attribute شما برای ظاهر شدن اجرا کننده ی داخلی به این ویژگی احتیاج
autoplay *Boolean attribute اگر این ویژگی وجود داشته باشد ،مرورگر فقط آواز یا صحبتتان
preload none | metadata | auto این ویژگی قبال با نام autobufferمعروف بود و یک ویژگی
12
ویژگی Booleanویژگی می باشد که یا در برچسب نمایش داده می شود یا نه .ویژگی Booleanفقط نام خود
را دارد و دارای مقدار نیست .شما می توانید آن را از این طریق نیز به کار ببرید ،هر مقداری که شما به ویژگی
HTML 5در واقع تکاملی از وب می باشد ،نه انقالبی که فقط گذشته را نابود می کند .به هرحال اجازه دهید
برای پشتیبانی مرورگری که اصال نمی داند > <audioچیست ،از قبیل IE8وپایین تر ،با استفاده از برچسب
> <objectباید اجازه دهیم در همان روزهای قدیمی خود باقی بمانند.
><audio controls
><source src="vincent.mp3" type="audio/mpeg" /
><source src="vincent.ogg" type="audio/ogg" /
>"<object type="application/x-shockwave-flash" data="media/OriginalMusicPlayer.swf" width="225" height="86
><param name="movie" value="media/OriginalMusicPlayer.swf" /
><param name="FlashVars" value="mediaPath=vincent.mp3" /
></object
></audio
اگر مرورگر شما از HTML5پشتیبانی نمی کند اما شما فلش پالگین را دارید ،احتماال چیزی را از دست نداده
اید.
اگر HTML5نه مرورگر و نه فلش را پشتیبانی می کند ،ممکن است به کاربر اجازه بدهید فایل صدا را دانلود
کند و در گرفتن یک اجرا کننده برای اجرای آن ،برای آن ها آرزوی خوش شانسی کنید.
13
<audio controls>
<source src="vincent.mp3" type="audio/mpeg" />
<source src="vincent.ogg" type="audio/ogg" />
<object type="application/x-shockwave-flash" data="media/OriginalMusicPlayer.swf" width="225" height="86">
<param name="movie" value="media/OriginalMusicPlayer.swf" />
<param name="FlashVars" value="mediaPath=vincent.mp3" />
</object>
<a href="vincent.mp3">Download this lovely song and wish you all the best!</a>
</audio>
با استفاده از خالقیت خود می توانید برنامه ی خود را،به جای استفاده از مرورگر اجرای صدای استاندارد
.بنویسید
به. تالش برای انجام چنین کاری به نیمه ی قرن بیستم برمی گردد،جریان ویدئو در اینترنت چیز تازه ای نیست
درYoutube تا اینکه، هیچ موفقیتی حاصل نشد،CPU خاطر پایین بودن پهنای باند شبکه ها و قدرت پایین
عرض و پوستر، طول. قرار دهیم،<img> مانند، می توانیم ویدئو را مانند یک عنصر داخلی،HTML5 اکنون با
طول و عرض سایز صفحه را مشخص می کنند و پوستر تنها یک فایل تصویر ثابت می باشد که قبل،وجود دارند
چگونه؟
14
در واقع زندگی آنطوری نیست که ما فکر می کردیم باید باشد ،خط ساده ی کد باال تنها در google
chromeو apple safariکار می کند و حتی برای اجرای فیلم در apple safariباید مطمئن شوید که quick
مشابه گرفتاری صوتی ،یک فرمت جهانی برای ویدئو نداریم که همه ی مرورگرهای وب از آن پشتیبانی کنند،
در اینجا دوباره بازی پول مطرح می شود H.264 .یک مشکل همگانی است ،فایرفاکس و اپرا خرید امتیاز آزاد یک
AAC+ +Vorbis
MP4 +Ogg
گوگل در ژانویه ی 1100اعالم کرد که در ورژن آینده ی گوگل کروم از H.264پشتیبانی نمی کند .به طور خالصه
کد تک خطی ساده ،همانطور که در باال توضیح دادم ،عملی نمی باشد .شما حداقل باید دو منبع برای یک ویدئو
تامین کنید.
15
نکات
برای اینکه فایل ویدئوی خود را در H.264رمزگشایی کنید ،ممکن است تمایل داشته باشید HandBrakeرا
امتحان کنید ،که یک GPLمناسب ویک ابزار منبع باز می باشد .اگرمی خواهید تنها یک ویدئو را رمزگشایی کنید
و تمایلی به نصب برنامه ای دیگر روی OSتقریبا بسته ی خود ندارید ،می توانید فیلم خود را
روی Youtubeآپلود کنید .سپس Youtubeبرنامه ی شما را به فرمت H.264آپلود کرده و شما می توانید آن
همانطور که برای فرمت های WEBMو Theoraممکن است Firefoggرا (یک فایرفاکس پالگین است که
controls اگر می خواهید کنترل اجرا کننده ی مرورگر داخلی در اطراف ویژگی *Boolean
autoplay اگر این ویژگی وجود داشته باشد ،مرورگر فیلم شما را بدون ویژگی *Boolean
16
این ویژگی پیش ازاین با عنوان autobufferشناخته می شد و preload none | metadata | auto
poster اگر وجود داشته باشد ،تا زمان دانلود شدن اولین فریم فیلم urlیک فایل تصویر
اگر فکر می کنید که اجرای ویدئو برای سه دفعه سخت است ،به مدت کمی طوالنی تر نفس خود را نگه دارید،
زیرا قرار است برای تامین کاربرهای بیشتر که از مرورگرهای قدیمی تری مانند internet explorer 8و یا پایین
مایکروسافت internet explorer 9 Betaرا در نوامبر 1101آزاد کرد که HTML5را نیز پشتیبانی می کند .اما
برچسب > <videoبه عنوان نگارش هنوز پشتیبانی می شود .به هرحال شما مجبورید برای قرار دادن یک فلش
پلیر در > <objectبه جلوتر بروید زیرا بیشتر کاربرها فلش پالگین را نصب کرده اند .من معتقدم که
مایکروسافت در نهایت > <videoرا پشتیبانی می کند ،چرا که همیشه برای اکثر کاربرها رسیدن به آخرین ورژن
17
canvasچیست؟
یکی از داغ ترین موضوعات HTML5موضوع canvasمی باشد ،اما دقیقا canvasچیست؟
canvasیک پارچه ی ساده بافته شده ی سنگین می باشد که برای ساختن قایق ،چادر ،کوله پشتی ،خیمه و
دیگر ابزاری که استحکام الزم دارند ،استفاده می شود .و همچنین توسط نقاشان به عنوان سطح نقاشی که روی
شاید این جوابی که شما به دنبال آن بودید ،نباشد.به هرحال canvasدر HTML5از کاربرد آن توسط هنرمندان
بوم نقاشی یک فضای خالی بدون رنگ ( حتی بدون سفید) است ،که قرار است با مداد و قلم موی جاوااسکریپت
البته که وجود بوم نقاشی تنها برای یک تصویر ثابت نیست .تصویر ثابت می تواند به سادگی به وسیله ی عنصر
قدیمی imgمورد بررسی قرار بگیرد .با جاوااسکریپت به عنوان قلم موی خود ،می توانید یک انیمیشن شاد و یا
اگر قبال انیمیشن های درخشانی ایجاد کرده اید و امید دارید که یک ورژن HTML5ایجاد کنید ،ابزاری وجود
دارند که در انجام آن به شما کمک می کنند .یکی از آنها Flash to HTML5می باشد.
HTML5مقوله ی خیلی بزرگی است ،آنقدر بزرگ که می توانید در مورد آن یک کتاب بنویسید .هدف من در این
آموزش تحت پوشش قرار دادن جزئیات مربوط به بوم نقاشی نیست ،بلکه تنها معرفی مختصری از آن است .به
18
به هرحال به یاد داشته باشید که مرز یک بوم نقاشی یک آبجکت ناپیداست .این برنامه فضایی را می گیرد اما
شما آن را نمی بینید .اجازه دهید یک سبک مرزی اضافه کرده و از IDبرای مرجع استفاده کنیم .هدف از IDاین
است که با استفاده از (document object model) DOMآن را قابل دسترس کنیم .بدون مرجع ،IDجاوا
اسکریپت ،در این مورد قلم موی شما ،هیچ ایده ای برای نقاشی روی بوم ندارد.
>#000000"></canvas
اگر در قسمت باال به جای یک تیره و مربع ،یک جمجمه با دو استخوان ضربدری می بینیدبه این معناست که مرورگر
شما بوم نقاشی را پشتیبانی نمی کند .ممکن است تمایل داشته باشید مرورگری دانلود کنید که با بوم نقاشی
آموزش Rectangle
قبل از فکر کردن در مورد ایجاد بازی های کنشی ،HTML5اجازه دهید با اساس آن شروع کنیم.
19
ابتدا روی دکمه ی قرمز کلیک کنید .اگر دکمه ی قرمز در بوم نقاشی نمی بینید ،احتماال تمایل داشته باشید
ندهید ،مرورگرهایی که بوم نقاشی را پشتیبانی می کنند ،آن را نادیده خواهند گرفت .شما می توانید فقط از
قانون شماره یک ،عنصر بوم نقاشی شما باید دارای یک IDباشد ،بنابراین می توانیم از جاوااسکریپت برای
قراردادن آن استفاده کنیم .قانون شماره دو ،هر بوم نقاشی دارای یک کانتکست می باشد .در واقع کانتکست
بوم نقاشی آن چیزی است که قرار است روی آن نقاشی بکشیم ،نه خود بوم.
;)"var c1 = document.getElementById("c1
;)"var c1_context = c1.getContext("2d
از لحاظ نگارش ،نه تنها کانتکست های دو بعدی ،بلکه سه بعدی آن نیز در دسترس می باشند .به هرحال
کانتکست سه بعدی که webGLنامیده می شود ،برای شما توسط W3Gیا WHATWGآورده نمی شودبلکه
توسط یک شرکت غیرانتفاعی به نام Khronos Groupارائه می شود .عالوه بر آن گوگل هم در دسامبر 1101
برای اطمینان بیشتر آینده ی این استاندارد ،تولید شگفت انگیز Body Browserرا آزاد کرد.
اجازه دهید از رنگ قرمز );" (fillStyle="#f00استفاده کرده و یک مربع قرمز با اضالع 100pxبکشیم.
;"c1_context.fillStyle = "#f00
20
.سیاه می باشد
fillRect(x, y, width, height) شروع می شود و اندازه یy وx مسطتیلی بکشید که از نقطه ی
height)
clearRect(x, y, width, height) طول راx و همچنین در عرضy وx ناحیه مشخص شده در مختصات
.روشن کنید
<div>
<canvas id="Canvas2" width="200" height="200" style="border:solid 1px #000000;"></canvas>
<div>
<button onclick="blue_square_2();return true;">Blue Square</button>
<button onclick="red_stroke_2();return true;">Red Square</button>
<button onclick="clear_rect_2();return true;">Erase Everything</button>
</div>
</div>
<script>
var c2 = document.getElementById("c2");
var c2_context = c2.getContext("2d");
function blue_square_2() { //Blue color square
c2_context.fillStyle = "#00f";
c2_context.fillRect(50, 50, 100, 100);
}
function red_stroke_2() { //Red color edges
c2_context.strokeStyle = "#f00";
c2_context.strokeRect(45, 45, 110, 110);
}
function clear_rect_2() { //Clear all
c2_context.clearRect(40, 40, 120, 120);
21
}
</script>
احتماال تمایل داشته باشید با انداختن سایه آن را زیباتر،از آنجایی که اکنون می دانید چطور مستطیل بکشید
اجازه. الزم است که فقط چند خط بیشتر به کد برنامه خود اضافه کنید. این کار خیلی راحت انجام می شود.کنید
. نگاهی داشته باشیم،دهید اول به چند ویژگی که در انداختن سایه دخیل هستند
<div>
<canvas id="c8" width="200" height="200" style="border:solid 1px #000000;">
</canvas>
</div>
<script>
var c8 = document.getElementById("c8");
var c8_context = c8.getContext("2d");
function draw_rectangle() {
c8_context.shadowOffsetX = 5;
c8_context.shadowOffsetY = 5;
c8_context.shadowBlur = 10;
c8_context.shadowColor = "DarkGoldenRod";
c8_context.fillStyle = "Gold";
c8_context.fillRect(20, 20, 100, 120);
}
window.onload = draw_rectangle();
</script>
22
قبل از کشیدن سایه الزم است ویژگی های آن، برای ترسیم یک شکل با سایه،همانطور که در کد باال می بینید
. در اینجا چگونگی کشیدن خط قهوه ای به شما ارائه شده است.ابتدا باید یک خط بکشیم
<div>
<canvas id="Canvas2" width="600" height="200" style="border:solid 1px #000000;"></canvas>
<div>
<button onclick="Vertical_line();return true;">Click me to draw a brown vertical line</button>
</div>
</div>
<script>
var c3 = document.getElementById("c3");
var c3_context = c3.getContext("2d");
function Vertical_line() {
c3_context.moveTo(300, 10);
c3_context.lineTo(300, 190);
c3_context.strokeStyle = "brown";
c3_context.stroke();
}
</script>
.strokeStyle و،stroke ،lineTo ، moveTo عبارتند از،روش هایی که واقعا در اینجا اتفاق می افتند
lineTo(x,y) . مختصات باشندy وx دوباره.از نقطه ی شروع به این نقطه خطی بکشید
beginPath . را فرا بخوانیدbeginPath باید،قبل از اینکه شروع به کشیدن خط جدید با رنگ متفاوت کنید
23
خط قبلی را باstroke بدون آن آخرین. نقش مهمی داردbeginPath که روش،نمایش آن را در زیر چک کنید
<div>
<canvas id="c4" width="600" height="200" style="border:solid 1px #000000;"></canvas>
<div>
<button onclick="Vertical_2px_Red();return true;">Vertical 2px Red line</button>
<button onclick="Vertical_1px_Blue();return true;">Vertical 1px Blue line</button>
<button onclick="Horizontal_2px_Green();return true;">Horizontal 2px Green line</button>
<button onclick="Clear_line();return true;">Erase Everything</button>
</div>
</div>
<script>
var c4 = document.getElementById("c4");
var c4_context = c4.getContext("2d");
function Vertical_2px_Red() {
c4_context.beginPath();
c4_context.moveTo(300, 10);
c4_context.lineTo(300, 190);
c4_context.strokeStyle = "Red";
c4_context.stroke();
}
function Vertical_1px_Blue() {
c4_context.beginPath();
c4_context.moveTo(350.5, 10);
c4_context.lineTo(350.5, 190);
c4_context.strokeStyle = "Blue";
c4_context.stroke();
}
function Horizontal_2px_Green() {
c4_context.beginPath();
c4_context.moveTo(100, 100);
c4_context.lineTo(500, 100);
c4_context.strokeStyle = "Green";
c4_context.stroke();
}
function Clear_line() {
c4_context.clearRect(1, 1, 600, 190);
}
</script>
یکی خط یک.شاید متوجه شده باشید که در نمایش باال دو دکمه برای کشیدن خط عمودی به شما کمک می کنند
. آنچه تفاوت ایجاد میکند مانند زیر است.پیکسلی و دیگری خط دو پیکسلی می کشد
24
;)c4_context.moveTo(300, 10
;)c4_context.lineTo(300, 190
و
;)c4_context.moveTo(300.5, 10
;)c4_context.lineTo(300.5, 190
برای کشیدن خطی با عرض یک پیکسل ،مختصات را باید به سمت راست یا چپ به 1.2پیکسل تغییر دهید .این
امر به خاطر این است که مقدار صحیح مختصات قرار است در حاشیه ی هر پیکسل درنظر گرفته شود .کشیدن
خطدر لبه باعث خواهد شد که خط در سراسر دو پیکسل مجاور گسترده شود .با تغییر مختصات 1.2پیکسل ،خط
هنوز بین دو پیکسل گسترده شده اما نیمی از هر پیکسل را اشغال می کند.
کشیدن خط یا اشکال ساده خسته کننده می باشد ،اجازه بدهید چند تصویر طراحی کنیم.
در نمایش باال فقط از کانتکست روش )( drawimageاستفاده کردم .به هرحال این روش می تواند 2 ،2و یا 1
استدالل داشته باشد .من سه عملکرد دارم که عبارتند از ( draw dragonکشیدن اژدها)draw smaller ،
( dragonکشیدن اژدهای کوچکتر) و ( draw dragon headکشیدن سر اژدها) و هرکدام از آنها 2،2و 1
3 arguments Imgاساس تصویر می باشد X .و yمختصات هستند تا آبجکت تصویر را قرار
5 arguments Imgاساس تصویر می باشد X .و yمختصات هستند تا آبجکت تصویر را قرار
drawImage دهند .طول و عرض اندازه ای می باشد که شما برای تصویر می خواهید ،می
25
طول و عرض. همچنان مختصاتی هستند تا آبجکت تصویر را قرار دهندy وX
<div>
<canvas id="c5" width="600" height="300" style="border:solid 1px #000000;"></canvas>
<div>
<button onclick="draw_dragon();return true;">Draw Dragon</button>
<button onclick="draw_smaller_dragon();return true;">Draw smaller dragon</button>
<button onclick="draw_dragon_head();return true;">Draw Dragon Head</button>
<button onclick="Clear_image();return true;">Erase Everything</button>
</div>
</div>
<script>
var c5 = document.getElementById("c5");
var c5_context = c5.getContext("2d");
var dragon = new Image();
dragon.src = 'images/chinese_dragon.png';
function draw_dragon() {
c5_context.drawImage(dragon, 100, 5);
}
function draw_smaller_dragon() {
c5_context.drawImage(dragon, 10, 5, 58, 100);
}
function draw_dragon_head() {
c5_context.drawImage(dragon, 0, 19, 69, 97, 300, 100, 103, 145);
}
function Clear_image() {
c5_context.clearRect(1, 1, 600, 300);
}
</script>
26
متن:بوم نقاشی
و درTextBaseline ،Font ،Strokestyle ،Fillstyle کلمات جادویی برای چاپ متن در بوم نقاشی عبارتند از
<div>
<canvas id="c6" width="600" height="200" style="border:solid 1px #000000;"></canvas>
<div>
<button onclick="showFillText();return true;">Fill Text</button>
<button onclick="showStrokeText();return true;">Stroke Text</button>
<button onclick="Clear_text();return true;">Erase Everything</button>
</div>
</div>
<script>
var c6 = document.getElementById("c6");
var c6_context = c6.getContext("2d");
function showFillText() {
c6_context.fillStyle = '#f00';
c6_context.font = 'italic bold 30px sans-serif';
c6_context.textBaseline = 'bottom';
c6_context.fillText('HTML5 is cool!', 50, 100);
}
function showStrokeText() {
c6_context.strokeStyle = "#003300";
c6_context.font = '40px san-serif';
c6_context.textBaseline = 'bottom';
c6_context.strokeText('HTML5 is cool?', 300, 100);
}
function Clear_text() {
c6_context.clearRect(1, 1, 600, 300);
}
</script>
fillText(text,x,y) . مشخص می شودfillstyle رنگ متن توسط.متن را با رنگ داخل آن چاپ می کند
strokeText(text,x,y) رنگ متن. متن چاپ می کندOutLine متن را فقط با رنگ در
27
textBaseline توضیح این مورد کمی گیج کننده است و برای آن به نمایش دیگری احتیاج
تصویری را که می بینید از WHATWGاقتباس کرده ام که توضیح کامل برای انواع خطوط پایه ی کتن می باشد.
آنچه را که باید مشاهده کنید این است که چگونه یک متن در ارتباط با آن خطوط پایه قرار می گیرد.
در اینجا یک خط خاکستری در y=100کشیده ام و قصد دارم هر لغت را در y=100قرار دهم ،اما با استفاده
از textbaselineمتفاوت.
;"c7_context.textBaseline = "top
;)c7_context.fillText('Top', 5, 100
;"c7_context.textBaseline = "bottom
28
اگر قصد دارید چیزی را در بوم نقاشی گسترش دهید و تمایل به پشتیبانی کاربرهایی داشتید که از IE8یا پایین
تر استفاده می کنند ،می توانید از یک جاوا اسکریپت با منبع آزاد به نام ExplorerCanvasاستفاده کنید .اما
در جریان باشید که وجود مسایل غیریکنواختی ممکن است باعث عصبانیت شما بشوند.
باز هم این معرفی مختصری از بوم نقاشی HTML5بود .هنوز ویژگی های جالب دیگری در مورد این بوم نقاشی
تکامل HTML5برای ساختن یک دنیای بهتر از وب می باشد .نوشتن کدهای کمتر (به ویژه جاوا اسکریپت)
خیلی خوب است ،در انتهای روز کارهای تکراری توسعه دهندگان وب باید توسط مرورگرها گرفته شود .پس از
همه ی اینها ،این مهم ترین دلیل کشف ماشین توسط انسان است.
آنچه در زیر می بینید لیستی از ویژگی های ورودی های جدید و انواع ورودی ها می باشد که باید همه را تک به
برای سالها فقط مشتی از انواعی به ما ارائه شد که در Inputمورد استفاده قرار می گیرند ،مانند متن ،رادیو ،چک
باکس ،پسورد ،فایل و سابمیت .در HTML5با انواع جدید روی بلوک سرگرمی بیشتری خواهیم داشت.
29
جستجو
اتربیوت Placeholder
Placeholderیک تکست باکس است که وقتی هیچ مقداری مشخص نشده و یا هیچ مرکزیتی وجود ندارد ،متنی
در زیر می بینید که اگر هیچ مقداری مشخص نشده باشد یک placeholderچگونه به نظر می رسد (آنچه شما
وقتی که تکست باکس روی چیزی تمرکز می کند ،متن خاموش می شود و شما باید متن خود را در آن قرار دهید.
در اینجا کد مربوط به placeholderرا می بینید .دیگر الزم نیست که جاوا اسکریپت و CSSبه ظاهر متن
رسیدگی کنند.
30
IE 10 ✓
Firefox 3.7 ✓
Safari 4.0 ✓
Chrome 4.0 ✓
Opera 11 ✓
احتماال در مورد پشتیبانی مرورگرها به جز، در صفحه ی وب شما فقط یک ویژگی خوب استplaceholder اگر
را پشتیبانیplaceholder ابتدا برای اینکه چک کنید مرورگر.در غیراینصورت مجبورید راه های اضافه ای بروید
را پشتیبانی نمی کنندplaceholder برای مرورگرهایی که. از جاوا اسکریپت استفاده کنید،می کند
{ )(demo.onfocus = function
)"if (this.style.color == "gray
} "{ this.value = ""; this.style.color = "black
}
{ )(demo.onblur = function
)"" == if (this.value
} ;{ this.style.color = "gray"; this.value = text_content
}
}
}
></script
عملکرد testAttributeدر باال برای امتحان کردن این است که آیا یک ویژگی از یک عنصر توسط یک مرورگر
پشتیبانی می شود .در این مورد می خواهیم بدانیم که آیا مرورگر شما ویژگی placeholderمربوط به عنصر
ورودی را پشتیبانی می کند .اگر placeholderپشتیبانی نمی شود ،من مرورگر را به اجرای چند کد جاوااسکریپت
مجبور می کنم تا چیزی با عنوان placeholderایجاد کند .شما می توانید از جاوااسکریپت خود استفاده کنید.
اگر از مرورگری استفاده می کنید که placeholderرا پشتیبانی می کند ،باید قار باشید عبارت support place
holderرا در تکست باکس ببینید .بالعکس اگر از مرورگری استفاده می کنید که placeholderرا پشتیبانی
نمی کند ،عبارت " "No Placeholder Supportرا در تکست باکس خواهید دید.
آموزش Autofocus
Autofocusیک ویژگی Booleanاز فیلد فرم می باشد که مرورگر را به تنظیم تمرکز روی آن ،وقتی که یک
صفحه بارگذاری می شود ،وامی دارد .اگر هنوز متوجه نشدید که چیست ،لطفا به گوگل رفته و بدون اینکه ابتدا
فقط رشته ی جستجوی خود را تایپ کنید .این مسئله به این خاطر است که گوگل به طور خودکار روی آن تکست
باکس تمرکز دارد (منظور من این نیست که گوگل از autofocusمربوط به HTML5استفاده می کند ).و با یک
32
<label for="name">Your name goes here :</label><input id="name" type="text" autofocus /> <br />
<label for="mothername">Your dog's name goes here :</label><input id="mothername" type="text" />
IE 10 ✓
Firefox 4 ✓
Safari 4.0 ✓
Chrome 3.0 ✓
Opera 10 ✓
با خطای کمتر باید دوباره از جاوااسکریپت استفاده کنید تا چک کنید آیاautofocus برای اجرای یک
متوجه می شود که مکان نما در، پشتیبانی کندautofocus اگر از.در زیر نمایش و همچنین یک تست میبینید
تمرکز روی دومین تکست باکس، و اگر مرورگر شما از آن پشتیبانی نمی کند.تکست باکس اول چشمک می زند
.قرار می گیرد
Support Autofocus :
No Autofocus Support :
<script>
function testAttribute(element, attribute) {
var test = document.createElement(element);
if (attribute in test) {
return true;
}
33
else
return false;
}
window.onload = function() {
if (!testAttribute('input', 'autofocus'))
document.getElementById('Text2').focus();
//for browser has no autofocus support, set focus to Text2.
}
</script>
<label for="Text1">Support Autofocus :</label><input id="Text1" type="text" autofocus /> <br />
<label for="Text2">No Autofocus Support :</label><input id="Text2" type="text" />
این فیلد گاهی با عنوان.فیلد مورد نیاز فیلدی می باشد که باید قبل از ارائه ی یک فرم با یک مقدار پر شود
لطفا به جدول زیر توجه.در مورد نگارش فقط اپرا و فایرفاکس تکست باکس این فیلد را پشتیبانی می کنند
.کنید
IE 10 ✓
Firefox 4 ✓
Safari 5
Chrome 20 ✓
Opera 9 ✓
به عنصر ورودی خودBoolean شما تنها باید یک ویژگی،تبدیل یک فیلد به فیلد مورد نیاز کامال ساده است
.اضافه کنید
<form>
<label for="movie">What is your favorite movie : </label>
<input name="movie" type="text" required />
<input type="submit" value="Submit" />
34
></form
تصویر زیر به ما نشان می دهد که اگر یک فیلد دراجرا خالی باشد ،چگونه فایرفاکس و اپرا در پر کردن مقدار آن
دیتا لیست به نظر می رسد شبیه پیشنهادهایی است که در هنگام تایپ در تکست باکس ارائه می شود ،مانند
آنچه در جستجوی گوگل مشاهده می کنید .البته که فقط به نظر شبیه می رسد ،اما حتی نزدیک به آن هم نیست.
دیتا لیست مانند لیست رو به پایین انتخاب می باشد ،اما کاربر عالوه برآنچه در لیست ارائه شده می تواند
آزادانه هرچه می خواهد در تکست باکس قرار دهد .در مورد لیست انتخاب هر چیزی در قسمت کاربر قرار می
گیرد .قبل از اینکه به کد و نمایش برسیم ،اجازه بدهید ببینیم چه مرورگرهایی آن را پشتیبانی می کنند.
Safari 5
حاال ببینیم چطور یک دیتالیست HTML5را تکمیل می کنیم که کامال ساده است.
35
Country :
اگر مرورگری ندارید که آن را پشتیبانی کند ،در اینجا می توانید ببینید که در فایرفاکس چگونه به نظر می رسد.
آموزش search
اطالعات وب هر ثانیه در حال رشد است .از آنجایی که گوگل جستجو ) (searchرا در اواخر دهه ی 11دوباره
تعریف کرد ،یافتن اطالعات از طریق مسیرهای سازماندهی شده از بین رفته است .امروزه می توانیم یک سرچ
باکس ) (search boxتقریبا در محتوای همه ی وب سایت های غنی قرار دهیم ،این کار حتی در بالگ شخصی
در HTML5می توانیم یک تکست باکس را به عنوان سرچ باکس معرفی کنیم .در واقع آنچه می توانید برای
با انجام چنین کاری ان تظار نداشته باشید که مرور گر به طور خودکار آن را با یک موتور جستجو ترکیب کند .این
تقریبا مانند یک تکست باکس عادی می باشد>" ،<input type="textاما مرورگر به طور خودکار کمی آن را
در نگارش فقط ( apple safariآزمایش شده با )Safari 5و گوگل کروم (آزمایش شده با کروم )8این کار را
انجام می دهند.
Firefox 13
36
Opera 9
search
همانطور که ممکن است متوجه شده باشید وقتی چیزی در سرچ باکس می نویسید ،یک ضربدر آبی در در تکست
باکس ظاهر می شود .وقتی روی این ضربدر کلیک کنید ،رشته ی ورودی شما پاک شده و می توانید تایپ یک
می توانید ویژگی های بیشتری به آن اضافه کنید ،مانند placeholderو .autofocus
37
ایمیل ،شماره تلفن و وب سایت urlاز متداول ترین جزئیات تماس هستند که الگوهای ورودی خاص خود را
دارند .ایمیل دارای عالمت @ می باشد و .net ،.comو یا چیز دیگری به پایان می رسد .وب سایت حداقل
دارای یک دات در وسط است و اکثر آنها با .comبه پایان می رسند و شماره تلفن هم فقط عدد است ،بدون
گیج نشوید زیرا این انواع حداقل هنوز مربوط به اعتبار سنجی داده نیستند .شما مجبور خواهید بود از همان
در جدول زیر می توانید ببینید چگونه به نظر می رسد ،ممکن است سعی کنید در هر کدام از فیلدها چیزی وارد
کنید و در مقایسه با تکست باکس ساده ،چیز خاصی نخواهید دید (>.)<input type="text" /
html-5.my demo
Email Address
Web Site
Phone Number
به هرحال تفاوت هایی در چگونگی رفتار صفحه لمسی مرورگر محور با این فیلدها وجود دارد.
در زیر صفحه ی مربوط به (iOS 4.2) iphone 4و (android 2.2) HTC Desireرا در زمان تمرکز هر فیلد می
بینید.
38
همانطور که می بینید ،وقتی روی فیلد شماره تلفن تمرکز می کنید ،مرورگر به شما یک صفحه ی شماره گیر ارائه
می دهد iphone ،حتی به جلوتر رفته تا قرار دادن ورودی ایمیل و وب urlرا ساده تر کند ،هر ایمیل دارای یک
از طرف دیگر ورودی صفحه کلید اندروید من به انداره ی آیفون کاربر پسند نیست.
39
در خاتمه اینکه دلیلی وجود ندارد که شما از اکنون از این انواع استفاده نکنید ،چرا که مرورگرهایی که انواع
جدید را نمی شناسند با آنها مانند یک متن ساده رفتار می کنند.این امر صفحه ی شما را با کاربرهای موبایل
دوستانه تر می کند و برای ماشین خواناتر می کند .این ویژگی وب معنایی می باشد.
کنترل اسالیدر یک کاربر اینترفیس ) (user interfaceبرای تنظیم یک عدد در یک دامنه بسیار مشهود می
باشد .یک نمونه اسالیدر معموال در انتخاب گر رنگ ) (color pickerیافت می شود ،جایی که می توانیم پیکان
40
قبال برای ایجاد اسالیدر در صفحه ی وب بین جاوا اسکریپت یا فلش یکی را به عنوان راه حل انتخاب می
کردیم HTML5 .برای ذخیره ی هزاران بایت در کد شما اینجاست .با نوع جدید ورودی ،کنترل اسالیدر
طبق معمول طراحان هر مرورگر در اجرای کاربر اینترفیس سلیقه ی مربوط به خود را دارند .مجددا تمایل دارم به
شما یک گالری از اسالیدهای متنوعی نشان دهم که مرورگرهای مختلف در ویندوزها اجرا می کنند.
41
مرورگرها >" <input type="rangeرا اجرا نمی کنند ،طوریکه اسالیدر به سادگی آن را مانند یک تکست باکس
مرورگرهایی که >" <input type="rangeرا مانند اسالیدر اجرا می کنند در جدول زیر ارائه شده اند.
Firefox 13
نوع دامنه دارای ویژگی های جالبی است که شاید تمایل داشته باشید یاد بگیرید:
Attribute Descriptions
مقدار یک ویژگی متداول از عنصر ورودی می باشد .مقدار می تواند هر عدد ممیزی معتبری باشدvalue ،
نه اینکه لزوما عدد صحیح باشد .مقدار پش فرض عبارت است از کمترین مقدار به اضافه ی نیمی
42
این فاکتور مقیاس گام اسالیدرمی باشد :مقدار پیش فرض یک است و فقط اعداد صحیح مجاز step
می باشند ،مگر اینکه کمترین مقدار عدد غیر صحیح باشد.
لیست همان دیتالیست در فصل قبلی می باشد .دیتالیست می تواند با نوع دامنه ی ورودی یکی list
شود ،به هرحال هیچ یک از مرورگرها این ویزگی را در نگارش اجرا نکرده اند.
اجازه دهید بیشترین مقدار ،کمترین مقدار و گام فاکتور را مشخص کنیم.
در HTML5می توانید عددی را به عنوان Spinnerدر فیلد ورودی داشته باشد که پیکان هایی به سمت باال و
پایی در قسمت راست تکست باکس وجود دارند که برای افزایش یا کاهش این عدد به کار می روند .لطفا گالری
در امر نگارش مرورگرهایی که در ویندوز این کار را انجام می دهند اپرا و گوگل کروم می باشند.
IE 9 Beta
43
Firefox 13
اگر شما از گوگل کروم 8استفاده می کنید یک مقدار غیر عددی مانند b ،aو یا ? را امتحان کنید ،کروم به شما
اجازه چنین کاری نخواهد داد اما اجازه گذاشتن eرا می دهد ،چرا چنین است؟! زیرا eمی تواند بخشی ازیک عدد
از طرف دیگر اپرا به شما اجازه می دهد هرچه می خواهید در فیلد وارد کنید.
ما باید برخی ویژگی هایی را که می توانیم در نوع عدد ورودی داشته باشیم کشف کنیم.
Attributes Descriptions
value Valueمقدار پیش فرض جعبه ی ورودی است وقتی که یک صفحه بارگذاری می شود .این
ویژگی متداول برای عنصر ورودی می باشد ،بدون توجه به نوعی که استفاده می کنید.
min کمترین مقدار شما از عدد :من باید کمترین مقدار را 1تعیین کنم چرا که عدد منفی در تعداد
step فاکتور مقیاس گام :اگر این ویژگی مشخص نشده باشد مقدار پیش فرض 0می باشد.
اگر شما یک شرکت نرم افزار هستید و نرم افزار شما توسط تعدادی مجوز کاربر فروخته شده است ،حداقل
مجوزهایی که فروخته اید 2می باشد و این عدد 2تا 2تا افزایش می یابد و بیشترین مجوزی که می توانید به
44
اگر برای افزایش و یا کاهش مقدار از جاوااسکریپت استفاده کردید ،راه حل آن اینجاست.
–spinner.valueAsNumberمقدار ورودی را به جای یک رشته به عنوان عدد ممیزی شناور گزارش می دهد.
یک Spinnerبا پیکان های نسبتا کوچک رو به باال و پایین ممکن است زیاد برای لمس توسط انگشتان برای یک
عملکرد لمسی مناسب نباشند .مرورگرهای آیفون و اندروید 1.1هردو >"<input type="numberرا به عنوان
یک تکست باکس نرمال اجرا می کنند اما به کاربرها یک صفحه کلید اعداد برای وارد کردن داده ها ارائه می
دهند.
صفحه ی آیفون در سمت چپ و صفحه ی ) HTC Desire (android 2.2در سمت راست ارائه شده است.
45
فیلد تاریخ و زمان به راحتی به شکل های مختلف وب پیدا می شوند .برنامه های نمونه مانند رزرو بلیط ،تعیین
متداول ترین راه استفاده برای ورودی تاریخ استفاده از چیننده ی تاریخ جاوااسکریپت می باشد .باور می کنید؟
فقط چیننده ی تاریخ جاوااسکریپت گوگل .بیشتر چیننده های تاریخ از یک تقویم استفاده می کنند تا به کاربر
اجازه انتخاب تاریخ مورد نظر را داده و آن را در تکست باکس مربوط به تاریخ قرار دهد.
در نگارش تنها مرورگری که کامال ورودی تاریخ و زمان را پشتیبانی می کند اپرا ) (v11و گوگل کروم ) (v20می
باشند .در HTML5کار مرورگر این است که به کاربر اطمینان دهد که می تواند تنها یک رشته تاریخ معتبر در
انتخاب یک تاریخ از تقویم تنها راه وارد کردن تاریخ نیست ،گرچه محبوبترین راه اجرا می باشد.
مشخصات HTML5چیزی در مورد نمایش یک تقویم برای ورودی تاریخ ذکر نکرده است.
46
IE 9 Beta
Firefox 13
Safari 5
اگر روی کامپیوتر خود اپرا ورژن 00و گوگل کروم ( 11و البته ورژن های باالتر دارید) در مورد چک کردن آن راحت
خواهید بود .اگر مرورگری ندارید که آن را پشتیبانی کند ،تصویر زیر آن چیزی است که به شما نشان داده خواهد
شد.
با پشتیبانی HTML5طراح وب برای داده ی پایه ی تاریخ نیازی به دانلود کنترل جاوااسکریپت ندارد .دقیقا آنچه
47
یک بار دیگر HTML5زندگی مارا ساده تر کرده است .شما فقط داده ی تاریخ وارد نمی کنید ،داده های تاریخ و
زمان در ارتباط با هم هستند که می توانید با هم وارد کنید .البته از زمانی که شرکت های مرورگر تصمیم گرفتند
واضح است که این مرورگر داخلی چیننده ی تاریخ می باشد .شما می توانید تنها یک تاریخ خاص را از تقویم
انتخاب کنید.
به جای انتخاب تاریخ می توانید یک هفته را انتخاب کنید .لطفا به شماره هفته در سمت چپ تقویم توجه کنید.
48
شما حتی می توانید چیننده ی ماه هم داشته باشد .در اینجا تقویمی را مشاهده می کند که به شما اجازه .2
49
می توانید تاریخ و زمان را با زمان محلی انتخاب کنید .مقدار در زمان UTCنمایش داده می شود.
در مقایسه با زمان UTCمقدار ورودی زمان تاریخ را با زمان محلی نشان می دهد.
50
اجازه بدهید به ویژگی های مرتبط که احتماال استفاده می کنیم ،نگاهی داشته باشیم.
Attributes Descriptions
Valueمقدار پیش فرض باکس ورودی می باشد زمانی که در ابتدا بارگذاری می شود .این یک value
ویژگی متداول برای عنصر >، <inputبدون توجه به نوع مورد استفاده ی شما ،می باشد.
step فاکتور مقیاس گام :انواع مختلف ورودی مقدار گام پیش فرض خود را دارد.
51
آموزش Color
در HTML5می توانیم به سادگی ورودی رنگ را با >" <input type="colorداشته باشیم .تکست باکس فقط
باید مقدار رشته ی به اصطالح ( simple colorرنگ ساده) را با حروف کوچک داشته باشد ،به عنوان
مثال #ff0000برای رنگ قرمز #000000 ،برای رنگ سیاه و #ffffffبرای رنگ سفید.
در نگارش تنها مرورگری که ورودی رنگ را پشتیبانی می کند ،اپرا 00می باشد.
IE 9 Beta
Firefox 13
Safari 5
با نوع ورودی رنگ دیگر نیازی به چیننده ی رنگ پیچیده ی جاوااسکریپت ندارید .یک خط ساده از کد مانند زیر
52
اگر به اندازه ی کافی خوش شانس باشید تا مرورگری داشته باشید که ورودی رنگ را پشتیبانی کند ،لطفا در
53
زمانی (در سال ) 0111مردی به نام تیم برنرس لی دنیای پهناور وب را به وجود آورد که امروز همه ی ما آن را
دوست داریم .اشتباه نکنید ،او اینترنت را اختراع نکرد ،اما HTMLو پروتکل HTTPرا چرا .سال ها بعد او
استاندارد HTMLو چند تکنولوژی مربوط دیگر را نظارت می کرد .او تا به امروز هنوز مدیر W3Cمی باشد.
بیشتر انسان های بزرگ با رویاهایشان حرکت می کنند ،آقای تیم برنرس لی هم از این امر مستثنا نیستند .او
در بخش اول وب ابزاری قوی تر برای همکاری بین انسان ها میشود .من همیشه فضای اطالعات را جایی تصور
کرده ام که هرکسی به آن دسترسی سریع و شهودی دارد ،که نه فقط آنها را فهرست کند بلکه ایجاد هم بکند.
نخستین برنامه ی worldwidewebتقریبا با یک صفحه ی خالی باز شد که برای یادداشت های کاربر آماده بود.
من و رابرت کایلو زمان زیادی را صرف آن کردیم ،نه به خاطر اینکه به دنبال مطالب زیادی بودیم ،بلکه به این
خاطر که ایده هایمان را می نوشتیم و به اشتراک می گذاشتیم .عالوه بر این رویای ارتباط بین انسان ها از طریق
دانش مشترک باید برای همه ی گروه ها ممکن باشد ،یک تعامل الکترونیکی آسان همانطور که اکنون با افراد به
در بخش دوم رویا ،همکاری ها با کامپیوترها توسعه پیدا می کند .ماشین ها قادر به تجزیه ی همه ی داده های
وب می شوند ،محتوا ،لینک ها و داد و ستد بین مردم و کامپیوترها .یک وب معنایی ) (semantic webکه باید
این امر را ممکن سازد هنوز باید ظهور کند ،اما وقتی این اتفاق افتاد روز به روز مکانیزم های تجارت ،ادارات و
زندگی روزانه ی ما توسط ماشین ها انجام می شود ،صحبت کردن با ماشین ها و رها کردن انسان ها برای ارائه ی
الهام و شهود .آنچه عوامل هوشمند برای سالها تعریف کردند سرانجام ظاهر می شود .این ماشین قابل فهم وب
ازطریق اجرای مجموعه ای از پیشرفت های تکنیکی و توافق های اجتماعی که اکنون در حال آغاز هستند ،اتفاق می
افتد.
54
زمانی که رویا عملی شود ،وب مکانی خواهد بود که در آن هوس یک انسان با استدالل یک ماشین در همنشینی
با یکدیگر یک ترکیب ایده آل و قدرتمند را به وجود می آوررند .برای عملی کردن یک رویا کارهای زیادی الزم
است .وب یک رویای دور است و فقط یک وضعیت چند بخشی از یک ساختار می باشد که چگونگی رسیدن به رویا
خالصه اینکه هدف وب معنایی ساخت یک وب قابل فهم نه تنها توسط انسان بلکه توسط ماشین ،میباشد (نه
ماشینی با هوش مصنوعی) .با آن تبادل واشتراک اطالعات خیلی موثرتر خواهد بود.
HTML5مشتی از عناصر درون خطی جدید را ( ازقبیل )abbr ،strong ،spanبه خانواده ی HTMLمعرفی می
کند ،که در واقع دیگر عنصر درون خطی نامیده نمی شود بلکه معنا شناختی در سطح متن نامیده می شود.
§ ><mark
§ ><time
§ ><meter
§ ><progress
عالوه بر عناصر در سطح متن ،مجموعه ای از عناصر برای انسداد و عناصری برای تقسیم بندی محتوا وجود دارند.
با افزودن این عناصر جدید ،هدف ساختن یک صفحه ی جدید پرمعناتر می باشد ،به جای غرق شدن با گروه های
§ ><section
§ ><header
§ ><footer
§ ><nav
§ ><article
§ ><aside
55
عالمت عنصر > <markاجرای متنی را در یک داکیومنت نشان می دهد که به هدف مرجع و با توجه به ارتباط آن
اساسا برای معطوف کردن توجه خواننده به بخشی از متن استفاده می شود که خواننده ممکن است آن بخش را
نادیده بگیرد.
برای عالمت دار کردن بخشی از متن آن را بین > <mark></markقرار دهید.
در نگارش هر مرورگری > <mark></markرا برای highlightمتن اجرا نمی کند ،برای اطمینان خاطر بیشتر بهتر
عنصر زمان یا یک ساعت را در 11ساعت نشان می دهد و یا یک تاریخ مشخص را در تقویم مسیحی (Gregorian
برای نمونه شما می توانید این کار را انجام دهید تا یک تاریخ مشخص را نشان دهید.
We were celebrating our daugther's <time datetime="2004-07-13">birthday</time> in that seafood restaurant.
از آنجایی که در مثال زیر زمان در فرمت 11ساعتی به کاربر نمایش داده شده است ،ما ویژگی datetimeرا برای
56
جمله ی باال با استفاده از تکنولوژی طراحی شده که طراحی دوباره ی زمان ها را پشتیبانی می کند ،می تواند به
یا
از یک طرف اگر مقدار زمان در فرمت 11ساعته مشخص نشده باشد باید ساعت آن را در 11ساعت مشخص
کنید.
ما از روز شنبه تا دوشنبه از ساعت > <time datetime="08:00">8am</timeتا ساعت > <time datetime="18:00">6pm</timeآزاد
هستیم.
برای یک زمان و تاریخ مشخص چگونگی کار در اینجا نشان داده شده است.
شما ممکن است کتاب های خود را در >" 16 <time datetime="2011-01-16T06:00Zژانویه ی 2011در > 6pm</timeجمع کنید.
یه طور مشابه شاید الزم باشد یک تاریخ و زمان درست را با منطقه ی زمانی نیز مشخص کنید.
مشخصه ی HTML5به ما می گوید که اگر تاریخ و زمان دقیق معلوم نیستند از عنصر زمان استفاده نکنیم .به
عنوان مثال ،من میدونم شما در تابستان گذشته چه کاری انجام دادید .یا او را از 0181می شناختم.
ممکن است از خود بپرسید با استفاده از عنصر زمان در انتهای روز چه حاصل می شود .بسیار خوب با همه ی این
تالش ها سعی می کنیم محتوای ماشین خود را قابل خواندن کنیم .تصور کنید روزی بتوانیم "February 22,
عالوه بر ویژگی datetimeعنصر زمان دارای ویژگی های " "pubdateو " "valueAsDateمی باشد.
57
Attributes Descriptions
مقدار زمان یا تاریخ و یا زمان تاریخ .اگر وجود داشته باشد ،تاریخ یا زمان را مشخص می dateTime
کند .در غیر اینصورت تاریخ یا زمان توسط عناصر محتوا ارائه می شوند.
تاریخ انتشار .یک ویژگی Booleanمی باشد که به این معناست که الزم نیست مقداری pubDate
برای آن قرار دهید .اگر مشخص باشد که یعنی تاریخ انتشار یک مقاله )> ، (<articleاگر
عنصر زمان در داخل بلوک مقاله نباشد به این معناست که این تاریخ ،تاریخ انتشار کل
پرونده می باشد.
یک ویژگی readonlyمی باشد ،و آبجکت تاریخ را که مشخص کننده ی تاریخ و زمان خاصی valueAsDate
Pubdateمی تواند برای ورودی وبالگ و یا اخبار مقاله به کار رود .برای مقاله ای که در 10ژانویه ی 1100منتشر
Meterیک عنصر جدید در HTML5می باشد که مقدار یک دامنه ی شناخته شده را به عنوان وسیله ی اندازه
گیری نشان می دهد .کلمه ی کلیدی در اینجا دامنه ی دامنه ی شناخته شده می باشد ،که بدبن معناست که
شما فقط زمانی اجازه ی استفاده از آن را دارید که کامال از مقدار حداقل و مقدار حداکثر آگاه باشید.
58
عالوه بر این نباید از این مقیاس اندازه گیری برای نشان دادن یک پیشروی ،مثال پیشروی 81درصد استفاده
در نگارش فقط گوگل کروم 8و اپرا 00عنصر meterرا در یک مقیاس انداره گیری قابل رویت اجرا می کنند.
بنابراین مشخص کردن مقدار متنی بین برچسب های meterمفید می باشد ،و مرورگرها meterرا به عنوان یک
مقیاس اندازه گیری که بتواند به سادگی مقدار را در یک متن ساده نشان دهد ،اجرا نمی کنند.
بدون تالش شما برای مشخص کردن مقدار متنی بین برچسب های ،meterکاربر تنها یک فضای خالی در مرورگرها
IE 9 Beta
Firefox 13
Safari 5
59
عالوه بر ویژگی های minو maxو valueویژگی های دیگری وجود دارند که می توانید برای اجرای وسیله ی
Attributes Descriptions
value نیاز است که برای استفاده از عنصر meterمقدار را به عدد مشخص کنید .این یک امر الزم می
low این گزینه انتخابی است ،مگر اینکه شما تمایل داشته باشید مقدار پایین دامنه را نشان دهید.
high این گزینه انتخابی است ،مگر اینکه شما تمایل داشته باشید مقدار باالی دامنه را تعریف کنید.
optimum این گزینه کامال انتخابی است و برای مشخص کردن یک نقطه ی مطلوب در یک دامنه به کار می
رود.
عنصر جدید پیشروی به نظر می رسد شبیه به عنصر meterمی باشد و برای نشان دادن پیشروی یک عمل ایجاد
شده است .پیشروی می تواند مشخص باشد یا نا مشخص .یعنی اینکه شما می توانید از عنصر پیشروی برای
نشان دادن یک پیشروی استفاده کنید که حتی نمی دانید چقدر از کار مربوط به آن باقی مانده است.
گیج کننده به نظر می رسد ،چطور می توانید بدون اینکه بدانید پایان کجاست ،میزان پیشروی را بگویید.
اولین امکان ،کار هنوز حتی شروع هم نشده ،بنابراین یا 1درصد است یا 1.1110درصد که اصال مطرح نیست.
دومین امکان اینکه ،مقدار حقیقی پیشروی از طرف برخی سرورها یا فرایندهای آپدیت کردن آن در انتظار است.
یکی از استفاده های عنصر پیشروی ،نشان دادن پیشروی فایل دانلود می باشد.
><section
><p>Progress: <progress id="p" max=100><span>0</span>%</progress></p
><script
60
برای مشخص کردن پیشروی ،همیشه می توانید مقدار پیشروی را در قسمت valueتنظیم کنید .یک
ویژگی maxوجود دارد که می توانید حداکثر مقدار پیشروی را نشان دهید .در مقایسه با عنصر ،meter
ویژگی minوجود ندارد ،چرا که همیشه حداقل میزان پیشروی 1می باشد.
در نگارش نیز فقط اپرا 00و گوگل کروم 8عنصر پیشروی را در قالب یک نوار پیشروی پشتیبانی می کنند.
IE 9 Beta
Safari 5
اگر از مرورگری که پیشروی را پشتیبانی کند ،استفاده نمی کنید ،تصویر زیر نشان می دهد که پیشروی در گوگل
61
ویژگی های خوانده های - W3Cعنصر بخش ) (sectionیک بخش کلی از یک داکیومنت یا یک برنامه را مشخص
می کند .در این متن ،بخش گروه بندی معنایی محتوا با یک تیتر می باشد.
در تصویر زیر قسمت های مشخص شده بهترین استفاده برای > <sectionرا نشان می دهند.
توجه داشته باشید که عنصر sectionدر اینجا برای جایگزین کردن عنصر divبه کار نمی رود.
.0برای یک محتوای منسجم :شما نباید از بخش برای محتوا در RSS feedاستفاده کنید .اگر درحال ایجاد وب
سایت وبالگ می باشید از عنصر sectionبرای ورودی وبالگ خود استفاده نکنید ،بلکه باید از عنصر Article
استفاده کنید .به هرحال یک عنصر Articleمی تواند دارای عناصر sectionنیز باشد.
.1صرفا به هدف : Layoutاز عنصر > <divبه عنوان ظرف عمومی به هدف طراحی استفاده کنید.
><section
><h1>Application</h1
62
><ul
><li>Education</li
><li>Entertainment</li
><li>Family</li
><li>Games</li
><li>News and Weather</li
></ul
></section
شاید متوجه شده باشید که من از > <h1برای عنوان در عنصر بخش استفاده میکنم .عنصر بخش در واقع نوعی
همیشه زیرمجموعه ای از نزدیک ترین پیش گام آن مانند > <article> ،<bodyیا یک عنصر > <sectionدیگر
می باشد.
شما به استفاده از h1تا h6در داخل عنصر بخش تشویق می شوید ،بدون اینکه در مورد آنچه در بیرون بخش
می توانند > <hgroup> ،<headerو > <footerخود را داشته باشند.
بنابراین اگر آن را مانند زیر بنویسید بسیار خوب است .درواقع شما برای انجام چنین کاری بسیار تشویق
می شوید.
><body
><h1>Apples</h1
><p>Apples are fruit.</p
><section
><h1>Taste</h1
><p>They taste lovely.</p
><section
><h1>Sweet</h1
><p>Red apples are sweeter than green ones.</p
></section
></section
><section
><h1>Color</h1
><p>Apples come in various colors.</p
></section
></body
63
اگر شما در حال طراحی داکیومنت HTML5می باشید ،پیشنهاد می کنم HTML5 Outlinerرا مشاهده کنید،
تقریبا همه ی وب سایت های مدرن یک بخش تیتر دارند که در باالی هر صفحه در داخل وب سایت نشان داده
در واقع آنچه گفتم یک شوخی بود ،زیرا headerابزاری بیشتر از آن می باشد .ما در استفاده از headerبرای
به اصطالح تیتر اصلی یک وب سایت تشویق می شویم .به هرحال منظور من این نیست که New York Timesاز
عنصر headerاستفاده کرد ،بلکه منظورم این است که New York Timesمی تواند از این عنصر استفاده
کند.
><body
><header
><h1>Little Green Guys With Guns</h1
><nav
><ul
><li
><a href="/games">Games</a
><li
><a href="/forum">Forum</a
64
<li>
<a href="/download">Download</a>
</ul>
</nav>
</header>
<p>You have three active games:</p>
<!-- this is still part of the subsection entitled "Games" -->
...
میheader بلکه. فقط برای تیترهای اصلی وب سایت ها به کار می رودheader به هرحال نباید تصور کنیم که
همان طور که هر مقاله ای تیتر،تواند به عنوان یک تیتر برای ورودی یک وبالگ یا یک مقاله ی خبری استفاده شود
<article>
<header>
<h1>Military Offers Assurances to Egypt and Neighbors</h1>
Published : <time datetime="2011-02-13" pubdate>February 13 2011</time>)
</header>
<p>
CAIRO - As a new era dawned in Egypt on Saturday,
the army leadership sought to reassure Egyptians and
the world that it would shepherd a transition to civilian
rule and honor international commitments like the peace treaty with Israel.
</p>
</article>
65
نه تنها این مورد ،بلکه آنچه در بخش قبل در مورد sectionبیان کردیم که هر sectionاحتماال باید تیتر خود را
داشته باشد.
><section
><header
><h1>Application</h1
><h2>Paid iphone apps</h2
></hgroup
></header
><ul
><li>Education</li
><li>Entertainment</li
><li>Family</li
><li>Games</li
><li>News and Weather</li
></ul
></section
عنصر headerمعموال شامل عناصر دیگری هم می شود ( مانند h1و h2و )hgroupکه به هرحال ضروری
مشابه آنچه در قسمت sectionیاد گرفتیم header ،هم دارای Outlineمربوط به خود می باشد .شما می توانید
به راحتی h2 ،h1و h6 ...خود را تعریف کنید بدون اینکه نگران آنچه در مورد قبلی ها تعریف شده ،باشید.
مشابه ،headerعنصر footerنیز به پاورقی یک صفحه ی وب اشاره می کند .اکثر اوقات footerمی تواند به
به طور کل footerشامل اطالعاتی در مورد یک بخش است ،اطالعاتی ازقبیل نویسنده ی متن ،لینک های مربوط
66
لطفا این تصور را نداشته باشید که برای هر وب فقط می توانید یک footerداشته باشید .بلکه برای هر بخش یا
67
site wide هستند و یک عنصرfooter لطفا به مثال زیر دقت داشته باشید که در آن دو مقاله دارای
<!DOCTYPE html>
<html>
<head>
<title>The Ramblings of a Scientist</title>
<body>
<h1>The Ramblings of a Scientist</h1>
<article>
<h1>Episode 15</h1>
<video src="/fm/015.ogv" controls preload>
<p><a href="/fm/015.ogv">Download video</a>.</p>
</video>
<footer>
<!-- footer for article -->
<p>Published <time pubdate datetime="2009-10-21T18:26-07:00"></time></p>
</footer>
</article>
<article>
<h1>My Favorite Trains</h1>
<p>I love my trains. My favorite train of all time is a Kof.</p>
<p>
It is fun to see them pull some coal cars because they look so
dwarfed in comparison.
</p>
<footer>
<!-- footer for article -->
<p>Published <time pubdate datetime="2009-09-15T14:54-07:00"></time></p>
</footer>
</article>
<footer>
<!-- site wide footer -->
<nav>
<p>
<a href="/credits.html">Credits</a>-
<a href="/tos.html">Terms of Service</a> -
<a href="/index.html">Blog Index</a>
</p>
</nav>
<p>Copyright ©2015 Tahlildadeh</p>
</footer>
</body>
</html>
68
همانطور که از نام آن پیداست ،عنصر جدید navبرای مسیریابی استفاده می شود .عنصر navوسیله ای است
لینک های مسیریابی یک وب سایت ،اکثرا در باال و یا نوارهای کناری سایت قرار گرفته اند و گاهی اوقات در
به هرحال همه ی گروه های لینک ها در یک صفحه الزم نیست در عنصر navقرار بگیرند – تنها قسمت هایی
که دارای بلوک های مسیریابی مهمی هستند مناسب برای عنصر navمی باشند .به ویژه در مورد footerها
متداول است که لیست مختصری از لینک های صفحات مختلف یک سایت داشته باشند ،از قبیل ترم های
سرویس ،صفحه ی اصلی و صفحه ی کپی رایت .عنصر footerبه تنهایی و بدون navکافیست.
69
در زیر مثالی را می بینید که چگونگی استفاده از عنصر navرا توضیح می دهد ،که معموال با عنصر ulبرای لینک
امروزه وب دارای اقیانوسی از مقاالت خبری و مطالب وب می باشد .که به W3Cدلیل خوبی برای تعریف عنصری برای مقاله
عنصر articleوسیله ای برای مقاله ی یک وب می باشد .داشتن بیشتر از یک مقاله در یک صفحه ی وب بسیار متداول
است.
آنچه در زیر می بینید یک صفحه ی وب می باشد که دارای بیشتر از یک مقاله می باشد .به هرحال وقتی که روی عنوان
70
ما باید از محتوای مقاله ای استفاده کنیم که فکر می کنیم قابل انتشار است .درست مانند اخبار و مطالب وب که می
توانیم در RSS feedبه اشتراک بگذاریم .یک articleمی تواند در یک articleدیگر قرار بگیرد .مثالی از این نمونه
کامنت های ارسال شده ی کاربر در مورد عنوان یک وبالگ می باشد .عناصر داخلی articleنشان می دهند که مقاالتی که
در صدر هستند در اتباط با محتوای مقاالت بیرونی می باشند .به عنوان مثال تیتر یک وبالگ در یک سایت که پذیرنده ی
کامنت های کاربرها می باشد به عنوان یک مقاله ی دیگر در داخل مقاله برای تیتر وبالگ قرار گرفته است.
منظور از یک مقاله فقط محتوای آن نمی باشد .شما می توانید در یک مقاله headerو footerنیز داشته باشید .از
آنجایی که هر مقاله باید یک تیتر داشته باشد ،داشتن عنصر headerبسیار متداول است.
><body
><h1>My blog</h1
><article
><header
><h1>The Very First Rule of Life</h1
><p><time pubdate datetime="2009-10-09T14:28-08:00"></time></p
71
></header
>a<p
If there's a microphone anywhere near you, assume it's hot and
sending whatever you're saying to the world. Seriously.
></p
><p>...</p
><footer
><a href="?comments=1">Show comments...</a
></footer
></article
><body
در HTML5داشتن h1تا h6در یک articleبسیار خوب است .از آنجایی که یک articleتقسیم بندی محتوا می باشد،
در مورد ما articleزیرمجموعه ای از یک بدنه می باشد و می تواند Outlineخود را داشته باشد .با این توضیحات بهتر
این است داکیومنت وب خود را حفظ کنیم ،زیرا الزم نیست به Outlineآن خارج از مقاله فکر کنید.
عنصر asideبخشی است که تا حدی به محتوای اصلی مربوط می شود ،اما می تواند از آن جدا شود .در این آموزش
من از عنصر asideبرای نکات مربوط به موضوع استفاده می کنم .آنچه در بخش زرد رنگ بیان می شود ،اطالعات
اضافه ای به خواننده ارائه می دهد ،اما خواننده می تواند بدون خواندن بخش زرد رنگ به خواندن مطلب ادامه
72
<article>
<p>
As of writing, the only web browser completely support date time input is Opera.
In HTML5, it is the job of web browser to ensure user can only enter a valid date time string
into the input textbox.
</p>
<aside>
Picking a date from Calendar is not the only way to input a date value even though it's the most popular
implementation.
HTML5 specifications does not mention anything about displaying a calendar for date input.
</aside>
</article>
بخشی از یک صفحه را نشان می دهد که شامل محتوایی است که به طور سطحی مربوط بهaside عنصر
چنین بخش هایی معموال در فن چاپ به شکل. می باشد و همچنان می تواند از آن متن مجزا باشدaside محتوای
یا ستون های فرعی و برای، مثال برای نقل قول ها،این عنصر می تواند برای افکت هایی در فن چاپ استفاده شود
. و برای محتوایی که از متن مجزا قرار می گیرندnav تبلیغ و برای گروه های عناصر
73
پس از معرفی عناصر و ویژگی های مختلف در بخش های گذشته ،زمان آن رسیده تا در مورد آنچه باید
در HTML5از آن پرهیز کنید ،صحبت کنیم .از زمانی که CSSابداع شد ،توسعه دهندگان وب همیشه گفته
اند که طرح باید از محتوا تفکیک شود CSS .از سبک ها و HTMLاز محتوا و ساختار صفحه ی شما محافظت می
کند.
در HTML5دوران عناصر زیر به سر رسیده و نقشی در بازی HTML5ندارند ،زیرا CSSهمه ی آنها را گرفته
است.
§ ><basefont
§ ><big
§ ><center
§ ><font
§ ><strike
§ ><tt
§ ><u
عناصر زیر در طراحی هیچ نقشی ندارند اما در برنامه ریزی HTML5موارد بدی می باشند زیرا به خاطر خسارت
های قابلیت استفاده و در دسترس بودنشان مورد سرزنش هستند.
§ ><frame
§ ><frameset
§ ><noframes
عناصر زیر در HTML5وارد نمی شوند ،زیرا اغلب استفاده نشده اند و ایجاد سردرگمی می کنند و همچنین
استفاده ی > <isindexمی تواند توسط استفاده فرم کنترل ها جایگزین شود.
74
در انتها عنصر > <noscriptفقط با ترکیب HTMLمنطبق می شود و وارد ترکیب xmlنمی شود ،چرا که استفاده
اگر شما هنوز به استفاده از این عناصر اصرار دارید ،صفحه ی وب شما خراب نخواهد شد و مرورگر از آن
پشتیبانی خواهد کرد .بنابراین هزینه ی انجام آن این است که صفحه ی شما ازارزیابی HTML5عبور نخواهد
کرد.
در HTML5هیچ کدام از ویژگی ها به هدف طراحی نباید استفاده شوند .طراحی باید به وسیله ی CSSمحافظت
شود .منظور من از طراحی اندازه ی فونت ،رنگ ،حاشیه ،نوع فونت و هرآنچه به هدف نمایش استفاده می شود،
می باشد.
شما باید از استفاده از ویژگی هایی که در جدول زیر ارائه شده ،بپرهیزید.
Attributes Elements
align caption, iframe, img, input, object, legend, table, hr, div, h1, h2, h3,
h4, h5, h6, p, col, colgroup, tbody, td, tfoot, th, thead and tr.
alink, link, text and body
vlink
background body
bgcolor table, tr, td, th and body
border table and object
cellpadding and table
cellspacing
char and charoff col, colgroup, tbody, td, tfoot, th, thead and tr
clear br
75
.امیدواریم مطالب این کتاب ربای شما مفید بوده باشد،رد پایان ضمن تشکر از انتخاب شما
و ھﻣﭼﻧﯾن ﭘروژه طراﺣﯽ ﯾﮏ ﻓروﺷﮕﺎه را دارد دﯾدن ﮐﻧﯾدflexbox از دوره ﺣرﻓﮫ ای طراﺣﯽ ﮐﮫ ﻣﺳﺎﯾل واﮐﻧﺷﮕراﯾﯽ ﺑﺎ
http://netparadis.com/tutorials/web-design/
76