HTML Flashcards
Что такое HTML и для чего он используется?
HTML (HyperText Markup Language) - это язык гипертекстовой разметки, который используется для создания структуры и представления содержимого веб-страницы. Он является стандартным языком разметки для создания веб-страниц и веб-приложений во всем Интернете.
HTML состоит из набора элементов (тегов), которые определяют различные части веб-страницы и их функциональность. Большинство элементов имеют начальный и конечный тег, и содержат текст и/или другие элементы между ними.
Все HTML-документы должны начинаться с объявления типа документа: <!DOCTYPE html>. <!DOCTYPE html> — объявление типа документа, которое указывает браузеру, что это HTML5.
<html> — корневой элемент, который содержит весь контент страницы.
<head> — содержит метаинформацию, такую как заголовок страницы, кодировку, ссылки на стили и скрипты.
<body> — содержит основное содержимое страницы, которое отображается в браузере.
В head обычно располагаются:
Для подключения стилей к странице существует тег <link></link>. Для этого у него есть атрибут href в котором задаётся адрес стилевого файла, а значение stylesheet атрибута rel говорит браузеру, что мы подключаем именно стили, а не что-то другое.
Ещё один элемент, который располагается в <head> — это тег <title>. В нём задаётся заголовок страницы, который отображается во вкладках браузера. По заголовку должно быть понятно, о чём эта страница, даже когда она не открыта в браузере, а отображается в результатах поиска или в браузерных закладках.
Ещё один важный тег, располагающийся внутри <head> это тег <meta></meta>. Он одиночный, то есть не требует парный закрывающий тег в конце. С помощью <meta></meta> можно сообщать браузеру, поисковому роботу или другому устройству различную служебную информацию (или метаинформацию) о вашем сайте: кодировку текста, описание контента и так далее. Для этого используются теги <meta></meta> с разными атрибутами и их значениями.
Браузеры интерпретируют HTML и отображают его содержимое в соответствии с заданной разметкой.
Он был разработан Тимом Бернерсом-Ли в 1991 году. HTML не является языком программирования, а служит для описания структуры и содержания веб-страницы.
</head></title></head></body></head></html>
Что такое теги?
Теги в HTML — это специальные элементы разметки, которые используются для создания структуры веб-страницы. Они помогают браузеру понять, как отображать содержимое: где заголовки, где абзацы, где изображения и так далее. Теги обычно заключаются в угловые скобки < > и бывают парными (<p></p>) или одиночными (<img></img>).
Внутрь парного тега можно помещать как какой-то контент, так и другие теги. Это позволяет создавать сложную вёрстку, в которой области отделены друг от друга: меню от шапки сайта, рекламный блок от основного контента и так далее. Тег, в который вложены другие теги, иногда называют обёрткой или враппером/wrapper. Важно помнить, что не все теги можно вкладывать друг в друга. К примеру, вкладывать блочный тег “div” в строчный тег “a” - некорректно, согласно стандартам HTML, такая структура может вызвать непредсказуемое поведение в различных браузерах и ухудшить доступность контента.
Расскажи про блочные и строчные теги?
Поведение элементов (блочное, строчное или строчно-блочное) определяется значением свойства display, которое браузер задаёт по умолчанию для каждого тега.
Блочные элементы:
- Занимают всю доступную ширину родительского контейнера.
- Начинаются с новой строки.
- Можно задавать ширину, высоту, отступы (margin, padding).
Примеры: <div>, <p>, <h1>–<h6>, <header>, <footer>, <section>.
Строчные элементы:
- Занимают только столько места, сколько нужно для их содержимого.
- Не начинаются с новой строки.
- Нельзя задавать ширину, высоту, вертикальные отступы (margin-top, margin-bottom).
Примеры: <span>, <a>, <strong>, <em>.</em></strong></a></span>
Строчно-блочные элементы:
Ведут себя как строчные элементы (не начинаются с новой строки), но можно задавать ширину, высоту и отступы. Различаются в разных браузерах.
Примеры: <button>, <select>, <textarea>, <input></input>.</textarea></select></button>
Что такое атрибуты в HTML?
Атрибуты в HTML — это дополнительные свойства, которые добавляются к тегам (элементам) для изменения их поведения, внешнего вида или предоставления дополнительной информации. Атрибуты всегда указываются внутри открывающего тега и обычно состоят из пары имя=”значение”. Некоторые атрибуты не требуют значения, так как их наличие уже указывает на true, к примеру, <input></input>.
Некоторые атрибуты могут использоваться с любыми HTML-элементами. Например:
class — задает класс для стилизации или JavaScript.
id — уникальный идентификатор элемента.
style — позволяет задать CSS-стили напрямую.
title — добавляет всплывающую подсказку при наведении.
Существуют также пользовательские атрибуты данных, которые позволяют хранить дополнительную информацию в элементах HTML. Эти атрибуты начинаются с data- и могут быть использованы для хранения данных, которые не имеют визуального представления, но могут быть полезны для JavaScript.
<div id="user" data-user-id="12345">Пользователь</div> const user = document.getElementById('user'); console.log(user.dataset.userId); // 12345
Расскажи про кодировку страницы и теги мета.
Важный тег, располагающийся внутри <head> это тег <meta></meta>. Он одиночный, то есть не требует парный закрывающий тег в конце. С помощью <meta></meta> можно сообщать браузеру, поисковому роботу или другому устройству различную служебную информацию (или метаинформацию) о вашем сайте: кодировку текста, описание контента и так далее. Для этого используются теги <meta></meta> с разными атрибутами и их значениями.
Кодировка текста HTML-страницы указывается с помощью атрибута charset:
<meta></meta>
Самая распространённая современная кодировка — utf-8.
Перечень ключевых слов задаётся тегом <meta></meta>, у которого атрибут name имеет значение keywords. Ключевые слова (самые важные слова из содержания страницы) перечисляются в атрибуте content через запятую:
<meta></meta>
Краткое описание (или аннотация) страницы задаётся похожим образом, только значение атрибута name меняется на description:
<meta></meta>
Что такое семантика?
Одна из важных особенностей HTML — семантика, которая буквально переводится как «обозначающий». При помощи HTML мы описываем структуру страниц и их содержимого, то есть объясняем браузерам, вспомогательным и другим технологиям и программам значение элементов. Это может быть параграф текста, кнопка, часть страницы с основным содержимым или ничего не значащий контейнер.
Существуют две реализации семантического веба:
1. На основе микроразметки. Это специальные атрибуты, которые добавляются в HTML-разметку и помогают роботам найти нужную информацию. Микроразметка используется чаще всего, так как имеет множество возможностей и полей для разметки
- Используя стандарт HTML5. В стандарте появилось множество тегов, которые помогают роботам анализировать информацию, находить логические связи между блоками (или понимать, что их нет), искать необходимые части для корректного отображения на устройствах для чтения
На практике семантика HTML-элементов передаётся через их роли, а ещё состояния и свойства. Роли описывают основной смысл элемента, а состояния и свойства добавляют больше деталей: выбран или не выбран чекбокс, активно или неактивно поле в форме и так далее.
Теги и их встроенные роли перечислены в спецификации ARIA в HTML (ARIA in HTML).
Все HTML-теги, которых больше 100, семантические. Для простоты разделим их на две группы — секционные и контентные. Секционные теги делят HTML-документ (страницу) на большие логические блоки или секции:
<article> — самостоятельный блок с содержимым вроде превью поста в блоге, карточки товара или рекламного баннера. Такой контент не потеряет смысл, если его перенести на другую страницу или сайт.
<nav> — основная или дополнительная навигация со ссылками на другие страницы или отдельные разделы. В основном такой областью указываются только основные меню. Дополнительные, такие как меню в футере, не оборачивают в тег <nav>, хотя это не запрещено. Хороший пример дополнительного использования nav — навигация по текущей странице.
<section> — блок, который объединяет содержимое по смыслу.
<aside> - представляет собой часть документа, чьё содержимое только косвенно связанно с основным содержимым документа. Чаще всего представлен в виде боковой панели, сносок или меток.
<main> — основное содержимое страницы.
<header> — вводное содержимое или навигация. Не привязан к конкретному месту страницы и отдельной секции, но традиционно используется для создания основной навигации по сайту — шапки (хедера). Также можно использовать для оборачивания оглавления раздела, заголовка статьи с вводной информацией о ней и прочего.
<footer> — дополнительная информация о сайте или части одной страницы. Тоже не привязан к части страницы или отдельной секции. Например, подвал (футер) может быть у превью поста и содержать информацию о дате публикации и авторе.
Контентные теги описывают смысл частичек и типов содержимого — контента. Перечислим несколько тегов, на самом деле их гораздо больше:
<h1>-<h6> для определения заголовков на странице. <h1> используют для основного заголовка документа или раздела. Остальные нужны для подзаголовков. Все заголовки описывают структуру и иерархию страниц.
<button> для кнопок. Используют для отправки форм и выполнения других команд.
<img></img> для картинок.
<table> для таблиц. Состоят из нескольких элементов для структурирования табличных данных: строк <tr>, заголовочных ячеек <th> и ячеек с данными <td>.
<ul> неупорядоченный маркированный список.
<a> для ссылок, с помощью которых пользователи переходят от одной страницы к другой.
<p> для абзацев текста. Это основные блоки текста в HTML; логически разграничивают части текста с общей мыслью или идеей.
HTML-атрибуты раскрывают дополнительный смысл содержимого страниц. Например, глобальный атрибут title означает, что это дополнительные сведения о тексте или элементе. lang сообщает о языке слова, фразы или ссылки, а dir описывает направление письма.
Конечно, не все теги подробно описывают типы содержимого. К примеру, <section> только намекает, что это что-то объединённое по смыслу. <article> уже больше рассказывает о содержимом: оно тесно связано, сгруппировано в одном месте и не зависит от другого на странице.
<div> и <span> тоже существуют не зря, хотя их часто называют несемантическими. Это не совсем так. Оба тега играют роль универсальных контейнеров с ролью generic. То есть они говорят браузерам или скринридерам, что их смысл не важен и на них можно не обращать внимание. Использовать эти теги рекомендуется в тех случаях, если более подходящих семантических тегов не нашлось.
Тег <div> используется для группировки структурных элементов или в качестве вспомогательных контейнеров для создания нужной раскладки.
Тег <span> используется для группировки текстовых элементов, выделения отдельных слов или фраз внутри абзацев, пунктов списка и так далее.
Зачем нужна семантика?
1. Исходный код проекта с вниманием к семантике легче поддерживать. В нём проще ориентироваться, а любой член команды сразу видит логику отдельных элементов и общую структуру интерфейса.
2. Люди со слепотой и слабовидящие используют скринридеры, экранные лупы и другие вспомогательные технологии для взаимодействия со страницами. Логичная HTML-разметка улучшает опыт пользователей вспомогательных технологий и устраняет барьеры, из-за которых невозможно пользоваться сайтом. Другой плюс продуманной HTML-разметки — навигация для скринридеров. Теги вроде <header> и <footer> — ориентиры. Это значит, что пользователи могут перемещаться по отдельным блокам страницы с помощью горячих клавиш.
3. Семантика упрощает работу поисковикам и позитивно влияет на поисковую оптимизацию сайтов — SEO (search engine optimization). Улучшает точность индексации страниц;
повышает показатели производительности сайта;
увеличивает органический трафик и количество кликов;
гарантирует спокойную старость спокойное будущее.
</footer></header></span></div></span></div></article></section></p></a></ul></td></th></tr></table></button></h1></h6></h1></footer></header></main></aside></section></nav></nav></article>
Какие есть категории контента у тегов? На что влияют категории контента?
Категории контента отвечают за то, какие элементы могут быть вложены друг в друга.
Основные категории контента в HTML5:
1. Metadata content (Метаданные):
Элементы, принадлежащие к категории метаданных, изменяют отображение или поведение HTML-документа, связывают его с другими документами и предоставляют другую дополнительную информацию о документе.
Элементами метаданных являются: <base></base>, <link></link>, <meta></meta>, <noscript>,
, <style> и <title>.</title></style></noscript>
- Flow content (Потоковый контент):
Большинство элементов, которые могут быть частью основного содержимого документа, содержат текст и встроенный контент.
<a>, <abbr>, <address>, <article>, <aside>, <audio>, <b>,<bdo>, <bdi>, <blockquote>, <br></br>, <button>, <canvas>, <cite>, <code>, <data>, <datalist>, <del>, <details>, <dfn>, <div>, <dl>, <em>, <embed></embed>, <fieldset>, <figure>, <footer>, <form>, <h1>, <h2>, <h3>, <h4>, <h5>, <h6>, <header>, <hgroup>, <hr>, <i>, <iframe>, <img></img>, <input></input>, <ins>, <kbd>, <label>, <main>, <map>, <mark>, <math>, <menu>, <meter>, <nav>, <noscript>, <object>, <ol>, <output>, <p>, <pre>, <progress>, <q>, <ruby>, <s>, <samp>,, <section>, <select>, <small>, <span>, <strong>, , , <svg>, <table>, <template>, <textarea>, <time>, <ul>, <var>, <video>, <wbr></wbr> и текст
</samp></s></ruby></q></progress></output></object></noscript></meter></math></mark></label></kbd></ins></i></figure></em></dfn></details></del></datalist></data></code></cite></canvas></button></bdi></bdo></b></audio></abbr></a>
Несколько других элементов, которые тоже принадлежат к этому типу, но требуют определённых условий:</video></var></time></textarea></template></svg></strong></span></small></select>
<area></area>
, только внутри элемента <map>
<link></link>
, при наличии атрибута itemprop
<meta></meta>
, при наличии атрибута itemprop
<style>
, при наличии атрибута scoped 3. Sectioning content (Секционный контент): Секционный контент является подмножеством основного потока, он создаёт разделы документа. Элементы этой категории это: <article>, <aside>, <nav> и <section>. 4. Heading content (Заголовочный контент): Заголовочный контент задаёт заголовок секции, явно отмеченной структурным элементом или неявно – самим заголовочным. Примеры: <h1>, <h2>, <h3>, <h4>, <h5>, <h6> и <hgroup>. 5. Phrasing content (Фразовый контент): Фразовый контент определяет текст и его формат. Серии фразового контента образуют параграфы. К данной категории принадлежат следующие элементы: <abbr>, <audio>, <b>, <bdo>, <br>, <button>, <canvas>, <cite>, <code>, <data>, <datalist>, <dfn>, <em>, <embed>, <i>, <iframe>, <img>, <input>, <kbd>, <label>, <mark>, <math>, <meter>, <noscript>, <object>, <output>, <progress>, <q>, <ruby>, <samp>, <script>, <select>, <small>, <span>, <strong>, <sub>, <sup>, <svg>, <textarea>, <time>, <var>, <video>, <wbr> и обычный текст. Ещё несколько элементов входят в данную категорию при соблюдении особых условий: <a>, если содержит в себе только фразовый контент <area>, только внутри элемента <map> <del>, если содержит в себе только фразовый контент <ins>, если содержит в себе только фразовый контент <link>, при наличии атрибута itemprop <map>, если содержит в себе только фразовый контент <meta>, при наличии атрибута itemprop 6. Embedded content (Встроенный контент): Встроенный контент импортирует в документ другой ресурс или вставляет содержимое на другом языке разметки или принадлежащее другому пространству имён. Элементами данной категории являются: <audio>, <canvas>, <embed>, <iframe>, <img>, <math>, <object>, <svg>, <video>. 7. Interactive content (Интерактивный контент): К интерактивному контенту относятся элементы, которые специально разработаны для взаимодействия с пользователем. В данную категорию входят <a>, <button>, <details>, <embed>, <iframe>, <label>, <select> и <textarea>. Некоторые элементы считаются интерактивным контентом только при соблюдении определённых условий: <audio>, если указан атрибут controls <img>, если указан атрибут usemap <input>, если атрибут type не скрыт <menu>, если атрибут type имеет значение toolbar <object>, если указан атрибут usemap <video>, если указан атрибут controls</style>
Какой тег создает параграф?
Тег <p> в HTML используется для создания параграфов (абзацев текста). Это один из самых базовых и часто используемых тегов в HTML, который помогает структурировать текстовое содержимое на веб-странице. Абзацы являются блочными элементами, браузер автоматически добавляет отступы (поля) сверху и снизу абзаца, чтобы визуально отделить его от других элементов, а также разделяют абзацы одной пустой строкой.
Автоматическое закрытие тега <p> происходит, когда внутри него размещаются блочные элементы, такие как <div>, <h1>-<h6>, <ul>, <ol> или <table>. Это связано с правилами парсинга HTML: тег <p> предназначен только для текста и inline-элементов, поэтому браузер закрывает его перед блочными элементами, чтобы сохранить структуру документа. Например, код <p>Текст<div>Блок</div></p> будет преобразован в <p>Текст</p><div>Блок</div>.
Кроме того, закрывающий тег </p> может быть пропущен. Если за <p> сразу следует другой блочный элемент или если в родительском элементе больше ничего нет, браузер автоматически добавит закрывающий тег. Например, <p>Первый абзац.<p>Второй абзац. будет преобразовано в <p>Первый абзац.</p><p>Второй абзац.</p>.
Расскажи про теги форматирования текста
<strong> - Логическое выделение важного текста. Несёт смысловую нагрузку. Используется для акцента на важных частях текста.</strong>
<p>Это <strong>важный</strong> текст.</p>
<b> - визуальное выделение жирным. Не несёт смысловой нагрузки. Устарел, рекомендуется использовать CSS для визуального выделения.</b>
<p>Это <b>жирный</b> текст.</p>
<em> - логический акцент. Используется для смыслового выделения текста.</em>
<p>Это <em>акцентированный</em> текст.</p>
<i> - Визуальное выделение курсивом. Не несёт смысловой нагрузки. Устарел, рекомендуется использовать CSS для визуального выделения.</i>
<p>Это <i>курсивный</i> текст.</p>
<u> - Подчёркивание текста. Используется редко, так как ассоциируется с гиперссылками.</u>
<p>Это <u>подчёркнутый</u> текст.</p>
<s> - Перечёркивание текста. Используется для обозначения устаревшей или удалённой информации.
<p>Это <s>устаревший</s> текст.</p>
используется для отображения текста в виде нижнего индекса (подстрочного текста). Это полезно для написания химических формул, математических выражений и других случаев, где требуется нижний индекс.
<p>Формула воды: H2O.</p>
используется для отображения текста в виде верхнего индекса (надстрочного текста). Он часто применяется для степеней, математических выражений, сносок и дат.
<p>Теорема Пифагора: a2 + b2 = c2.</p>
<br></br> используется для перевода строки внутри текста. Это одиночный тег (не требует закрывающего тега), который разрывает строку и начинает текст с новой строки.
<p>Это первая строка.<br></br>Это вторая строка.</p>
<hr></hr> создает горизонтальную линию, которая используется для визуального разделения контента на странице. Это одиночный тег, который не требует закрывающего тега.
<p>Это текст перед линией.</p>
<hr></hr>
<p>Это текст после линии.</p>
<mark> - Выделение цветом. Используется для акцента на важной информации.
<p>Это <mark>выделенный</mark> текст.</p>
<small> - Уменьшение размера текста. Используется для сносок или юридического текста.
<p>Это <small>мелкий</small> текст.</p>
<cite> - Выделение названий произведений. Обычно отображается курсивом.
<p>Книга <cite>Война и мир</cite> написана Львом Толстым.</p>
<code> - Выделение фрагментов кода. Используется для отображения программного кода.
<p>Используйте <code>console.log()</code> для вывода в консоль.</p>
<kbd> - Обозначение клавиш клавиатуры. Используется для инструкций.
<p>Нажмите <kbd>Ctrl + C</kbd>, чтобы скопировать текст.</p>
<samp> -Пример вывода программы. Используется для отображения результатов выполнения кода.
<p>Программа вывела: <samp>Hello, World!</samp></p>
<var> - Обозначение переменных. Используется в математических выражениях или коде.
<p>Переменная <var>x</var> равна 10.</p>
<dfn> - Определение терминов. Используется для выделения новых понятий.
<p><dfn>HTML</dfn> — это язык разметки для создания веб-страниц.</p>
<abbr> - Обозначение аббревиатур. Может содержать расшифровку в атрибуте title.
<p><abbr>HTML</abbr> используется для создания веб-страниц.</p>
<q> - Короткие цитаты. Обычно выделяется кавычками.
<p>Он сказал: <q>Знание — сила.</q></p>
<blockquote> - Длинные цитаты. Обычно выделяется отступами.
<blockquote>
<p>Это длинная цитата, которая занимает несколько строк.</p>
</blockquote>
</blockquote></q></abbr></dfn></var></samp></kbd></code></cite></small></mark></s>
Какой тег отвечает за заголовки?
Для создания заголовков используется 6 парных тегов: <h1>, <h2>, <h3>, <h4>, <h5>, <h6>, где <h1> — заголовок первого уровня, самый важный и описывающий главную тему текста, а <h6> — заголовок самого низшего уровня. По умолчанию все элементы заголовков создают в разметке блочный контейнер, начинающийся на новой строке и занимающий всю доступную ширину в содержащем его блоке.
Заголовки помогают пользователям с ограниченными возможностями (например, с помощью screen readers) понимать структуру страницы. Правильная иерархия заголовков улучшает навигацию.
- Использование нескольких элементов <h1> на одной странице разрешено стандартом HTML (если они не вложены друг в друга), но это считается плохой практикой. Хорошо, когда на странице есть единственный элемент <h1>, который описывает содержимое этой страницы
- Информация о заголовках может использоваться пользовательскими агентами для автоматического создания оглавления документа.
- Не используйте элементы заголовков для управления размером шрифта. Для этих целей следует применять CSS-свойство font-size.
- Не пропускайте уровни заголовков: всегда начинайте с <h1>, потом используйте <h2> и так далее.
Расскажи про теги списков?
Для создания маркированного списка используется тег <ul>. Маркированные списки используются, когда информация не требует определённой последовательности. Например, список продуктов из примера выше. Не так важно, что будет куплено первым: молоко или хлеб, важно — купить все продукты. К примеру, для навигации используется маркированный список, так как нам не важен порядок элементов.
Для группировки последовательной информации используются нумерованные списки, важной особенностью которых является наличие порядкового номера элемента. Такие списки удобны, если обозначается последовательность действий, которые нужно совершить. Нумерованный список создаётся с помощью тега <ol>, внутри которого также лежат элементы в тегах <li>. К примеру, такой список используется для хлебных крошек, так как они отображают иерархию страниц и показывают пользователю его текущее положение.
Атрибуты <ol>:
1. reversed - логический атрибут. Отображает список в обратном порядке, нумерация от большего к меньшему.
2. start - задаёт начальное число для нумерации. Используются арабские цифры, независимо от типа нумерации.
3. type - pадаёт тип нумерации:
a — строчные буквы.
A — заглавные буквы.
i — строчные римские цифры.
I — заглавные римские цифры.
1 — арабские цифры (по умолчанию).
Тип применяется ко всему списку, если не переопределён в <li>.
Для чего используются тэги <tr>, <th>, <td>? Расскажи про все теги связанные с этим.
Таблица — составной элемент, который формируется сразу из нескольких вложенных друг в друга тегов.
<table> — Контейнер для таблицы.
<caption> — Заголовок таблицы (отображается над таблицей).
<thead>, <tbody>, <tfoot> — Группировка строк: заголовок, тело и подвал таблицы.
<th> (Table Header) — Заголовочная ячейка (по умолчанию жирный текст и выравнивание по центру).
<tr> расшифровывается как «table row», обозначает строку таблицы.
<td> расшифровывается как «table data», обозначает ячейку внутри строки таблицы. Теги <td> располагаются внутри тегов <tr>, а те, в свою очередь, внутри <table>.
<colgroup> и <col></col> — Группировка и стилизация столбцов.
colspan — объединение по горизонтали.
rowspan — объединение ячеек по вертикали у тега <td> или <th>.
Если задать ячейке атрибут rowspan со значением 2, то она как бы «растягивается» на следующую строку. При этом ячейка, которая была под «растянутой» отодвигается в своей же строке вправо, что добавляет в таблицу лишний столбец. Удалив ячейку, которая была под «растянутой», мы избавимся от этого столбца.
Важно:
- Количество ячеек в каждой строке должно быть одинаковым
- Заголовок таблицы caption всегда располагается сразу после открытия таблицы
- Браузеры автоматически добавляют тег <tbody>, если он отсутствует. В небольших таблицах его можно не указывать
- Количество ячеек в каждой строке таблицы должно быть одинаковым после объединения. Важно различать количество тегов <td> и общее количество ячеек. Например, использовав на ячейке атрибут colspan="2" вы получите две логические ячейки, только они будут объединены. По этой причине необходимо убрать одну физическую ячейку из разметки для компенсации
- Если используется атрибут colspan, то из HTML нужно удалить ячейки в той же строке. Если используется атрибут rowspan, то удаляются ячейки в строках ниже
<table>
<!-- Заголовок таблицы -->
<caption>Пример таблицы с использованием всех элементов</caption>
<!-- Группировка столбцов -->
<colgroup>
<col></col>
<col></col>
</colgroup>
<!-- Заголовок таблицы (thead) -->
<thead>
<tr>
<th>Заголовок 1</th>
<th>Заголовок 2</th>
<th>Заголовок 3</th>
</tr>
</thead>
<!-- Тело таблицы (tbody) -->
<tbody>
<tr>
<td>Данные 1</td>
<td>Данные 2</td>
<td>Данные 3</td>
</tr>
<tr>
<td>Объединённая ячейка (rowspan)</td>
<td>Данные 4</td>
<td>Данные 5</td>
</tr>
<tr>
<td>Объединённая ячейка (colspan)</td>
</tr>
</tbody>
<!-- Подвал таблицы (tfoot) -->
<tfoot>
<tr>
<td>Итог 1</td>
<td>Итог 2</td>
<td>Итог 3</td>
</tr>
</tfoot>
</table>
</td></tbody></th></td></colgroup></table></tr></td></td></tr></th></tfoot></tbody></thead></caption></table>
Что такое мнемоники?
Мнемоники в HTML — это специальные последовательности символов, которые используются для отображения символов, которые либо недоступны на клавиатуре, либо имеют особое значение в HTML (например, <, >, &). Мнемоники начинаются с амперсанда (&) и заканчиваются точкой с запятой (;).
Основными типографическими мнемониками в HTML являются:
< — < (less than)
> — > (greater than)
& — & (ampersand)
© — © (знак copyright)
— неразрывный пробел.
€ — €
£ — £
Какой тег отвечает за ссылки?
Для создания ссылки используется парный тег <a> с атрибутом href который указывает адрес страницы для перехода. Тег <a> можно использовать и без атрибута href. Такой тег обозначает «ссылку-заглушку», которая в других условиях может стать обычной ссылкой. Часто ссылки-заглушки используют, чтобы показать, что мы находимся на текущей странице.</a></a>
Ссылки есть:
- Относительные. Такие ссылки ссылаются на тот же сайт, с которого и происходит переход
- Абсолютные. Позволяют переходить на сторонние ресурсы в интернете
- Ссылки-якоря. Используются для перемещения внутри текущего документа
Относительные и абсолютные ссылки отличаются форматом href. В случае с относительными ссылками не указывается адрес самого сайта, на который будет переход, он будет совпадать с сайтом, с которого произошёл переход.
<a>О нас</a> - относительная
<a>О нас</a> - абсолютная. Абсолютные адреса содержат минимум три части: протокол, имя сервера и путь.
Ссылки-якоря удобны в использовании внутри объёмного документа и позволяют переместить пользователя к нужному месту.
<a>Переход на главу 2</a>
…
iv id=”anchor”>
<h2>Глава 2</h2>
</div>
Ссылки-якоря могут ссылаться и на конкретное место на другой странице, к примеру:
Страница contacts.html с элементом:
<h2>Почтовый адрес</h2>
На другой странице (index.html) вы можете сделать ссылку:
<a>Наш почтовый адрес</a>
Динамические страницы (SPA) могут обрабатывать якоря по-своему (например, в React/Vue нужно дополнительно настраивать скролл).
По ссылкам можно не только переходить, но и скачивать файлы. Для этого необходимо просто в атрибуте href прописать ссылку на этот файл.
<a>Браузер скачает меня, а не будет читать</a>
Расскажи про тег img
Тег <img></img> добавляет изображение на страницу. Растровые, векторные — любые, поддержка форматов уже зависит от браузера. Тег <img></img> одиночный, у него нет закрывающей пары, контент в него не положить. Ссылка на картинку и другие параметры задаются с помощью атрибутов.
src
Обязательный атрибут. В качестве значения указывается адрес картинки. Абсолютная или относительная ссылка до файла в любом допустимом формате. Поисковые системы также считывают имена файлов изображений и учитывают их в SEO. Поэтому вы должны дать своему изображению описательное имя файла; dinosaur.jpg лучше, чем img835.png.
alt
Тоже обязательный атрибут. Текст в alt называется альтернативным описанием изображения и рассказывает словами, что изображено. Это полезно, если картинка не загрузилась или пользователь не видит изображения. Если забыть добавить атрибут, то скринридер попытается прочесть название файла: в лучшем случае это будет logo-large, но может быть и b764b84c, что не очень информативно. Если оставить значение атрибута пустым, то скринридер посчитает это изображение декоративным, а не контентным. Если вы добиваетесь именно этого — отлично, но тогда, возможно, стоит вставить его как фоновую картинку с помощью CSS.
Когда картинка по какой-то причине не загружается, браузеры отображают вместо неё альтернативный текст. Его даже можно стилизовать, если задать текстовые стили тегу <img></img>.
width и height
При помощи атрибутов width и height размеры изображения задаются прямо в HTML. Вы можете спросить: зачем так, ведь стиль нужно задавать с помощью CSS? Это нужно, чтобы избежать прыжков контента при загрузке страницы. Частая ситуация, когда картинка очень тяжёлая, а скорость интернета пользователя невысокая. Если размеры не заданы в атрибутах, то <img></img> займёт место как строка текста. После загрузки картинка встанет на страницу, подвинув остальной контент. Пользователей обычно очень раздражают такие скачки. Они теряют место, где читали, а браузеру приходится перерисовывать страницу заново. Сами единицы измерения px указывать не нужно, браузер поймёт.
srcset
Самый простой способ предложить браузеру версию картинки с повышенным разрешением — указать её в атрибуте srcset. Также атрибут srcset можно использовать в сочетании с атрибутом sizes, чтобы подсказать браузеру, какие варианты картинок есть, и помочь ему выбрать подходящие ситуации.
HTML даёт возможность загружать разные изображения в зависимости от разных условий. Частая ситуация: разные картинки под разные ширины экранов.
Можно делать это при помощи тега <picture>, а можно задать атрибуты srcset и sizes прямо в теге <img></img>.
srcset — атрибут, принимающий несколько строк, разделённых запятой. Каждая строка должна содержать ссылку на картинку и указание фактической ширины картинки, значения разделяются пробелом. При этом после ширины ставится единица измерения w, а не px.
sizes — атрибут, в котором указывается одно или несколько условий через запятую. Каждая строка состоит из медиавыражения и ширины блока для картинки, разделённых пробелом. Ширину блока для картинки можно указывать в любых единицах измерения, кроме процентов.
<img></img></picture>
Как браузер читает эти атрибуты:
Смотрит на ширину экрана устройства.
Пытается определить подходящее условие из списка в атрибуте sizes.
Смотрит на размер блока для изображения к этому медиавыражению.
Загружает то изображение из списка в srcset, которое имеет тот же размер, что и выбранный слот. Если такого нет, то загрузится первое изображение, которое больше размера выбранного слота.
При чтении кода из примера выше:
На экранах от 0 до 320 пикселей загрузится logo-small.png.
На экранах от 321 до 480 пикселей загрузится logo-medium.png.
На всех прочих ширинах (или если браузер не поддерживает эти атрибуты) загрузится logo-large.png.
loading
По умолчанию браузеры читают HTML-код страницы и ставят в загрузку все картинки, которые найдут в тегах <img></img>. Это хорошо для пользователя, ведь это контент страницы, и его не нужно будет ждать.
Но бывает, что картинок на странице много, и нам нужно как-то подсказать браузеру: вот эти пока не загружай, дождись, пока пользователь до них прокрутит — и можно начать загрузку. В общем, сам разберись. Удобно, правда?
Для этого можно указать поведение картинки в атрибуте loading:
- eager, то есть немедленно (по умолчанию, как если вообще не указывать атрибут);
- lazy, то есть лениво.
Атрибут сравнительно свежий, и стоит свериться с таблицей поддержки, но это не так важно: атрибут loading работает как улучшение, и если браузер его не поддерживает, то ничего не сломается.
decoding
Перед тем, как показать загруженную картинку, браузер декодирует её — превращает набор байтов в набор пикселей по подходящим алгоритмам. Для больших изображений декодирование может занимать сотни миллисекунд, во время которых страница блокируется.
Если изображения не настолько важны, как текст вокруг них, можно попросить браузер декодировать картинки асинхронно. Тогда браузер приступит к их декодированию попозже, когда самое важное уже будет нарисовано. Или наоборот, можно попросить браузер: «Вот эта картинка очень важная, её нужно декодировать прямо сейчас».
Подсказки задаются в атрибуте decoding:
async — декодировать асинхронно (можно попозже, когда получится);
sync — синхронно (нужно прямо сейчас);
auto — автоматически (браузер, решай сам).
Как и атрибут loading, атрибут decoding можно добавлять как прогрессивное улучшение, потому что в старых браузерах ничего не сломается, а в понимающих этот атрибут — станет лучше.
Расскажи про тег SVG
SVG — векторный формат графики, доступный в вебе. Формат основан на технологии XML.
До появления SVG мы могли использовать только растровые изображения: форматы JPG, PNG. Но растровые изображения имеют ряд недостатков:
Растровые изображения плохо поддаются масштабированию. Это стало особенно актуальным с появлением ретина экранов.
Растровые изображения, как правило, весят существенно больше, чем их svg-собратья.
Растровые изображения можно редактировать только при помощи графических редакторов, в то время как svg-изображения представляют собой читаемый код.
Растровые изображения статичны. SVG внутри себя может содержать CSS-стили или JS-скрипты.
Контейнер svg
SVG не может быть записано без оборачивающего парного тега svg. Так браузер поймёт, что читать этот код нужно по особым правилам и отрисует картинку на странице.
Обводка stroke
Мы можем управлять толщиной и цветом линии, которая будет соединять все перечисленные точки svg-изображения. Причём можно задать один общий атрибут stroke для контейнера <svg>, а можно задавать его каждому отдельному вложенному элементу, сделав обводку разных частей картинки разного цвета.</svg>
Заливка fill
Мы можем задать заливку нарисованной фигуры или оставить её прозрачной, только с обводкой. Если решите залить фигуру, то для этого используйте атрибут fill.
Есть несколько способов подключения svg-изображения к веб-странице. Каждый из них имеет свои преимущества и недостатки.
<img></img>
Самый простой способ — использовать тег <img></img> и указать путь до svg-картинки в значении атрибута src.
<img></img>
При таком способе мы можем легко управлять размерами картинки на странице. Но есть и минусы — не получится изменить цвет фона или заливки у самого SVG при помощи CSS.
background-image
Если svg-картинка не является контентной, то её без особого труда можно подключить в виде фона для элемента
<a> Facebook </a>
В этом случае мы также не имеем возможности управлять стилями SVG через CSS.
Через тег <svg> мы можем управлять стилями SVG через стили. Это даёт возможность даже анимировать векторное изображение! 🎉
Неприятная особенность: если одна и та же SVG-картинка используется в нескольких местах на сайте, и в какой-то момент вы захотите в ней что-то изменить, то нужно будет найти все вставки и вносить исправления в код. При вставке SVG при помощи <img></img> или background-image достаточно будет внести изменения в svg-файл и правки применяться ко всем картинкам.</svg>
Атрибуты
fill — отвечает за заливку фигуры. Может использоваться как для всего контейнера svg, так и для отдельных частей. Более подробно тут → fill.
stroke — отвечает за обводку фигуры. Может использоваться как для всего контейнера svg, так и для отдельных частей. Более подробно тут → stroke.
viewBox — атрибут, отвечающий за размеры окна отображения. Значением будет 4 цифры: min-x, min-y, width и height. В примере выше у контейнера svg указано следующее viewBox=”0 0 24 24”. Значит окно отображения будет начинаться в координатах 0 по оси x и 0 по оси y, а по ширине и высоте будет 24 пикселя. Может указываться как для отдельных элементов, так и для всего контейнера. При помощи этого атрибута можно кадрировать изображение, указывая нужные значения.
width и height — атрибуты, указывающие размеры svg-элемента. Значением может быть число без указания единиц измерения, тогда браузер будет воспринимать его как пиксели: width=”100” height=”100”. Можно указать в процентах: width=”100%” height=”100%”. Могут указываться как оба сразу, так и по отдельности. Если планируете вставлять SVG в HTML кодом, то отдайте предпочтение атрибуту viewBox вместо указания ширины и высоты. Тогда при изменении размеров через CSS картинка будет подстраиваться под размеры с сохранением пропорций.
preserveAspectRatio — атрибут, значение которого указывает браузеру нужно ли сохранять пропорции при масштабировании изображения. Если значение отличается от none, то состоит из двух частей: первая отвечает за выравнивания, вторая отвечает за пропорции.
Значения для выравнивания:
xMinYMin, xMidYMid, xMaxYMax — выравнивает изображение по левому верхнему углу, по центру по обеим осям или по правому нижнему углу.
Значения для обрезки:
meet — картинка стремиться уместиться целиком с сохранением пропорций. Чем-то похоже на поведение background-size: contain для фона.
slice — изображение пытается заполнить собой всё доступное пространство. Похоже на background-size: cover.
Подсказки Скопировать ссылку “Подсказки”
💡 Если захотите внести какие-то сложные правки в SVG, а дизайнера под рукой нет, то можно использовать SVG-Edit, SVG-Edit Online, inkscape или Adobe Illustrator.
💡 Всегда перед использованием SVG в проекте прогоняйте его через оптимизатор SVGO. Он удалит всё ненужное, код станет приятнее и будет меньше весить.
💡 С SVG можно взаимодействовать при помощи JavaScript 🤟
Что такое SVG спрайт?
SVG-спрайт — это файл, получаемый в результате объединения нескольких файлов SVG. Файл-спрайт используется для сокращения количества запросов к сети — вместо загрузки нескольких файлов, грузится только один. Также для уменьшения размеров и читаемости HTML-кода при многократном использовании векторной графики в разметке.
Весь спрайт оборачивается в SVG, каждая SVG-иконка помещается внутрь тега <symbol>, который предоставляет возможность группировать элементы. При этом данные объекты не отображаются до тех пор, пока на них не будут ссылаться при помощи тега <use>.</use></symbol>
<svg>
...
<symbol>
<path></path>
</symbol>
<symbol>
<path></path>
</symbol>
...
</svg>
Каждый элемент <symbol> содержит атрибут id с уникальным идентификатором, который будет использоваться для ссылки на иконку в HTML. Также, каждая иконка содержит атрибут viewBox, который определяет размеры окна отображения. Управляя данным атрибутом, можно указать в какой части холста находится конкретная иконка. Это позволяет использовать в спрайте иконки разных размеров и масштабировать их.</symbol>
Чтобы использовать иконку из спрайта на странице, нужно добавить внутрь тега <svg> тег <use> с обязательным атрибутом href. Данный атрибут должен ссылаться на файл спрайта с указанием id символа, содержащего нужное изображение.</use></svg>
<svg>
<use></use>
</svg>
Преимущества данного метода:
+Сокращение количества HTTP-запросов;
+Возможность стилизации иконок с помощью CSS;
+Адаптивность и масштабируемость изображений без потери качества.
Недостатки:
-Нельзя использовать как фоновое изображение.
SVG-спрайт для фона
Чтобы использовать SVG из спрайта как фоновое изображение, придётся сформировать иконки в спрайте друг за другом (или по сетке).
Изменение фона будет происходить при помощи сдвига области просмотра SVG. Делается это с помощью тега <view>. Этот тег связывает иконку со специальным идентификатором и определяет её область просмотра.</view>
Область просмотра - это ограниченный прямоугольник, который определяет какая часть холста видна пользователю в данный момент.
В спецификации SVG такой способ называется именованными фрагментами.
<svg>
<view></view>
<path></path>
<view></view>
<path></path>
<view></view>
<path></path>
</svg>
Атрибут viewBox здесь работает так же, как для <svg>. Первые два значения определяют сдвиг области просмотра по осям x и y, следующие два — размер иконки. В нашем примере мы имеем три иконки размером 24 на 24 пикселя, расположенные друг за другом по вертикали. Для дальнейшего использования в CSS или HTML необходимо указать путь к файлу и идентификатор конкретного изображения.
.image {
background-image: url('fragments.svg#icon-first-view');
}</svg>
Также можно воспользоваться альтернативным синтаксисом. Вместо того чтобы задавать внутри спрайта каждой иконке именованный фрагмент с использованием тега <view>, можно сразу при подключении файла указать область, которую хотите просмотреть. Для этого после адреса файла необходимо воспользоваться параметрами svgView и viewBox, в котором указать желаемую область просмотра.
.image {
background-image: url('fragments.svg#svgView(viewBox(0, 0, 24, 48))');
}</view>
.image:hover,
.image:focus {
background-image: url(‘fragments.svg#svgView(viewBox(0, 24, 24, 48))’);
}
При наведении курсора на иконку происходит смена области видимости внутри SVG-спрайта.
- Недостатком является невозможность стилизовать иконку при помощи CSS.
SVG-спрайт как стек
Данный способ также использует именованные фрагменты, но, в отличие от предыдущего способа, иконки в спрайте располагаются не последовательно друг за другом, а одна под другой. Каждая иконка скрыта по умолчанию и становится видна при ссылке на неё через именованный фрагмент.
Как и в случае с <symbol>, значки не занимают своё место, поскольку они наложены друг на друга. Но они не скрыты по умолчанию, в отличие от <symbol>. Вот почему нужно скрыть их с помощью display: none;, но не все, а только те, на которые не нацелен идентификатор в URL-адресе спрайта.</symbol></symbol>
<svg>
<defs>
<style>
g { display: none; } g:target { display: inline; }</style>
</defs>
<g>
<path></path>
</g>
<g>
<path></path>
</g>
</svg>
Расскажи про тег <picture>?</picture>
Тег <picture> адаптирует картинки под разные устройства и поддерживаемые форматы. Одна и та же страница может быть открыта на разных устройствах и в браузерных окнах разной ширины. У телефона небольшой экран, и было бы круто не загружать полноразмерные картинки с большим разрешением. В CSS мы можем изменять фон элемента (background-image) в зависимости от ширины экрана, используя медиавыражения. Но если изображение контентное, вставлено в HTML при помощи тега <img></img>, то CSS нам уже не поможет. Мы должны использовать теги <picture> и <source></source>.</picture></picture>
Внутри тега <picture> обязательно должен находиться тег <img></img>, и опционально — теги <source></source>. Браузер анализирует каждый тег <source></source> по порядку, останавливается на первом подходящем под текущие условия и отображает картинку из атрибута srcset. Другие теги <source></source> не анализируются. Если тег <picture> не поддерживается браузером или ни один из тегов <source></source> не подходит под условия, то отображается картинка из тега <img></img>.</picture></picture>
<picture>
<source></source>
<img></img>
</picture>
Подсказки
💡 Если медиавыражение не сработало, то браузер не загружает для него изображение. Так что можно не экономить и писать столько условий, сколько нужно.
💡 Тег <picture> не является полноценным блочным контейнером, как <div>, поэтому стили необходимо применять к тегу <img></img> внутри.</picture>
💡 Старайтесь при вёрстке всегда готовить несколько версий одной и той же картинки для отображения на разных устройствах. Пользователи мобильных телефонов будут вам очень благодарны, если для них вы будете готовить картинки с меньшим разрешением. В то же время пользователям десктопов с экранами высокой чёткости можно показывать картинки с увеличенным разрешением
<picture>
<source></source>
<img></img>
</picture>
В этом примере пользователи с обычными экранами увидят картинку с надписью 750x100. Пользователи, у которых ретиновые дисплеи, увидят картинку с надписью 1500x200.
Одна из частых ошибок при работе с тегом <picture> — забытый тег <img></img>. Помните, что браузер показывает изображение исключительно при помощи тега <img></img>, а теги <source></source> только помогают выбрать нужный URL картинки для текущих условий. Поэтому если внутри <picture> не будет тега <img></img>, то и показывать браузеру будет нечего.</picture></picture>
Используйте все доступные вам медиавыражения по полной. Не обязательно останавливаться только на размерах картинок для мобильных и ПК. Можно использовать медиавыражения для определения тёмной темы на устройстве пользователя и подменять картинку, делая интерфейс более приятным для глаз.
<picture>
<!-- Картинка для тёмной темы -->
<source></source>
<!-- Картинка по умолчанию для светлой темы -->
<img></img>
</picture>
Расскажи про кодировку страницы?
Кодировка страницы определяет, как символы текста будут представлены в браузере. Если кодировка указана неправильно, текст может отображаться некорректно (например, вместо букв будут отображаться “кракозябры”).
Наиболее распространенная кодировка для веб-страниц — UTF-8 ((Unicode Transformation Format — 8-bit) -). Она поддерживает практически все символы из всех языков мира, включая кириллицу, иероглифы и специальные символы.
Чтобы указать кодировку страницы, используется тег <meta></meta> с атрибутами charset. Этот тег должен располагаться внутри <head> вашего HTML-документа.
<head>
<meta></meta>
</head>
Чтобы избежать ошибок кодировки, необходимо уместить метатег с атрибутом charset в первых 1024 байтах документа. Для этого старайтесь указывать его в самом начале тега <head>.
Расскажи про тег <head>
Элемент <head> содержит основную информацию о документе: метаданные (например, заголовок окна или кодировку), ссылки на скрипты и таблицы стилей. Эта информация не отображается на странице браузера.
<title>
Задает заголовок страницы, который отображается во вкладке браузера и в результатах поиска.
<title>Моя страница</title>
<meta></meta>
Указывает кодировку страницы (например, UTF-8 для поддержки всех символов).
<meta></meta>
<meta></meta>
Задает краткое описание страницы, которое используется поисковыми системами в результатах поиска.
<meta></meta>
<meta></meta>
Указывает ключевые слова, связанные с содержимым страницы (устаревший тег, но иногда используется).
<meta></meta>
<meta></meta>
Указывает автора страницы.
<meta></meta>
<meta></meta>
Управляет масштабированием и адаптивностью страницы на мобильных устройствах.
<meta></meta>
<link></link>
Подключает внешний файл CSS для стилизации страницы.
<link></link>
<link></link>
Указывает фавиконку (иконку для вкладки браузера).
<link></link>
<script> Подключает внешний JavaScript-файл или содержит JavaScript-код. <script src="script.js"> </script>
или
<script> console.log("Привет, мир!"); </script>
<style>
Содержит внутренние стили (CSS) для текущей страницы. <style> body { font-family: Arial, sans-serif; background-color: #f0f0f0; }</style>
<base></base>
Задает базовый URL для всех относительных ссылок на странице. Тег <base></base> нужно написать как можно выше к началу разметки, максимально близко к открывающему тегу <head>. Чтобы все идущие ниже относительные ссылки правильно читались.
<base></base>
Атрибут target - Определяет, как на всём сайте будут открываться ссылки и формы:
_self — на текущей странице (значение по умолчанию);
_blank — в новой вкладке;
_parent — в родительском окне;
_top — в контексте верхнего уровня.
Кроме того, в качестве значения можно указать имя фрейма, в котором должен быть загружен результат.
При создании относительных ссылок косая черта / в начале указывает, что адрес нужно строить от корневого каталога. Например, ссылка /new-page.html будет вести на страницу _https://ex.amp/new-page.html_.
Если же в начале относительной ссылки нет слэша, то адрес будет строиться относительно текущего каталога. Предположим, что мы находимся в каталоге about, тогда ссылка new-page.html будет вести на страницу _https://ex.amp/about/new-page.html_.
Если прописан тег <base></base> и в его атрибуте href указан абсолютный адрес, то все ссылки будут строиться именно относительно указанного адреса, а не относительно текущего или корневого каталога.
<template>
Содержит шаблонный контент, который можно клонировать и вставлять с помощью JavaScript.
<template>
<div>Это шаблонный контент.</div>
</template>
<noscript>
Содержит альтернативный контент для браузеров, которые не поддерживают JavaScript.
<noscript>
<p>Ваш браузер не поддерживает JavaScript. Пожалуйста, включите его для корректной работы страницы.</p>
</noscript>
и другие.
</noscript></template></head></title>
Расскажи про метатеги?
В теге <meta></meta> хранится краткое описание страницы, ключевые слова и другие данные, которые могут понадобиться браузерам и поисковым системам. Информация в метатегах называется метаданными. Пользователь не видит их содержимое на странице.
Метатегов может быть любое количество. Все они размещаются внутри тега <head>, желательно в самом начале. Метатеги различаются набором атрибутов и их значений. Один тег содержит одно сообщение: например, описание страницы <meta></meta>, ключевые слова <meta></meta>, кодировку страницы <meta></meta> или другие метаданные. Рекомендуется вставить как минимум метатеги description, viewport, charset. Они помогут оптимизировать сайт для браузера пользователя и поисковых систем.
charset
Задаёт кодировку страницы. Мы рекомендуем писать здесь UTF-8 — это самый распространённый вариант.
<meta></meta>
content
Основное содержимое метатега, которое используется только с http-equiv и name.
1. http-equiv атрибут, который может изменять поведение страницы или серверов. Используется в паре с content. У него есть несколько значений:
- “default-style” — предпочтительный стиль таблиц, который используется на странице. В этом случае в атрибуте content прописывается заголовок из элемента <link></link>, который связан с таблицей CSS-стилей, или заголовок элемента <style>, который содержит таблицу CSS-стилей.
- "refresh" — время автоматического обновления страницы. Страница будет автоматически перезагружаться с интервалом, который указан в секундах.</style>
<meta></meta>
- name имя метатега, которое также определяет его значение. Используется в паре с content. Можно задать следующие значения:
- “keywords” — ключевые слова, которые помогают поисковикам находить страницу в интернете. По сути, это самые важные слова из содержания страницы.
<meta></meta>
- “viewport” — задаёт параметры окна просмотра в браузере. Страницу можно сделать адаптивной, подогнав ширину окна под размеры устройства. В примере ниже width указывает ширину окна просмотра, а initial-scale — коэффициент масштабирования страницы при первом открытии:
<meta></meta>
- “description” — краткое описание страницы, которое видит пользователь, когда находит сайт в поисковике. Например: «Рассказываем, как нарезать картошку тонкими ломтиками» для сайта о кулинарии. Это описание помогает поисковикам найти страницу, а пользователю — узнать, о чём она. Так что не забывайте указывать “description”.
<meta></meta>
- “author” — имя автора страницы.
<meta></meta>
💡 Чтобы избежать ошибок кодировки, необходимо уместить метатег с атрибутом charset в первых 1024 байтах документа. Для этого старайтесь указывать его в самом начале тега <head>.
💡 Атрибуты http-equiv и name выполняют похожие функции, поэтому их нельзя использовать одновременно.
💡 С помощью атрибута http-equiv=”refresh” можно сделать так, чтобы страница отправляла пользователя на другую страницу через определённое количество секунд. Например, отправим пользователя на главную Яндекса через 15 секунд
Что такое SEO оптимизация?
Поисковая оптимизация, SEO (Search Engine Optimization) — это комплекс работ по улучшению позиций сайта в поисковой выдаче. Поисковой выдачей называют результаты поиска по запросу, который пользователь вводит в поисковике. Конечной целью поисковой оптимизации является привлечение большего количества органического трафика (естественных пользователей) на свой сайт.
Основной проблемой продвижения сайтов является отсутствие чёткого и стабильного результата, так как поисковые системы постоянно меняют выдачу по одним и тем же ключевым словам, а количество подходящих поисковых фраз огромно, что делает невозможным гарантировать точные позиции по каждой из них. Несмотря на множество руководств от SEO-специалистов, чёткого списка факторов ранжирования от Google и Яндекс нет, поскольку поисковики не раскрывают деталей работы своих алгоритмов, что заставляет действовать вслепую, постоянно внося правки на сайт.
На позицию в поиске влияют внутренние и внешние факторы. Внутренние включают техническую реализацию сайта, качество контента, адаптивность и доступность — всё, что можно изменить напрямую. Внешние факторы, такие как возраст домена, количество переходов из поиска или по прямой ссылке, не контролируются напрямую разработчиком или SEO-специалистом.
Внутренних факторов ранжирования достаточно много, вот наиболее важные из них:
Удобный UI и UX. Очень важным аспектом продвижения сайта являются поведенческие факторы. Интерфейс (UI, user interface) и пользовательский опыт (UX, user experience) непосредственно влияют на то, захочет ли пользователь остаться на вашем сайте надолго или быстро уйдёт с него. Сайт должен привлекать к себе внимание, вести пользователя туда, куда ему нужно, а не быть набором разрозненной информации, в которой пользователю будет сложно ориентироваться.
Оптимизация загрузки. Чем быстрее сайт загружается, тем быстрее пользователь получит нужную информацию. Оптимизировать загрузку сайта можно как со стороны сервера, так и со стороны фронтенда. На скорость загрузки влияет скорость ответа от сервера, размер картинок, запрашиваемых с сервера, количество подключённых CSS и JavaScript файлов и многое другое, вплоть до количества HTML-разметки.
Индексация. На правильную индексацию сайта влияет наличие файлов robots.txt и sitemap.xml. Первый отвечает за то, чтобы дать инструкции поисковому роботу, на какие файлы сайта смотреть он не должен (например, файлы относящиеся к админ-панели сайта). sitemap.xml это навигация по вашему сайту для ботов, по сути полный список ссылок, которые должны попасть в базу данных поиска.
Семантическая вёрстка. Семантическая вёрстка позволяет более качественно разбивать контент вашего ресурса. Благодаря семантическим тегам браузер, поисковая система и скринридеры могут понимать, какой контент за что отвечает.
Контент сайта. Любые медиаматериалы и текстовая информация — это то, за чем на ваш сайт зашёл пользователь. Если контент вашего сайта будет качественный, пользователю захочется сидеть на вашем сайте больше, возвращаться к нему. Также, поисковые системы проверяют содержимое сайта на плагиат и отдают приоритет уникальному контенту или первоисточникам, в случае наличия одинакового контента на разных ресурсах.
Адаптив под разные устройства. Большое количество пользователей сидят с мобильных устройств. Именно поэтому в сервисах от Google и Яндекс для веб-мастеров есть проверки на мобильную адаптацию вашего сайта. Адаптив сайта является важной частью современного веба и UI и UX дизайна и очень сильно влияет на ранжирование сайта в поисковой системе.
Доступность (a11y). Чем больше людей сможет посещать ваш сайт, комфортно его использовать, тем лучше и для пользователей, и для вашего сайта.
Метаразметка. Теги <title>, <meta></meta>, <meta></meta> и другие метатеги помогают и пользователям, и поисковикам. Часть метатегов отображается в карточке сайта в поисковой выдаче. Часть данных помогает поисковым системам ранжировать сайт лучше.
Open Graph разметка. Open Graph — это разметка страницы для красивого превью в социальных сетях. Она позволяет сделать карточку вашего сайта красивой и продуманной, привлекающей внимание.
Schema.org разметка. Она же микроразметка, которая уже отображается в карточке вашего сайта, когда он попадает в поисковую выдачу. Видов такой микроразметки много и под каждый тип страниц на вашем сайте можно подобрать свою, которая будет лучше вписываться в тематику страниц.</title>
Внешние факторы
К внешним факторам относятся ссылки с других ресурсов на ваш сайт и частота переходов на ваш сайт по ссылкам или из поисковой выдачи.
Обычно на такие факторы повлиять разработчик или SEO-специалист не может. Хотя есть площадки, на которых можно купить рекламные ссылки на ваш сайт и таким образом увеличить ссылочную массу сайта, одновременно привлекая внимание посетителей тех ресурсов.
Многие SEO-специалисты делают так, но стоит помнить о том, что в поисковых системах реализованы алгоритмы борьбы со спамом ссылок и прочими попытками раскрутить сайт агрессивными методами. В случае, если поисковик посчитает купленные ссылки слишком «ненастоящими», он может понизить рейтинг вашего сайта.
Что уже не работает?
Поисковые системы существуют очень давно. Их алгоритмы не стоят на месте. Разработчики поисковых систем постоянно модифицируют их, стараясь сделать поиск более релевантным для пользователя. Благодаря постоянным модификациям в SEO-оптимизации появляются способы, которые уже устарели и не являются актуальными. О них стоит поговорить по двум причинам: во-первых, экскурс в историю расширит ваш кругозор, а во-вторых, чтобы знать, что действительно полезно, а что нет. Что же уже устарело?
Keywords. Meta-тег <meta></meta> часто использовался для поискового продвижения сайтов. Сейчас он является одним из реликтов SEO-продвижения. Поисковые системы давно убрали его из факторов ранжирования, так как этот метатег являлся одним из самых очевидных и простых способов использовать весь список ключевых слов подходящих странице. Это создавало очевидные проблемы: связь ключевых слов с контентом могла быть очень маленькой, спам.
Количество текста. Долгое время SEO-специалисты гнались за тем, чтобы на продвигаемых ими сайтах было как можно больше текстов. При этом в текстах учитывалась плотность ключевых слов и уникальность. Это действительно работало довольно долгое время, но, к счастью, осталось в прошлом. В современных реалиях писать текст на 30 000 символов, который ориентирован только на поисковую систему — не актуально. Поисковые системы больше стали уделять внимания поведенческим фактором и тому, читают ли пользователи эти тексты. Поэтому качество текста стало важнее всех остальных метрик текстов.
Временные ссылки. Методика продвижения ссылками актуальна и до сих пор, но раньше часто использовалась и другая методика — временные ссылки. Можно было арендовать у других сайтов места в сайдбарах, подвале или других статичных частях сайта, которые не менялись между страницами и платить за ссылку каждый месяц. Как правило, такая ссылка соседствовала с несколькими другими такими же ссылками на другие ресурсы. Выгодным было то, что многие сайты делались из расчёта на доход «здесь и сейчас», существовали они максимум год и в таком случае временные ссылки выходили дешевле.
Чёрное SEO — запрещённые методы поисковой оптимизации. Они весьма эффективны, если использовать их с умом, но зачастую дают хороший результат лишь на короткое время, после чего сайт попадает под санкции от поисковых систем. Что же входит в чёрное SEO?
Private Blog Network (BPN) — закрытая сеть ресурсов, которая может состоять из нескольких десятков сайтов одной тематики, направленных на то, чтобы продвигать один главный ресурс. Продвижение идёт через ссылки и упоминания главного ресурса. Основная сложность и особенность построения такой сети сайтов кроется в названии — Private. Такую сеть максимально маскируют, чтобы поисковые системы «думали», что сайты принадлежат разным людям.
Накрутка поведенческих факторов. Поведенческие факторы являются одним из самых сильных факторов ранжирования для поисковых систем. Исходя из этого были придуманы способы их накрутки. Это может происходить в автоматизированном режиме с реальных устройств, благодаря различным сервисам и скриптам. Но, к счастью, поисковые системы умеют понимать настоящих пользователей и ботов, поэтому при не аккуратном накручивании поведенческих факторов поисковая система быстро понимает, что пользователи не настоящие и сайт попадает под санкции.
Расскажи про формы?
Тег <form> добавляет на страницу форму, которую пользователь может заполнить. Сайты используют формы, чтобы получить какую-то информацию от пользователя. Это может быть форма заказа в онлайн-магазине или форма обратной связи. Пользователь заполняет поля или выбирает нужную опцию в списке, а после отправки формы эти данные можно обработать. На странице можно сделать сколько угодно форм. Но одновременно пользователь сможет отправить только одну заполненную форму.
Основным атрибутом у тега <form> является action — путь к файлу, где располагается обработчик данных. Именно туда уйдут данные после отправки формы.
action — здесь указывается ссылка на скрипт, который обработает форму. Это может быть полная URL-ссылка, а может быть относительная, типа html/sendform. Если не указать атрибут action, то страница будет просто обновляться каждый раз, когда отправляется форма.
method — может определять, каким способом будут отправлены на сервер данные, которые ввёл пользователь. Есть два варианта:
get — ответы пользователя дописываются в URL в формате «параметр=значение», например «email=name@yandex.ru». Выглядит это так: site.com/form?name=Max&email=name@yandex.ru. То есть параметр — это то, что вы спрашиваете у пользователя, а значение — его ответ. Пары «параметр=значение» разделяются знаком &. Вариант method=”get” используется по умолчанию, но у него есть ограничение: URL не должен получиться длиннее, чем 3000 символов.
post — данные из формы пакуются в тело формы и отправляются на сервер. В этом случае нет ограничений по объёму данных, поэтому этот способ подойдёт для заполнения базы данных или отправки файлов.
Ещё у атрибута method может быть третье значение — dialog. Если <form> находится внутри <dialog>, то поля формы не очищаются, а сама форма не делает запроса на сервер. Вместо этого, закрывается диалоговое окно.
name — уникальное имя формы. Пользователь его не увидит, зато скрипты смогут найти нужную форму. Например, по этому имени, можно получить доступ к форме из коллекции document.forms.</dialog>
autocomplete — включает или выключает автозаполнение для формы. Браузер может подставить данные, которые пользователь сохранил ранее, например, пароль, номер банковской карты или адрес. Если у пользователя в настройках браузера отключена функция автозаполнения, то этот атрибут уже ни на что не повлияет. Атрибут autocomplete можно задать и для конкретных элементов. Есть два значения:
on — значение по умолчанию. Включает автозаполнение для этой формы.
off — выключает автозаполнение. Например, если форма собирает уникальные данные типа капчи («Введите слово с картинки»).
novalidate — у этого атрибута нет значения. Если его добавить, браузер не будет проверять правильность заполнения формы. Например, верно ли введён адрес почты или URL для тегов <input></input> и <input></input> соответственно. Обычно браузер проверяет, не пропустили ли вы @ или домен. В том числе, проверяется и заполнение обязательных полей.
enctype — определяет, какой вид кодирования будет применён к данным из формы. Этот атрибут обязательно надо ставить, если через форму отправляются файлы, в остальных случаях — не обязательно. Есть три варианта кодирования:
application/x-www-form-urlencoded — это значение по умолчанию. Данные будут кодироваться так, что пробелы превратятся в знак +, а символы вроде кириллицы будут представлены в шестнадцатеричном значении. Например, так будет выглядеть имя Степан: %D0%A1%D1%82%D0%B5%D0%BF%D0%B0%D0%BD 🤡
multipart/form-data — вариант, который надо указать, если через форму отправляются файлы. В этом случае данные не кодируются.
text/plain — в этом случае пробелы меняются на +, а остальные символы передаются без изменений.
accept-charset — задаёт кодировку, в которой сервер принимает данные из формы. Самая распространённая кодировка — UTF-8. Можно указать один вариант или несколько. Например, accept-charset=”UTF-8 Windows-1251”. В этом случае названия кодировок нужно разделять пробелами. Здесь можно задать значение по умолчанию: accept-charset=”UNKNOWN”. Тогда кодировка будет такой, какая используется на странице с формой.
💡 Никогда не используйте method=”get”, если хочется отправить конфиденциальные данные, потому что их можно будет легко прочитать в запросе, который отправляет форма, и даже в адресной строке браузера.
💡 Вариант method=”get” удобен тем, что полученный URL с ответами можно сохранить в закладки. Например, пользователь может заполнить форму и поделиться ссылкой с результатами с кем-нибудь ещё.
Что делает атрибут autocomplete у формы?
Атрибут, при помощи которого форма заполняется в один клик — браузер подставит значения в соответствующие поля. Когда вы заполняете формы, браузер сохраняет те или иные данные — логины, пароли, адреса и e-mail. При заполнении очередной формы браузер идёт в список сохранённой информации, выуживает оттуда данные, которые требуются для этой формы, и вставляет в соответствующие поля.
<form>...</form>
Атрибут autocomplete пишется внутри открывающего тега, и в кавычках прописывается его значение.
Кроме элемента <form>, вы можете указать этот атрибут для любого поля, которое требует ввода данных — <input></input>, принимающий на вход текст или число, <select> или <textarea>.</textarea></select>
В зависимости от значения атрибута autocomplete, будут подставляться данные разного типа. Ниже приведены возможные значения.
Включение и выключение автозаполнения
off — отключает автозаполнение.
on — значение по умолчанию; разрешает автозаполнение.
Авторизация
nickname — никнейм.
username — имя пользователя или название аккаунта.
email — адрес электронной почты.
current-password — текущий пароль пользователя.
new-password — новый пароль.
one-time-code — одноразовый код для верификации пользователя.
Формы имени
name — полное имя.
given-name — имя (в странах, где дают два имени, это первое имя).
additional-name — второе имя (для стран, где дают два имени).
family-name — фамилия.
honorific-prefix — звание или префикс для обращения, например, «Mrs.», «Mr.», «Miss», «Ms.», «Dr.», «Mlle.».
honorific-suffix — окончание имени, например, «Jr.», «B.Sc.», «PhD.», «IV», «мл.».
Данные банковской карты и деньги
cc-given-name — имя (в странах, где дают два имени, это первое имя), как на банковской карте.
cc-additional-name — второе имя, как на банковской карте (для стран, где дают два имени).
cc-family-name — фамилия, как на банковской карте.
cc-name — полное имя в том виде, как оно указано на банковской карте.
cc-csc — код безопасности (три цифры на обороте карты).
cc-exp — месяц и год окончания срока действия карты.
cc-exp-month — месяц окончания срока действия карты.
cc-exp-year — год окончания срока действия карты.
cc-number — номер банковской карты или счёта.
cc-type — платёжная система.
transaction-amount — сумма перевода.
transaction-currency — валюта перевода.
Личные данные
bday — полная дата рождения.
bday-day — день рождения (число).
bday-month — месяц рождения.
bday-year — год рождения.
language — язык в формате языкового тега из списка BCP 47.
sex — пол или гендер.
organization — название организации.
organization-title — профессия или должность в организации.
photo - url-адрес изображения.
Адрес
address-level1 — административная единица первого уровня. Обычно это название области, региона или штата.
address-level2 — административная единица второго уровня. В странах с двумя уровнями это чаще всего название населённого пункта.
address-level3 — административная единица третьего уровня.
address-level4 — административная единица четвёртого уровня, если адрес её содержит.
address-line1, address-line2, address-line3 — отдельные строки для адресов, которые используются, если нет поля со значением street-address.
country — код страны.
country-name — страна.
street-address — адрес, начиная с улицы. Не должен содержать название города, страны и индекс.
postal-code — почтовый индекс.
Телефон
tel — полный номер телефона, включая код страны.
tel-area-code — телефонный код региона страны.
tel-country-code — телефонный код страны.
tel-extension — добавочный номер.
tel-local — номер телефона без кодов страны и региона.
tel-local-prefix — номер локальной АТС.
tel-local-suffix — номер абонента внутри сети АТС.
tel-national — номер телефона без кода страны.
Ссылки
impp — адрес сервера для мессенджера, например, xmpp:username@example.net.
url — адрес сайта.
Подсказки
💡 Автозаполнение может быть отключено в настройках браузера.
💡 Если автозаполнение не отключено в браузере и атрибут autocomplete не прописан в теге, то его значение по умолчанию принимается за on.
💡 Если задать autocomplete=”on” для <form>, то это сработает для всех вложенных элементов формы.
💡 Значение атрибута может перебиваться значениями, прописанными в дочерних элементах.
💡 Для правильного автозаполнения желательно, чтобы:
- у элементов <input></input>, <select> и <textarea> были прописаны атрибуты name или id;
- они были обёрнуты в тег <form>;
- сама форма имела кнопку отправки — <input></input> или <button> с атрибутом type="submit".
💡 Если пользователь должен ввести имя, рекомендуется использовать значение autocomplete="name" вместо разделения на поля с отдельными частями имени, потому что имена могут иметь совершенно разную структуру.
💡 По той же причине рекомендуется использовать значение autocomplete="cc-name", если нужно вводить данные банковской карты.
💡 При создании нового аккаунта или изменении пароля следует использовать autocomplete="new-password" для полей «Введите новый пароль» и «Подтвердите новый пароль», но не для поля «Введите текущий пароль». Это сделано, чтобы случайно не вписать существующий пароль, а также предложить помощь в создании безопасного пароля.</button></textarea></select>
Japanese example: ご飯が熱い。.
Эти коды определены стандартом ISO 639-1Текст с инлайновым стилем
Можно ли переопределить инлайновый стиль? Да, но с оговорками. Инлайновые стили имеют наивысший приоритет (специфичность 1,0,0,0), поэтому обычные CSS-правила их не перекрывают. Однако есть способы их переопределить: 1. Использование !important в CSS Добавление !important к свойству в CSS перебивает инлайновый стиль: p { color: blue !important; /* Переопределит инлайновый color: red */ } Минусы: Злоупотребление !important усложняет поддержку кода. Другие !important в CSS могут снова переопределить ваш стиль. 2. JavaScript Можно динамически изменить или удалить атрибут style: document.querySelector('p').style.color = 'green'; // Изменит цвет document.querySelector('p').removeAttribute('style'); // Удалит инлайновые стили Почему лучше избегать инлайновых стилей? Сложность поддержки: Трудно искать и менять стили, разбросанные по HTML. Низкая переиспользуемость: Один и тот же стиль придётся дублировать в каждом элементе. Проблемы с каскадом: Из-за высокого приоритета их сложно переопределить без !important.