چرا استفاده از جدول برای طرح‌بندی صفحات وب احمقانه است:

بیان مسأله، ارائه راهکار

سابقاً جدول در HTML فقط به یک علت حضور داشت: نشان دادن اطلاعات با ساختار جدولی. اما بعدها جدول با خصوصیت border="0" بستری را در اختیار طراحان گذاشت که بتوانند طرح‌بندی تصاویر و متن را روی آن قرار دهند. استفاده از جدول‌ها که همچنان غالب‌ترین وسیله طراحی صفحات پرزرق‌وبرق وب است، در واقع اکنون با ساختن صفحات اینترنتی بهتر، و با قابلیت دسترسی، انعطاف‌پذیری، وعملکرد بالاتر در تعارض قرار گرفته است. با سرمنشأ مشکلات آشنا شوید، و راه‌حل ایجاد طرح‌بندی‌های در مرحله گذار یا کاملاً بدون جدول را بیاموزید.

برید رئیس‌تون رو بیارید

اینجا «کت‌شلواری» توی جمعیت هست؟ آیا رئیس‌هاتون اینجا در Seybold هستند، اما الان در جلسه دیگری حضور دارند؟ برید اونها رو بیارید. اونها هستند که نیاز دارند بدانند استانداردهای وب چطور باعث پایین آمدن هزینه‌ها در شرکت شما می‌شود.

مرور کلی: اینها به چه درد من می‌خورد؟

ما یک روش کار را به شما معرفی می‌کنیم که باعث می‌شود

ما همچنین در باره این نکته صحبت خواهیم کرد که چگونه طراحی صفحات با شیوه‌نامه‌های آبشاری یا سی‌اس‌اس (CSS) نیازمند نوعی تفکر در باره محتوا و کد صفحات‌تان است که شاید اندکی با آنچه تا به‌حال به آن عادت کرده‌اید متفاوت باشد.

وب‌سایت‌های فوق‌العاده: جدول‌های تودرتو و GIFهای فضانگهدار

در آغاز، اینترنت عمدتاً رسانه‌ای برای افراد دانشگاهی، محققان، و ارتش بود تا بتوانند اطلاعات خود را در اختیار یکدیگر بگذارند. با این حال طولی نکشید که پیشگامان تفکرات آینده‌نگرانه متوجه شدند که این رسانه جدید برای فروختن همه چیز از میوه و سبزی تازه و غذای سگ گرفته تا اتومبیل‌های دست دوم و پخش زنده مسابقات ورزشی ایده‌آل است.

اما اینترنت اولیه مانند هر رسانه دیگری در آغاز به لحاظ زیبایی «ناپخته» (و حقیقتاً نه به آن اندازه جذاب برای مصرف‌کنندگان) بود تا اینکه David Siegel کتاب برجسته خود را منتشر کرد که حاوی تعدادی راه‌حل موقت ولی عالی برای محدودیت‌های مرورگرهای آن زمان و مشخصات W3C در دوره 1997 بود. (صحبت در باره Netscape 2 & 3 است.)

این راه‌حل‌های موقت بسیار عالی بودند، در واقع،‌ آنها همچنان جزء شایع‌ترین روش‌های طرح‌بندی صفحات در حال حاضرند.

مشکلات استفاده از جدول:

رستگاری نزدیک است

مرورگرهای امروزی استانداردهای وب را خیلی بهتر نمایش می‌دهند و ما دیگر نیازی به استفاده از این روش‌های کهنه و قدیمی نداریم.

به‌جای گذاشتن جدول‌ها در درون جدول‌ها و پر کردن خانه‌های خالی با GIFهای فضانگهدار، ما می‌توانیم کدی بسیار ساده‌تر را به‌همراه CSS برای طراحی سایت‌های زیبایی به‌کار بگیریم که سریع‌تر باز می‌شوند، راحت‌تر مورد طراحی مجدد قرار می‌گیرند، و قابلیت دسترسی بیشتری برای همه دارند.

راه‌حل: CSS و کد ساختاری

با به‌کارگیری کد ساختاری در صفحات HTMLمان و استفاده از شیوه‌نامه‌های آبشاری برای طراحی صفحات، ما می‌توانیم محتوای اصلی صفحات‌مان را از نحوه نمایش آنها جدا کنیم.

این کار مزایای متعددی نسبت به استفاده از جدول‌ها دارد....

طراحی‌های مجدد راحت‌تر و کم‌هزینه‌تر هستند

با برداشتن کد مرتبط با نحوه نمایش از داخل صفحات، طراحی دوباره سایت‌ها و محتوای موجود بسیار کم‌زحمت‌تربسیار کم‌هزینه‌تر) می‌شود. برای تغییر طراحی سایت، تنها نیاز به تغییر دادن شیو‌ه‌نامه صفحات دارید؛ اصلاً احتیاجی به تغییر دادن خود صفحات ندارید.

برای مثال، CSS Zen Garden، یا تعویض‌کننده شیوه را در سایت Eric Meyer امتحان کنید. برای یادگیری بیشتر، مقاله Alternative Style نوشته Paul Sowden را ببینید.

پهنای باند که مفت نیست

به‌کارگیری استانداردهای وب باعث کاهش حجم فایل صفحات می‌شود، چرا که کاربران دیگر مجبور نیستند با هر بار مشاهده صفحات اطلاعات مرتبط با نمایش آنها را هم دریافت کنند. شیوه‌نامه‌هایی که طرح‌بندی صفحات را کنترل می‌کنند توسط مرورگر به‌طور موقت روی کامپیوتر بازدیدکنندگان ذخیره می‌شود.

کاهش یافتن حجم فایل به معنای باز شدن سریع‌تر صفحات و هزینه کمتر میزبانی سایت است.

هی، این صفحه‌ها همه شبیه هم هستند!

به‌کارگیری استانداردهای وب همچنین باعث آسان شدن حفظ یکنواختی بصری در کل یک سایت می‌شود. از آنجا که صفحات از یک CSS مشترک برای طرح‌بندی بهره می‌برند، همه آنها به یک صورت شکل می‌گیرند.

این کار وجهه شما را تقویت و سایت‌تان را قابل‌استفاده‌تر می‌کند.

یک‌بار بنویسید، هرجایی استفاده کنید، برای همه‌کس

به‌کارگیری استانداردهای وب در صفحات سایت برای کاربران دارای معلولیت و افرادی که با گوشی‌های تلفن همراه یا PDAها به مرور اینترنت می‌پردازند قابلیت دسترسی بسیار بیشتری فراهم می‌کند.

بازدیدکنندگانی که از صفحه‌خوان‌ها برای مرور اینترنت استفاده می‌کنند (و همچنین کاربرانی که سرعت اینترنت پایینی دارند) مجبور نیستند که یکی‌یکی خانه‌های بیشمار جدول‌ها و فضانگهدارها را رد کنند تا به محتوای اصلی صفحات ما برسند.

به بیان دیگر، جدا کردن محتوا از شیوه‌ای که با آن نمایش داده می‌شود محتوای شما را غیروابسته به دستگاه می‌سازد.

گوگل نابیناست

در مبحث قابلیت دسترسی، به‌حداقل رساندن کد صفحات و استفاده صحیح از تگ‌های قسمت header صفحه به بهتر شدن رتبه سایت در موتورهای جستجو نیز کمک می‌کند.

پایین آوردن نسبت کد به محتوا، استفاده از کلمات کلیدی در تگ‌های header صفحه، و جایگزینی GIFها با خود متن داخل تصاویر همگی به بهتر شدن نتایج جستجوی سایت شما کمک می‌کند.

اگر لازم است شما همچنان می‌توانید از جدول استفاده کنید، فقط زیاد استفاده نکنید

این کار به بازدیدکنندگان (و رؤسایی) که موظف و مصصم به استفاده از مرورگرهای نسخه 4 تا روز مرگ آنها هستند حدود قابل‌قبولی از آنچه که بقیه دنیا می‌بینند می‌دهد.

یک جدول ظاهراً زیبا

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper.
Suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis.
At vero eros et accumsan et iusto odio dignissim qui blandit
Praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.
Qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
Epsum factorial non deposit quid pro quo hic escorol.
Olypian quantels et gomilla congolium sic ad nauseum. Souvlaki ignitus carborundum e pluribus unum. Defacto lingo est igpay atinlay.
Eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed.
Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore.

نگاهی به زیر سطح بیندازید

واقعاً می‌شد این را خیلی ساده‌تر انجام داد. حدس بزنید چقدر کد تو این جدول کوچیک هست؟ 13.7 کیلوبایت. این چیز 17 سطر و 9 ستون داره. راستی گفتم کلی هم GIFهای فضانگهدار هست؟
تعداد خانه‌های جدول و فضانگهدارها اینجا بیش از حد است. همه لبه‌های نقطه‌نقطه با خاصیت background ایجاد شدند که، موقع آزمون استاندارد، تأیید اعتبار نمی‌شن.
یه جدول تودرتو؟ برای چی؟
برای درست کردن لیست نقطه‌دار؟ دارین شوخی می‌کنین، نه؟
همه این رو می‌شه با 8 خانه جدول و 4 دستور CSS حل کرد. جداً. 8 خانه جدول و 4 دستور CSS‍، فقط همین رو می‌خواد.
اوه نه، یه جدول دیگه برای شبیه‌سازی لیست نقطه‌دار.
کد لیست نقطه‌دارتون رو همون‌طور که لیست نقطه‌دار درست می‌کنند بنویسید و بذارید CSS بقیه‌اش رو درست کنه.
یک دستور برای <table>، یکی برای <td>، یکی برای <ul> و یکی برای <li> نیاز دارید. همه‌اش همینه. همین که اونا رو داشته باشید شما طلایی می‌شید.
این بهتر از استفاده از 8 خانه جدول دیگر برای ساختن یک لیست نقطه‌دار قلابی است، که دست آخر قابلیت دسترسی خیلی کمتری هم دارد.
عالیه! آخرین نقطه قلابی.

کدی که برای نمایش ساختار جدول به‌کار می‌رود:

table { margin: 3px; padding: 2px; border: solid 2px blue }

td { padding: 2px; border-style: solid; border-width: 1px; border-color: gray gray silver silver }

اینطوری خیلی بهتره

خیلی بهتر حدس بزنید چقدر کد تو این جدول کوچیک هست؟ 2.1 کیلوبایت. این چیز 4 سطر و 2 ستون داره. خبری هم از GIFهای فضانگهدار نیست.
درستِ درست همه این لبه‌های نقطه‌نقطه با CSS درست شدند و کاملاً طبق استاندارد و معتبر هستند.
  • این الان یک قلم از لیست است
  • درست همانطور که باید باشد
این همه با 8 خانه جدول و 4 دستور CSS حل شده. جداً. 8 خانه جدول و 4 دستور CSS،فقط همین رو می‌خواد.
  • هورا به افتخار لیست‌های نقطه‌دار
  • چرا کد لیست نقطه‌دار رو مثل لیست نقطه‌دار ننویسیم تا CSS بقیه‌اش رو درست کنه؟
یک دستور برای <table>، یکی برای <td>، یکی برای <ul> و یکی برای <li> نیاز دارید. همه‌اش همینه. همین که اونا رو داشته باشید شما طلایی می‌شید.
  • من لیست‌های نقطه‌دار رو خیلی دوست دارم
  • عالیه! پایان نقطه‌های قلابی

و این هم کد CSS مورد استفاده برای خلاص شدن از شر کدهای اضافی:

table { border-bottom: 1px dotted fuchsia; border-left: 1px dotted fuchsia }

td { padding: 11px 20px 20px 11px; border-top: 1px dotted fuchsia; border-right: 1px dotted fuchsia }

ul { margin-top: 10px; margin-bottom: 10px; margin-left: 0; padding-left: 1em }

li { margin-bottom: 10px }

مرور دوباره طراحی‌های در مرحله گذار

به‌جای خانه‌های جدول و GIFهای فضانگهدار اضافی از margin و padding استفاده کنید.

از link و @import برای شیوه‌نامه‌ها استفاده کنید. اولی برای مرورگرهای قدیمی، دومی برای مرورگرهای امروزی.

<link href="basic.css" rel="stylesheet" type="text/css">

<style type="text/css" media="screen"><!--
@import url(modern.css) screen;
--></style>

نمونه‌هایی در دنیای واقعی:

ولی صبر کنید، بازم هست:

برای کسب اطلاعات بیشتر در باره طراحی‌های در مرحله گذار، فصل اول کتاب Eric Meyer on CSS و بیشتر فصل‌های کتاب Jeffrey Zeldman با عنوان Designing with Web Standards را بخوانید.

طراحی با CSS: آینده همینجاست

مرورگرهایی که اکثریت غالب کاربران اینترنت امروزه از آن استفاده می‌کنند CSS را به‌خوبی پشتیبانی می‌کنند. همگی این مرورگرها رفتارهای غیرعادی خود را دارند، اما همین که به آنها عادت کنید، می‌توانید راه‌حل‌هایی برای آن پیدا کنید.

نوشتن کد CSS آسان است. حتی برای آدمی مثل من که فکر می‌کند بیشتر کد JavaScript شبیه بدوبیراه است.

if(links[x].length > 0);{
for (y=0; y<links[x].length; y++) {

هر دستور CSS یک انتخاب‌گر (selector) و یک تعریف (declaration) دارد. تعریف از یک خصوصیت (property) و یک مقدار (value) تشکیل می‌شود. خصوصیت‌هایی که دوکلمه‌ای به‌نظر می‌رسند در وسط یک خط ربط دارند.

body {margin:0; padding:0}

.related {float:right; width: 15em; margin-left:1em; margin-bottom: 1em; color:blue}

#footer {color: gray; font-size: 0.6em; line-height: 1.2em; background-color: white; margin: 0}

کد معنایی: قصدتان را کد کنید، کدتان را قصد کنید

در حالی که نوشتن خود CSS آسان است، به‌کارگیری CSS برای طراحی‌های‌مان نیازمند نوعی تفکر است که شاید اندکی با آنچه ما تا به‌حال به آن عادت کرده‌ایم متفاوت باشد.

موقع کار کردن روی یک طرح‌بندی یا صفحه، به‌جای فکر کردن به چیزهایی شبیه اینکه «این اینجا می‌رود و آن هم آنجا می‌رود»، ما باید به نوع اطلاعات‌مان در صفحه و ساختار آن اطلاعات فکر کنیم.

به مهمترین عنوان تگ <h1> می‌دهیم؛ زیرعنوان‌ها تگ <h2> می‌گیرند، الی آخر؛ و پاراگراف‌ها پاراگراف <p> هستند.

این آن چیزی است که با عنوان کد «ساختاری» یا «معنایی» شناخته می‌شود.

به‌جای قرار دادن مطالب در داخل جدول‌ها و خانه‌های جدول، آنها را داخل اجزای div قرار دهید. به اجزای div یک id و/یا یک class که توضیح‌دهنده محتوا و/یا عملکرد آن، و نه ظاهر آن باشد اختصاص دهید.

از تگ‌های <b> و <br> اجتناب کنید

در باره این‌که چرا می‌خواهید چیزی طور خاصی نمایش داده شود؛ چه منظوری دارید؟ کد شما می‌تواند و بهتر است که مفهوم را، حتی به کسانی که نمی‌توانند صفحه شما را ببینند، برساند. کد معنایی صفحات‌مان را برای همه، و از جمله موتورهای جستجو، قابل دسترسی می‌کند.

وقتی چیزی را ایتالیک می‌کنید، آیا به این خاطر است که می‌خواهید بر آن تأکید کنید، <em>، یا به این خاطر که عنوان یک کتاب است، <cite>؟

اگر چیزی بولد است، احتمالاً باید با <strong> کد شود.

اگر بعد از چیزی یک سطر جدید می‌خواهید، این احتمال هست که باید آن را با اجزای عنوان کد کنید. اگر یک عنوان نباشد، آیا بخشی از یک class است که در کل سایت‌تان استفاده شده است؟ اگر چنین است پس می‌توانید از CSS به‌جای <br> استفاده کنید.

.foo {display:block}

برای اطلاعات بیشتر، Bed and BReakfast markup (B&BR) نوشته Tantek Çelik را بخوانید.

چیزهایی که جدول بهتر از CSS انجام می‌دهد

چیزهای خاصی هست که CSS به خوبی طراحی‌های جدولی انجام نمی‌دهد.

برای نمونه، فکر کنید یک منوی طرفی مشکی دارید که می‌خواهید به اندازه محتوای شما امتداد پیدا کند. در طراحی جدولی، این خوراک است: فقط به آن <td> یک پس‌زمینه مشکی بدهید.

ما می‌توانیم این کار را با CSS انجام بدهیم، اما به تفکر متفاوتی نیازمندیم.

اگر به div منوی خودمان یک پس‌زمینه مشکی بدهیم، رنگ مشکی فقط تا جایی امتداد خواهد یافت که منوها «تمام شوند». در اکثر صفحات، محتوا بلندتر از منو است، و نتیجه خوب نخواهد شد.

در عوض می‌توانیم یک GIF مشکی را در کل div محتوا تکرار کنیم و left padding کافی برای آن div در نظر بگیریم، اما اگر منو طولانی‌تر از محتوا باشد، این هم کار نخواهد کرد.

راه دیگر برخورد با این مشکل این است که یک GIF مشکی را در پس‌زمینه <body> تکرار کنیم، اما این هم تا زمانی خوب است که نخواهیم تصویر یا رنگ دیگری را برای پس‌زمینه <body> به‌کار ببریم.

یا می‌توانیم کل محتوایمان را در یک div با نام 'wrapper' قرار دهیم و تصویر را در پس‌زمینه این div تکرار کنیم. هر چند، این کار مقدار کد غیرمعنایی را در صفحات‌مان افزایش می‌دهد.

و البته اگر بخواهید که عرض منویتان غیرثابت باشد، تکرار کردن تصویر در پس‌زمینه اصلاً کار نخواهد کرد.

همانطور که گفتیم، چیزهایی هست که جدول بهتر از CSS انجام می‌دهد. اما دست آخر شما باید از خودتان بپرسید که آیا تمام مسائلی که در رابطه با استفاده از جدول برای طراحی به‌جای داده مطرح شد ارزش آن را دارد یا نه.

مهاجرت از حقه‌های جدولی به استانداردهای وب: تصویر بزرگ

نخست، شما بایستی در باره استفاده از یک استراتژی مهاجرت تصمیم بگیرید. آیا کل سایت را یکجا منتقل خواهید کرد، یا این کار را به‌صورت بخش به بخش انجام خواهید داد؟

بخش‌ها و صفحاتی را که از این تبدیل بیشترین نفع را می‌برند مشخص کنید. صفحات اول، اعلانات مربوط به محصولات جدید، و صفحات مشابه جای خوبی برای شروع هستند.

انواع محتوا/اطلاعات موجود در سایت‌تان را در کلیت مشخص کنید

تجزیه کردن صفحات‌تان

همین که انواع محتوای موجود در سایت دست‌تان آمد، موقع آن است که در صفحات فعلی‌تان دنبال قسمت‌های منطقی محتوا بگردید.

در ساختار جدولی خود به دنبال جدول‌های تودرتو و فضانگهدارها و خانه‌های جدول خالی بگردید. (ما می‌خواهیم اینها را با تگ‌های div یا ساختار جدولی بسیار ساده‌تری جایگزین کنیم.)

به کدتان نگاه کنید

همین که ساختار صفحه‌هایتان را تحلیل کردید، وقت آن است که نگاهی به متن صفحات خود بیندازید و دنبال HTML نمایشی در کد فعلی‌تان بگردید که می‌توان آن را با کد ساختاری جایگزین کرد.

تگ‌های نمایشی را با کدهای ساختاری جایگزین کنید

شما می‌توانید از find and replace (و regular expressions) استفاده کنید، اما شاید آسان‌ترین راه انجام این کار باز کردن صفحه فعلی در مرورگر و copy and paste کردن متن از آنجا به HTML editor است.

در باره ساختار مطالب خود فکر کنید! تنها جایگزین کردن تگ‌های <b> با تگ‌های <strong> کافی نیست.

مهمترین عنوان چیست؟ آن را داخل تگ <h1> قرار دهید. زیرعنوان‌ها را به همین ترتیب در داخل تگ‌های <h2> و... قرار دهید. پارگراف‌ها را در تگ‌های <p> قرار دهید. منوی سایت را به صورت لیست بدون‌شماره درآورید.

یک DOCTYPE انتخاب کرده، آن را به‌کار ببرید. (ما XHTML transitional را پیشنهاد می‌کنیم، اما اگر سخت‌گیر باشید، در آن صورت دنبال استفاده از XHTML strict بروید.)

صفحات‌تان را به divهای منطقی تقسیم کنید

منوی اصلی‌تان را در داخل یک div با id به نام mainnav بگذارید؛ زیرمنویتان را در داخل یک div با id یا class به نام subnav بگذارید، پای صفحه را در داخل <div id="footer"> بگذارید، و کل محتوایتان را در <div id="content"> احاطه کنید.

در حال حاضر خیلی شبیه چیزی نشده، اما همین که شروع به افزودن دستورات به شیوه‌نامه‌های خود بکنید، همه چیز به‌سرعت درست می‌شود.

حالا موقع آن است که نوشتن CSS را شروع کنید

در ابتدا، به هر div یک حاشیه بدهید. برای مثال، div {border: 1px dotted gray; padding: .5em} به شما کمک می‌کند که ببینید هر کدام کجا شروع و کجا تمام می‌شود، و اینکه آیا تگ‌ها تودرتو قرار گرفته‌اند یا نه.

دستورات CSSتان را برای انتخاب‌گرهای اجزا اول از همه بنویسید (<html>، <body>، <p>، <h1>، <h2>، <ul>، <li>، غیره).

تا جای ممکن از انتخاب‌گرهای زمینه‌ای یا فرزند استفاده کنید. این کار باعث می‌شود کدتان بسیار تمیزتر باقی بماند. برای مثال، #subnav li {border: 1px solid black; padding: .5em; display: inline} تنها اقلام لیست را درون div با نام subnav تحت تأثیر قرار می‌دهد.

صفحات‌تان را به‌همراه این دستورات در هر چه تعداد از مرورگرها که می‌توانید آزمایش کنید و از دوستانتان هم بخواهید که آنها را در مرورگرهایشان آزمایش کنند.

نمونه سایت‌هایی که با CSS طراحی شده‌اند

در این باره مطالعه کنید

روشن است که ما نمی‌توانیم هر آن چیزی را که شما در باره طراحی با CSS احتیاج دارید بدانید در یک ساعت پوشش دهیم، اما این کتاب‌ها می‌توانند در کنار آمدن با استانداردهای وب به شما کمک کنند تا صفحاتتان را کم‌حجم‌تر، تمیزتر، و سریع‌تر کنید.

کاغذ؟ ما کاغذهای نفرت‌آور را نمی‌خواهیم: منابع آن‌لاین

CSS-Discuss

zeldman.com گزارش روزانه: محتوای هوشمندانه، تفکربرانگیز و خوش‌ساخت، و لینک‌های به‌روز

A List Apart برای کسانی که وب‌سایت درست می‌کنند

پروژه استانداردهای وب این آدم‌ها را دعا کنید

CSS: راهنمایی برای سردرگم‌ها یک لینک‌دونی خوب

روش‌های طراحی با CSS: برای تفریح و کسب درآمد طراحی‌هایی از Eric Costello که می‌توانید در پروژه‌هایتان مورد استفاده قرار دهید. به‌همراه منابع و آموزش‌های گام‌به‌گام.

شیوه دنیای واقعی طراحی‌های CSS، نکته‌ها، ترفندها، و روش‌هایی از Mark Newhouse.

DevEdge Netscape Sidebar Tabs لینک‌های بسیار به‌درد‌بخور به مشخصات W3C در مورد CSS، HTML، و DOM‍.

راهنمای شیوه کتابخانه عمومی نیویورک منبعی به‌دردبخور برای درک مفاهیم XHTML و CSS.

منافع تجاری استانداردهای وب خبرهای خوب برای خوش‌پوش‌های امروزی. مژده استانداردهای وب در قالبی که مدیران تجاری (MBA) از آن تقدیر می‌کنند.

با سپاس. سؤالی هست؟