Що таке семантична розмітка?
10.02.2008, 20:07 | Прочитано: 20207 раз | Шаблони та дизайн | Автор Robert Nyman (переклад Dutch) Друк | E-mail
Я цікавлюся семантикою взагалі, але якщо семантика приходить на допомогу веб-розробникам із метою допомогти їм поліпшити веб, то таким шансом просто гріх не скористатися. Уся проблема криється в тому, що веб-майстри не розуміють, що зміниться від використання семантичної розмітки документа.
Саме тому я й вирішив написати цю статтю, яка пояснює необхідність дотримуватися семантики веб-документів.
Що таке семантично правильний документ?
Я думаю, що для веб-розробника дуже важливо переглядати створені ними самими HTML-документи з відключеним зовнішнім форматуванням, будь це CSS, JavaScript і, якщо хочете, навіть без зображень - тільки зміст.
А тепер пробіжіться по цій сторінці очима. Ви можете в тексті знайти заголовки й важливі фрази?
Якщо відповідь позитивна, то Ваш документ дотримується семантики.
Використання елементів і приклади грамотної та безграмотної розмітки
Отже, давайте поговоримо про семантичні HTML-елементи. У першу чергу, це елементи заголовків (від <h1> до <h6>), абзаци (<p>), списки (<ul>, <ol>), логічного виділення найбільш важливих фраз у тексті (<strong> - напівжирним, <em> - курсивом), елемент форми, що зв'язує поле мітки LABEL із полем форми (<label>).
Тепер гарненько обміркуйте, як буде найбільш грамотно розмітити Ваш зміст, і приступайте до справи, використовуючи вищевказані елементи.
Тепер мені хотілося б поговорити про методи верстки: таблична і безтаблична.
Таблична верстка – в основі таблиця. Весь зміст перебуває в осередку цих самих таблиць, код дуже важко сприймати, особливо коли використовуються вкладені таблиці. До того ж даний метод застарілий.
При безтабличній верстці зміст знаходиться в елементах семантичної розмітки із привласненими css-стилями. Такий метод грамотний і сучасний! Необхідно розділяти семантику документа і його оформлення, що ми й отримаємо при безтабличній верстці.
У таблицях необхідно розміщати тільки відповідні табличні дані, такі як статистичні дані, розклади й т.д.
А тепер давайте я Вам наведу, як приклад, 2 фрагменти коду з табличною й безтабличною розміткою HTML-документу, а Ви їх порівняєте та скажете, який краще, простіший, легший, елегантніший та зрозуміліший!
Поганий приклад
<table id="web-site-container" width="100%"> <tr> <td id="navigation"> <table width="100%"> <tr> <td> <a href="http://www.apple.com/macosx/">Mac OS X Leopard</a> </td> </tr> <tr> <td> <a href="http://www.microsoft.com/windows/products/windowsvista/default.mspx">Windows Vista</a> </td> </tr> <tr> <td> <a href="http://en.wikipedia.org/wiki/Semantic_Web">Wikipedia: Semantic Web</a> <table> <tr> <td> <a href="http://www.sciam.com/article.cfm?articleID=00048144-10D2-1C70-84A9809EC588EF21">The Semantic Web article</a> </td> </tr> </table> </td> </tr> </table> </td> <td id="content"> <div class="heading"> Web site name/Document name </div> <!-- Let is a lot of <code><br></code> elements here to get a nice bottom margin --> <br><br><br><br><br><br> <div> This is <span style="font-style: italic">the best content</span> text ever written. </div> <div> <!-- are great for indenting text! --> Indented pre-amble text explaining something. </div> </td> <td id="contact-form"> <form action="/contact" method="post"> <div> Name: <input type="text"> <input type="submit" value="Send"> </div> </form> </td> </tr> </table>
Грамотний приклад із використанням семантики
<div id="web-site-container"> <div id="navigation"> <ul> <li> <a href="http://www.apple.com/macosx/">Mac OS X Leopard</a> </li> <li> <a href="http://www.microsoft.com/windows/products/windowsvista/default.mspx">Windows Vista</a> </li> <li> <a href="http://en.wikipedia.org/wiki/Semantic_Web">Wikipedia: Semantic Web</a> <ul> <li> <a href="http://www.sciam.com/article.cfm?articleID=00048144-10D2-1C70-84A9809EC588EF21">The Semantic Web article</a> </li> </ul> </li> </ul> </div> <div id="content"> <h1> Web site name/Document name </h1> <!-- Bottom margin is applied through CSS to the <code><h1></code> element --> <p> This is <em>the best content</em> text ever written. </p> <!-- Indentation is applied through a general "pre-amble" CSS class --> <p class="pre-amble"> Indented pre-amble text explaining something. </p> </div> <div id="contact-form"> <form action="/contact" method="post"> <div> <label for="user-name">Name</label>: <input id="user-name" type="text"> <input type="submit" value="Send"> </div> </form> </div> </div>
Ну як Вам? Що скажете?
Розмежовуйте семантику та оформлення документа
Усвідомте для себе одну просту річ: HTML відповідає за семантику документа, CSS – за його оформлення. І ніяк інакше. Крім цього використовуйте кожний елемент по його прямому призначенню, наприклад, ніколи не використовуйте елемент заголовка з метою банального збільшення розміру шрифту, а елемент <blockquote> для виділення тексту.
Мені часто ставлять запитання на рахунок елементів списку: «У яких випадках використовувати маркірований, а в яких немаркований списки?». Особисто моя думка така, що головне його використовувати по прямому призначенню, тобто для створення списків, а інше вже на Ваш розсуд, тому що семантика - не зовнішній вигляд.
Переваги семантичної розмітки
Далі йде список, у якому перераховані кілька переваг від семантичної розмітки документів:
- Підвищується доступність, тому що сторінки Вашого сайту не втратять своєї структури навіть при відключеному або не підтримуваному CSS;
- Зміст сторінок Вашого сайту буде зрозумілий для людей, які читають сайти за допомогою спеціальних програм для читання з екрану;
- Семантична розмітка впливає на пошукові системи, тому що їхнім роботам не важко індексувати сторінки та визначати істинне значення тих або інших фрагментів тексту;
- Значно спрощується подальша підтримка, таким чином, зверстаного сайту, знижуються витрати на редизайн;
- Зменшується вага сторінок сайту, підвищується читабельність коду сайту за рахунок його компактності, збільшується швидкість завантаження сторінок сайту.
Оригінал статті: Explaining semantic mark-up