api.farmanager.com: валидизация html

Здесь можно обсудить сайт Far Manager и предложить идеи по его дальнейшему развитию.
User avatar
Centaur
Posts: 1083
Joined: Tue 05 Apr, 2005 20:09
Location: Novosibirsk, Russia

Re: api.farmanager.com: валидизация html

Post by Centaur » Wed 22 Sep, 2010 05:47

Latest post of the previous page:

John Doe wrote:В Энциклопедии практикуется смесь <br> и <p>.
В таблицах везде <br>.
Существуют ли на этот счёт какие-нибудь рекомендации?
И как лучше <br> или <br /> ?

P.S.
Мануалы смотрел, но не имея практики применения трудно представить.
<p>…</p> — это один абзац текста. Их можно использовать в том числе и в таблицах, и в списках.

<br> — это перенос строки внутри абзаца. Черновик спецификации HTML5 говорит:
HTML5 wrote: br elements must be used only for line breaks that are actually part of the content, as in poems or addresses.

The following example is correct usage of the br element:

Code: Select all

<p>P. Sherman<br>
42 Wallaby Way<br>
Sydney</p>
br elements must not be used for separating thematic groups in a paragraph.

<br /> — это XHTML’ная форма <br>. Если в начале файла сказано

Code: Select all

<!DOCTYPE html 
     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
пишем <br />, <hr />, <img alt="…" src="…" />; если

Code: Select all

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
— пишем <br>, <hr>, <img alt="…" src="…">.

User avatar
John Doe
Бюрократ
Posts: 11419
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 101 times

Re: api.farmanager.com: валидизация html

Post by John Doe » Wed 22 Sep, 2010 09:09

Centaur wrote: <p>…</p> — это один абзац текста. Их можно использовать в том числе и в таблицах, и в списках.

<br> — это перенос строки внутри абзаца. Черновик спецификации HTML5 говорит:
Мануалы смотрел, и спрашиваю именно потому что практика с ними расходится.
Сформулирую вопрос так: есть ли какой-нибудь практический смысл в некоторых местах всё же использовать <br> вместо <p>?
Вроде как <p> добавляет интервал между абзацами...
Может для таблиц это не желательно и т.п.?
Centaur wrote:

Code: Select all

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
В Энциклопедии указано <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">.
Есть ли смысл поменять на 4.01?
Centaur wrote:

Code: Select all

        "http://www.w3.org/TR/html4/loose.dtd">
Такого в Энциклопедии нет.

User avatar
HaRT
Moderator
Posts: 8118
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 68 times
Been thanked: 106 times

Re: api.farmanager.com: валидизация html

Post by HaRT » Wed 22 Sep, 2010 11:33

John Doe wrote:Существуют ли на этот счёт какие-нибудь рекомендации?
Скажу банальность: <p> — это тэг абзаца; <br> — это тэг разрыва строки без образования нового абзаца. В принципе у абзаца могут быть такие параметры, как красная строка, вертикальные отступы перед и после, межстрочный интервал и пр.; да и с выравниванием разрыв строки взаимодействует иначе. Т.ч. эти два тэга — это просто разные вещи, хотя иногда и похожие.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
Centaur
Posts: 1083
Joined: Tue 05 Apr, 2005 20:09
Location: Novosibirsk, Russia

Re: api.farmanager.com: валидизация html

Post by Centaur » Wed 22 Sep, 2010 16:59

John Doe wrote:Сформулирую вопрос так: есть ли какой-нибудь практический смысл в некоторых местах всё же использовать <br> вместо <p>?
Нет.
John Doe wrote:Вроде как <p> добавляет интервал между абзацами...
Может для таблиц это не желательно и т.п.?
Если и так, то решать это нужно правильными стилями, а не уродованием разметки.
John Doe wrote:В Энциклопедии указано <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">.
Есть ли смысл поменять на 4.01?
Изменения между 4.0 и 4.01 не слишком существенны.
John Doe wrote:
Centaur wrote:

Code: Select all

        "http://www.w3.org/TR/html4/loose.dtd">
Такого в Энциклопедии нет.
К валидатору.

В спецификации XML сказано, что, когда в Document Type Declaration используется PUBLIC идентификатор, за ним должно следовать два строковых литерала. Как с этим в SGML — не знаю, скорее всего полный бардак. Чисто из соображений дисциплины предпочитаю максимально соответствовать синтаксису XHTML.

User avatar
John Doe
Бюрократ
Posts: 11419
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 101 times

Re: api.farmanager.com: валидизация html

Post by John Doe » Wed 22 Sep, 2010 17:15

Centaur wrote:
John Doe wrote:
Centaur wrote:

Code: Select all

        "http://www.w3.org/TR/html4/loose.dtd">
Такого в Энциклопедии нет.
К валидатору.
Валидатор не настаивает, иначе бы я не спрашивал.
Значит эту строку стоит добавить?
Centaur wrote:
John Doe wrote:В Энциклопедии указано <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">.
Есть ли смысл поменять на 4.01?
Изменения между 4.0 и 4.01 не слишком существенны.
Поэтому и спрашиваю: Есть ли смысл просто заменить на 4.01?
Centaur wrote:Если и так, то решать это нужно правильными стилями, а не уродованием разметки.
Кстати о стилях: типичная ситуация в энциклопедии:


Во всех таблицах стройные ряды значений процентов.
Можно ли от этого избавиться с помощью стилей?

g_max
Posts: 88
Joined: Mon 20 Mar, 2006 15:19
Location: Винница

Re: api.farmanager.com: валидизация html

Post by g_max » Wed 22 Sep, 2010 17:47

Без стилей:

Code: Select all

<table class="cont">
  <col width="40%">
  <col width="60%">
  <tr>
    <td>name</td>
    <td>description</td>
  </tr>
</table>
Со стилями (которые надо прописать соответственно):

Code: Select all

<table class="cont">
  <col class="forty">
  <col class="sixty">
  <tr>
    <td>name</td>
    <td>description</td>
  </tr>
</table>

User avatar
John Doe
Бюрократ
Posts: 11419
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 101 times

Re: api.farmanager.com: валидизация html

Post by John Doe » Wed 22 Sep, 2010 17:54

Из примера видно, что смысла в этом мало...

User avatar
t-rex
Страшный и ужасный
Posts: 4871
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Contact:

Re: api.farmanager.com: валидизация html

Post by t-rex » Wed 22 Sep, 2010 18:11

а если пример изменить вот так?

Code: Select all

<table class="cont">
  <col class="name">
  <col class="description">
  <tr>
    <td>name</td>
    <td>description</td>
  </tr>
</table>

g_max
Posts: 88
Joined: Mon 20 Mar, 2006 15:19
Location: Винница

Re: api.farmanager.com: валидизация html

Post by g_max » Wed 22 Sep, 2010 18:43

Смысл в том, чтобы формат задавать один раз в таблице - стилями или напрямую - а не в каждом ряду или ячейке.

User avatar
John Doe
Бюрократ
Posts: 11419
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 101 times

Re: api.farmanager.com: валидизация html

Post by John Doe » Wed 22 Sep, 2010 19:55

Да, идеально было бы один раз.
Но спрятать значения в стиль тоже было бы хорошо (для последующих изменений), однако таблиц много, значения разные, и внятные имена стилям вряд ли не получится задать, а значит почти весь смысл теряется...

g_max
Posts: 88
Joined: Mon 20 Mar, 2006 15:19
Location: Винница

Re: api.farmanager.com: валидизация html

Post by g_max » Wed 22 Sep, 2010 20:22

Поиск в \fardev\enc\enc_rus2:
"cont" width=" - 235 файлов
"cont" width="40%" - 230 файлов
Я думаю, что для 230 файлов есть смысл завести ещё два стиля для колонок в таблицах.
Кроме 40/60, нашел ещё 30/10/60, 30/70, 10/90, 25/10/10/55, 20/20/60 - по одной-две таблицы.
В них можно, не создавая стилей, прописать один раз для каждой таблицы width каждой колонки. Это будет лучше, чем писать его для каждой ячейки каждой строки каждой таблицы.

User avatar
John Doe
Бюрократ
Posts: 11419
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 101 times

Re: api.farmanager.com: валидизация html

Post by John Doe » Wed 22 Sep, 2010 23:22

g_max wrote:Это будет лучше, чем писать его для каждой ячейки каждой строки каждой таблицы.
Однозначно!
А можно ли похожим образом оптимизировать атрибут class="cont"? (В примере выше)
Или необходимо указывать его для каждой ячейки?

Max Rusov
Posts: 3600
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Been thanked: 7 times

Re: api.farmanager.com: валидизация html

Post by Max Rusov » Wed 22 Sep, 2010 23:37

Стили можно указывать так:

Code: Select all

table.cont td {...}  /* Для всех клеток таблицы со стилем "cont" */

table.cont tr.header td {...} /* Для всех клеток таблицы со стилем "cont" в строке со стилем "header" */

table.cont td.somestyle {...} /* Для всех клеток со стилем "somestyle " таблицы со стилем "cont" */

User avatar
John Doe
Бюрократ
Posts: 11419
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 101 times

Re: api.farmanager.com: валидизация html

Post by John Doe » Thu 23 Sep, 2010 12:30

Max Rusov wrote:Стили можно указывать так:
После всех рекомендованых табличных оптимизаций general.html похудел почти в полтора раза!

Прошу знатоков посмотреть, можно ли ещё что-то улучшить вот в такой обычной таблице:

User avatar
Centaur
Posts: 1083
Joined: Tue 05 Apr, 2005 20:09
Location: Novosibirsk, Russia

Re: api.farmanager.com: валидизация html

Post by Centaur » Thu 23 Sep, 2010 12:51

John Doe (про loose.dtd)) wrote:Значит эту строку стоит добавить?
В спецификации HTML 4.0 уже тоже рекомендовали писать. Да, стоит.
John Doe wrote:Есть ли смысл просто заменить на 4.01?
Да. Но пройтись валидатором ещё раз после замены.
John Doe wrote:Кстати о стилях: типичная ситуация в энциклопедии:

Во всех таблицах стройные ряды значений процентов.
Можно ли от этого избавиться с помощью стилей?
Тут вот уже написали, Как Это можно делать. А я хочу внести немного разброда и шатаний на тему, Что можно было бы делать Вместо Этого.

Во-первых, если ширину колонок вообще не указывать, браузер в большинстве случаев сам сделает как надо. Исключение — если в правой колонке будет много текста, он может для левой выбрать слишком маленькую ширину, и текст будет переноситься. Ну так на это есть white-space: nowrap:

Code: Select all

tr>th:first-child, tr>td:first-child { white-space: nowrap }
Во-вторых, я вообще не уверен, что список пар <константа, описание> в действительности имеет табличный характер. На мой взгляд, это типичный definition list. Он обладает теми преимуществами, что более экономно расходует горизонтальное пространство и, следовательно, лучше выглядит на узких экранах.

И ещё пару замечаний о семантической вёрстке и типографике.

Code: Select all

<tr class="cont"><td class="cont" width="10%">0x00000001</td><td class="cont" width="90%">FILE_ATTRIBUTE_READONLY. Файл только для чтения. Приложения могут читать такой файл, но не могут записывать или удалять его.</td></tr>
Фрагменты программного кода, такие как 0x00000001 и FILE_ATTRIBUTE_READONLY, нужно заключать в <code>…</code>. (Фрагменты вывода программ, в том числе строки из пользовательского интерфейса — в <samp>. Пользовательский ввод и нажимаемые клавиши — в <kbd>. <tt> не несёт семантической нагрузки и не должен использоваться.)

Code: Select all

<tr class="cont"><td class="cont" width="10%">0x00000800</td><td class="cont" width="90%">FILE_ATTRIBUTE_COMPRESSED. Файл или каталог сжат. Для файла это означает, что все данные его сжаты, для каталога - что компрессия по умолчанию применяется ко всем его файлам и подкаталогам.</td></tr>
Здесь после «для каталога» должно быть тире (—), а не дефис.

Code: Select all

<tr class="cont">
    <td class="cont" width="40%">N=<dfn><a name="abs">abs</a></dfn>(N)</td>
    <td class="cont" width="60%">Возвращает абсолютную величину числового аргумента <em>N</em>.</td>
  </tr>
N=<dfn><a name="abs">abs</a></dfn>(N) должно быть в <code>…</code> (если мы считаем макроязык за язык программирования. А мы, видимо, считаем).

<dfn><a name="abs">abs</a></dfn> можно короче записать как <dfn id="abs">abs</dfn>.

<em>N</em>: N выделяется курсивом не потому, что это <em>что-то важное</em>, а потому, что это <var>переменная</var>.

User avatar
Centaur
Posts: 1083
Joined: Tue 05 Apr, 2005 20:09
Location: Novosibirsk, Russia

Re: api.farmanager.com: валидизация html

Post by Centaur » Thu 23 Sep, 2010 12:56

John Doe wrote:Прошу знатоков посмотреть, можно ли ещё что-то улучшить вот в такой обычной таблице:

Code: Select all

<th width="100%" colspan="2">
width="100%" избыточно, можно со спокойной совестью опустить.

Code: Select all

<td><a name="Shell">Shell</a></td>
Спокойно заменяется на <td id="Shell">Shell</td>.

User avatar
t-rex
Страшный и ужасный
Posts: 4871
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Contact:

Re: api.farmanager.com: валидизация html

Post by t-rex » Thu 23 Sep, 2010 13:03

Centaur wrote:

Code: Select all

<td><a name="Shell">Shell</a></td>
Спокойно заменяется на <td id="Shell">Shell</td>.

Вот это делать не надо, chm не будет работать как надо.

Post Reply

Return to “Обсуждение www.farmanager.com”