add thead

This commit is contained in:
Ilya Kantor 2015-03-13 20:32:48 +03:00
parent 891e5d1971
commit 54e4f0c859
15 changed files with 70 additions and 2 deletions

View file

@ -4,15 +4,19 @@
Например, таблица истинности для `^`: Например, таблица истинности для `^`:
<table> <table>
<thead>
<tr> <tr>
<th>`a`</th> <th>`a`</th>
<th>`b`</th> <th>`b`</th>
<th>результат</th> <th>результат</th>
</tr> </tr>
</thead>
<tbody>
<tr><td>`0`</td><td>`0`</td><td>`0`</td></tr> <tr><td>`0`</td><td>`0`</td><td>`0`</td></tr>
<tr><td>`0`</td><td>`1`</td><td>`1`</td></tr> <tr><td>`0`</td><td>`1`</td><td>`1`</td></tr>
<tr><td>`1`</td><td>`0`</td><td>`1`</td></tr> <tr><td>`1`</td><td>`0`</td><td>`1`</td></tr>
<tr><td>`1`</td><td>`1`</td><td>`0`</td></tr> <tr><td>`1`</td><td>`1`</td><td>`0`</td></tr>
</tbody>
</table> </table>
Случаи `0^0` и `1^1` заведомо не изменятся при перемене мест, поэтому нас не интересуют. А вот `0^1` и `1^0` эквивалентны и равны `1`. Случаи `0^0` и `1^1` заведомо не изменятся при перемене мест, поэтому нас не интересуют. А вот `0^1` и `1^0` эквивалентны и равны `1`.

View file

@ -474,6 +474,7 @@ alert( 100 >> 3 ); // 12, деление на 2 три раза, целая ча
Что-то в таком духе: Что-то в таком духе:
<table> <table>
<thead>
<tr> <tr>
<th>Пользователь</th> <th>Пользователь</th>
<th>Просмотр статей</th> <th>Просмотр статей</th>
@ -482,6 +483,8 @@ alert( 100 >> 3 ); // 12, деление на 2 три раза, целая ча
<th>Изменение товаров</th> <th>Изменение товаров</th>
<th>Управление правами</th> <th>Управление правами</th>
</tr> </tr>
</thead>
<tbody>
<tr> <tr>
<td>Гость</td> <td>Гость</td>
<td>Да</td> <td>Да</td>
@ -506,11 +509,13 @@ alert( 100 >> 3 ); // 12, деление на 2 три раза, целая ча
<td>Да</td> <td>Да</td>
<td>Да</td> <td>Да</td>
</tr> </tr>
</tbody>
</table> </table>
Если вместо "Да" поставить `1`, а вместо "Нет" -- `0`, то каждый набор доступов описывается числом: Если вместо "Да" поставить `1`, а вместо "Нет" -- `0`, то каждый набор доступов описывается числом:
<table> <table>
<thead>
<tr> <tr>
<th>Пользователь</th> <th>Пользователь</th>
<th>Просмотр статей</th> <th>Просмотр статей</th>
@ -520,6 +525,8 @@ alert( 100 >> 3 ); // 12, деление на 2 три раза, целая ча
<th>Управление правами</th> <th>Управление правами</th>
<th>В 10-ной системе</th> <th>В 10-ной системе</th>
</tr> </tr>
</thead>
<tbody>
<tr> <tr>
<td>Гость</td> <td>Гость</td>
<td>1</td> <td>1</td>
@ -547,6 +554,7 @@ alert( 100 >> 3 ); // 12, деление на 2 три раза, целая ча
<td>1</td> <td>1</td>
<td> = 31</td> <td> = 31</td>
</tr> </tr>
</tbody>
</table> </table>
В последней колонке находится десятичное число, которое получится, если прочитать строку доступов в двоичном виде. В последней колонке находится десятичное число, которое получится, если прочитать строку доступов в двоичном виде.

View file

@ -52,11 +52,15 @@ var a = Number("123"); // 123, тот же эффект
``` ```
<table> <table>
<thead>
<tr><th>Значение</th><th>Преобразуется в...</th></tr> <tr><th>Значение</th><th>Преобразуется в...</th></tr>
</thead>
<tbody>
<tr><td>`undefined`</td><td>`NaN`</td></tr> <tr><td>`undefined`</td><td>`NaN`</td></tr>
<tr><td>`null`</td><td>`0`</td></tr> <tr><td>`null`</td><td>`0`</td></tr>
<tr><td>`true / false`</td><td>`1 / 0`</td></tr> <tr><td>`true / false`</td><td>`1 / 0`</td></tr>
<tr><td>Строка</td><td>Пробельные символы по краям обрезаются.<br>Далее, если остаётся пустая строка, то `0`, иначе из непустой строки "считывается" число, при ошибке результат `NaN`.</td></tr> <tr><td>Строка</td><td>Пробельные символы по краям обрезаются.<br>Далее, если остаётся пустая строка, то `0`, иначе из непустой строки "считывается" число, при ошибке результат `NaN`.</td></tr>
</tbody>
</table> </table>
Например: Например:

View file

@ -33,7 +33,10 @@ alert( 'Привет\nМир' ); // выведет "Мир" на новой ст
<table> <table>
<CAPTION>Специальные символы</CAPTION> <CAPTION>Специальные символы</CAPTION>
<tr><th>Символ</th><th>Описание</th> <thead>
<tr><th>Символ</th><th>Описание</th></tr>
</thead>
<tbody>
<tr><td>\b</td><td>Backspace</td></tr> <tr><td>\b</td><td>Backspace</td></tr>
<tr><td>\f</td><td>Form feed</td></tr> <tr><td>\f</td><td>Form feed</td></tr>
<tr><td>\n</td><td>New line</td></tr> <tr><td>\n</td><td>New line</td></tr>
@ -41,6 +44,7 @@ alert( 'Привет\nМир' ); // выведет "Мир" на новой ст
<tr><td>\t</td><td>Tab</td></tr> <tr><td>\t</td><td>Tab</td></tr>
<tr><td>\uNNNN</td><td>Символ в кодировке Юникод с шестнадцатеричным кодом `NNNN`. Например, `\u00A9` -- юникодное представление символа копирайт &#xA9; <tr><td>\uNNNN</td><td>Символ в кодировке Юникод с шестнадцатеричным кодом `NNNN`. Например, `\u00A9` -- юникодное представление символа копирайт &#xA9;
</td></tr> </td></tr>
</tbody>
</table> </table>
### Экранирование специальных символов ### Экранирование специальных символов

View file

@ -162,10 +162,13 @@ alert( '12-34-56'.replace( *!*/-/g*/!*, ":" ) ) // 12:34:56
В строке для замены можно использовать специальные символы: В строке для замены можно использовать специальные символы:
<table> <table>
<thead>
<tr> <tr>
<th>Спецсимволы</th> <th>Спецсимволы</th>
<th>Действие в строке замены</th> <th>Действие в строке замены</th>
</tr> </tr>
</thead>
<tbody>
<tr> <tr>
<td>`$$`</td> <td>`$$`</td>
<td>Вставляет `"$"`.</td> <td>Вставляет `"$"`.</td>
@ -190,6 +193,7 @@ alert( '12-34-56'.replace( *!*/-/g*/!*, ":" ) ) // 12:34:56
</td> </td>
<td>где `n` -- цифра или двузначное число, обозначает `n-ю` по счёту скобку, если считать слева-направо.</td> <td>где `n` -- цифра или двузначное число, обозначает `n-ю` по счёту скобку, если считать слева-направо.</td>
</tr> </tr>
</tbody>
</table> </table>
Пример использования скобок и `$1`, `$2`: Пример использования скобок и `$1`, `$2`:

View file

@ -150,12 +150,15 @@ var formatter = new Intl.DateFormatter([locales, [options]])
Полный список свойств `options`: Полный список свойств `options`:
<table> <table>
<thead>
<tr> <tr>
<th>Свойство</th> <th>Свойство</th>
<th>Описание</th> <th>Описание</th>
<th>Возможные значения</th> <th>Возможные значения</th>
<th>По умолчанию</th> <th>По умолчанию</th>
</tr> </tr>
</thead>
<tbody>
<tr> <tr>
<td>`localeMatcher` </td> <td>`localeMatcher` </td>
<td> Алгоритм подбора локали</td> <td> Алгоритм подбора локали</td>
@ -241,6 +244,7 @@ var formatter = new Intl.DateFormatter([locales, [options]])
<td>`short`, `long`</td> <td>`short`, `long`</td>
<td></td> <td></td>
</tr> </tr>
</tbody>
</table> </table>
**Все локали обязаны поддерживать следующие наборы настроек:** **Все локали обязаны поддерживать следующие наборы настроек:**

View file

@ -31,11 +31,14 @@ var result = nodeA.compareDocumentPosition(nodeB);
Возвращаемое значение -- битовая маска (см. [](/bitwise-operators)), биты в которой означают следующее: Возвращаемое значение -- битовая маска (см. [](/bitwise-operators)), биты в которой означают следующее:
<table> <table>
<thead>
<tr> <tr>
<th>Биты</th> <th>Биты</th>
<th>Число</th> <th>Число</th>
<th>Значение</th> <th>Значение</th>
</tr> </tr>
</thead>
<tbody>
<tr><td>000000</td><td>0</td><td>`nodeA` и `nodeB` -- один и тот же узел</td></tr> <tr><td>000000</td><td>0</td><td>`nodeA` и `nodeB` -- один и тот же узел</td></tr>
<tr><td>000001</td><td>1</td><td>Узлы в разных документах (или один из них не в документе)</td></tr> <tr><td>000001</td><td>1</td><td>Узлы в разных документах (или один из них не в документе)</td></tr>
<tr><td>000010</td><td>2</td><td>`nodeB` предшествует `nodeA` (в порядке обхода документа)</td></tr> <tr><td>000010</td><td>2</td><td>`nodeB` предшествует `nodeA` (в порядке обхода документа)</td></tr>
@ -43,6 +46,7 @@ var result = nodeA.compareDocumentPosition(nodeB);
<tr><td>001000</td><td>8</td><td>`nodeB` содержит `nodeA`</td></tr> <tr><td>001000</td><td>8</td><td>`nodeB` содержит `nodeA`</td></tr>
<tr><td>010000</td><td>16</td><td>`nodeA` содержит `nodeB`</td></tr> <tr><td>010000</td><td>16</td><td>`nodeA` содержит `nodeB`</td></tr>
<tr><td>100000</td><td>32</td><td>Зарезервировано для браузера</td></tr> <tr><td>100000</td><td>32</td><td>Зарезервировано для браузера</td></tr>
</tbody>
</table> </table>
Понятие "предшествует" -- означает не только "предыдущий сосед при общем родителе", но и имеет более общий смысл: "раньше встречается в порядке [прямого обхода](http://algolist.manual.ru/ds/walk.php) дерева документа. Понятие "предшествует" -- означает не только "предыдущий сосед при общем родителе", но и имеет более общий смысл: "раньше встречается в порядке [прямого обхода](http://algolist.manual.ru/ds/walk.php) дерева документа.

View file

@ -321,11 +321,15 @@ IE тоже поддерживает XPath, но эта поддержка не
Есть 6 основных методов поиска элементов DOM: Есть 6 основных методов поиска элементов DOM:
<table> <table>
<thead>
<tr> <tr>
<td>Метод</td> <td>Метод</td>
<td>Ищет по..</td> <td>Ищет по...</td>
<td>Ищет внутри элемента?</td> <td>Ищет внутри элемента?</td>
<td>Поддержка</td> <td>Поддержка</td>
</tr>
</thead>
<tbody>
<tr> <tr>
<td>`getElementById`</td> <td>`getElementById`</td>
<td>`id`</td> <td>`id`</td>
@ -362,6 +366,7 @@ IE тоже поддерживает XPath, но эта поддержка не
<td></td> <td></td>
<td>везде</td> <td>везде</td>
</tr> </tr>
</tbody>
</table> </table>
Практика показывает, что в 95% ситуаций достаточно `querySelector/querySelectorAll`. Хотя более специализированные методы `getElement*` работают чуть быстрее, но разница в миллисекунду-другую редко играет роль. Практика показывает, что в 95% ситуаций достаточно `querySelector/querySelectorAll`. Хотя более специализированные методы `getElement*` работают чуть быстрее, но разница в миллисекунду-другую редко играет роль.

View file

@ -507,10 +507,13 @@ alert( document.body.my ); // 123 в IE8-
Таблица сравнений для атрибутов и свойств: Таблица сравнений для атрибутов и свойств:
<table> <table>
<thead>
<tr> <tr>
<th>Свойства</th> <th>Свойства</th>
<th>Атрибуты</th> <th>Атрибуты</th>
</tr> </tr>
</thead>
<tbody>
<tr> <tr>
<td>Любое значение</td> <td>Любое значение</td>
<td>Строка</td> <td>Строка</td>
@ -523,6 +526,7 @@ alert( document.body.my ); // 123 в IE8-
<td>Не видны в `innerHTML`</td> <td>Не видны в `innerHTML`</td>
<td>Видны в `innerHTML`</td> <td>Видны в `innerHTML`</td>
</tr> </tr>
</tbody>
</table> </table>
Синхронизация между атрибутами и свойствами: Синхронизация между атрибутами и свойствами:

View file

@ -41,7 +41,10 @@
Таблица несовместимостей: Таблица несовместимостей:
<table> <table>
<thead>
<tr><th>Клавиша</th><th>Firefox</th><th>Остальные браузеры</th></tr> <tr><th>Клавиша</th><th>Firefox</th><th>Остальные браузеры</th></tr>
</thead>
<tbody>
<tr> <tr>
<td>[key ;]</td> <td>[key ;]</td>
<td>59</td> <td>59</td>
@ -57,6 +60,7 @@
<td>109</td> <td>109</td>
<td>189</td> <td>189</td>
</tr> </tr>
</tbody>
</table> </table>
Остальные коды одинаковы, код для нужного символа будет в тестовом стенде. Остальные коды одинаковы, код для нужного символа будет в тестовом стенде.
@ -218,10 +222,14 @@ document.getElementById('only-upper').onkeypress = function(e) {
Стоит иметь в виду три основных категории клавиш, работа с которыми отличается. Стоит иметь в виду три основных категории клавиш, работа с которыми отличается.
<table> <table>
<thead>
<tr> <tr>
<th>Категория</th> <th>Категория</th>
<th>События</th> <th>События</th>
<th>Описание</th> <th>Описание</th>
</tr>
</thead>
<tbody>
<tr> <tr>
<td>Печатные клавиши [key S] [key 1] [key ,]</td> <td>Печатные клавиши [key S] [key 1] [key ,]</td>
<td>`keydown` <td>`keydown`
@ -266,6 +274,7 @@ document.getElementById('only-upper').onkeypress = function(e) {
Кроме того, если сочетание вызвало браузерное действие или диалог ("Сохранить файл", "Открыть" и т.п., ряд диалогов можно отменить при `keydown`), то может быть только `keydown`. Кроме того, если сочетание вызвало браузерное действие или диалог ("Сохранить файл", "Открыть" и т.п., ряд диалогов можно отменить при `keydown`), то может быть только `keydown`.
</td> </td>
</tr> </tr>
</tbody>
</table> </table>
Общий вывод можно сделать такой: Общий вывод можно сделать такой:

View file

@ -182,11 +182,14 @@
События изменения данных: События изменения данных:
<table> <table>
<thead>
<tr> <tr>
<th>Событие</th> <th>Событие</th>
<th>Описание</th> <th>Описание</th>
<th>Особенности</th> <th>Особенности</th>
</tr> </tr>
</thead>
<tbody>
<tr> <tr>
<td>`change`</td> <td>`change`</td>
<td>Изменение значения любого элемента формы. Для текстовых элементов срабатывает при потере фокуса.</td> <td>Изменение значения любого элемента формы. Для текстовых элементов срабатывает при потере фокуса.</td>
@ -208,6 +211,7 @@
<td>Срабатывают при вставке/копировании/удалении текста. В них можно отменить действие браузера, и тогда вставке/копирования/удаления не произойдёт.</td> <td>Срабатывают при вставке/копировании/удалении текста. В них можно отменить действие браузера, и тогда вставке/копирования/удаления не произойдёт.</td>
<td>Вставляемое значение получить нельзя: на момент срабатывания события в элементе всё ещё *старое* значение, а новое недоступно.</td> <td>Вставляемое значение получить нельзя: на момент срабатывания события в элементе всё ещё *старое* значение, а новое недоступно.</td>
</tr> </tr>
</tbody>
</table> </table>
Ещё особенность: в IE8- события `change`, `propertychange`, `cut` и аналогичные не всплывают. То есть, обработчики нужно назначать на сам элемент, без делегирования. Ещё особенность: в IE8- события `change`, `propertychange`, `cut` и аналогичные не всплывают. То есть, обработчики нужно назначать на сам элемент, без делегирования.

View file

@ -26,6 +26,7 @@
Они были детально рассмотрены в предыдущих главах раздела. Они были детально рассмотрены в предыдущих главах раздела.
<table> <table>
<thead>
<tr> <tr>
<th></th> <th></th>
<th>`XMLHttpRequest`</th> <th>`XMLHttpRequest`</th>
@ -34,6 +35,8 @@
<th>`EventSource`</th> <th>`EventSource`</th>
<th>`WebSocket`</th> <th>`WebSocket`</th>
</tr> </tr>
</thead>
<tbody>
<tr> <tr>
<th>Кросс-доменность</th> <th>Кросс-доменность</th>
<td>да, кроме IE9-<a class="link-ref" href="#x1">x1</a></td> <td>да, кроме IE9-<a class="link-ref" href="#x1">x1</a></td>
@ -66,6 +69,7 @@
<td>Кроме IE</td> <td>Кроме IE</td>
<td>IE 10, FF11, Chrome 16, Safari 6, Opera 12.5<a class="link-ref" href="#w1">w1</a></td> <td>IE 10, FF11, Chrome 16, Safari 6, Opera 12.5<a class="link-ref" href="#w1">w1</a></td>
</tr> </tr>
</tbody>
</table> </table>
Пояснения: Пояснения:

View file

@ -206,12 +206,15 @@ CSS для анимации:
Остальные кривые являются короткой записью следующих `cubic-bezier`: Остальные кривые являются короткой записью следующих `cubic-bezier`:
<table> <table>
<thead>
<tr> <tr>
<th>`ease`<sup>*</sup></th> <th>`ease`<sup>*</sup></th>
<th>`ease-in`</th> <th>`ease-in`</th>
<th>`ease-out`</th> <th>`ease-out`</th>
<th>`ease-in-out`</th> <th>`ease-in-out`</th>
</tr> </tr>
</thead>
<tbody>
<tr> <tr>
<td>`(0.25, 0.1, 0.25, 1.0)`</td> <td>`(0.25, 0.1, 0.25, 1.0)`</td>
<td>`(0.42, 0, 1.0, 1.0)`</td> <td>`(0.42, 0, 1.0, 1.0)`</td>
@ -224,6 +227,7 @@ CSS для анимации:
<td><img src="ease-out.svg"></td> <td><img src="ease-out.svg"></td>
<td><img src="ease-in-out.svg"></td> <td><img src="ease-in-out.svg"></td>
</tr> </tr>
</tbody>
</table> </table>
* - По умолчанию, если никакой временной функции не указано, -- используется `ease`. * - По умолчанию, если никакой временной функции не указано, -- используется `ease`.

View file

@ -381,8 +381,10 @@ SayWidget.prototype['setSayHandler'] = SayWidget.prototype.setSayHandler
<table> <table>
<thead> <thead>
<tr>
<th>Экстерн</th> <th>Экстерн</th>
<th>Экспорт</th> <th>Экспорт</th>
</tr>
</thead> </thead>
<tbody> <tbody>
<tr> <tr>

View file

@ -86,11 +86,14 @@ document.body.innerHTML = "";
Как ни странно, браузеры ведут себя по-разному: Как ни странно, браузеры ведут себя по-разному:
<table> <table>
<thead>
<tr><th></th> <tr><th></th>
<th>`parentNode`</th> <th>`parentNode`</th>
<th>`nextSibling`</th> <th>`nextSibling`</th>
<th>`children.length`</th> <th>`children.length`</th>
</tr> </tr>
</thead>
<tbody>
<tr> <tr>
<td>Chrome/Safari/Opera</td> <td>Chrome/Safari/Opera</td>
<td>`null`</td> <td>`null`</td>
@ -109,6 +112,7 @@ document.body.innerHTML = "";
<td>`null`</td> <td>`null`</td>
<td>`0`</td> <td>`0`</td>
</tr> </tr>
</tbody>
</table> </table>
Иными словами, браузеры ведут себя с различной степенью агрессивности по отношению к элементам. Иными словами, браузеры ведут себя с различной степенью агрессивности по отношению к элементам.