Википедия:СкрытаяСтруктура

О скрытии текста см. Справка:Скрытый текст.

Используя каскадные таблицы стилей (CSS), можно скрыть текст в шаблонах популярных веб-браузеров , в зависимости от пустоты параметра шаблона. Пожалуйста, не используйте это. На этой странице описан конкретный весьма спорный метод достижения этого.

Брайон ВИББЕР [1], ведущий разработчик MediaWiki , описывает некоторые проблемы со hiddenStructure.

...он использует CSS-хак для сокрытия структурных элементов, что может не сработать для текстовых браузеров, текстовых рендеров статей и любого HTML-отображения статьи, которое не использует таблицу стилей на этом сайте. Это вредит как доступности основного сайта, так и повторному использованию материала за пределами сайта.

Graham87 [2], слепой Википедист, обсуждает программное обеспечение для чтения с экрана и его ограничения, а также заявляет, что, по его мнению, нам не следует использовать CSS-хаки.

...Я настоятельно рекомендую не использовать CSS-хаки, поскольку значительное количество людей будут использовать старые программы чтения с экрана и, возможно, не смогут обновиться.

Как это работает

Этот метод основан на существовании класса CSS "hiddenStructure". Для en:wiki это определено в MediaWiki:Common.css как (редакция от 20:50, 17 января 2006 г.):

/* hiddenStructure из Monobook - позволяет выборочно скрывать разметку в шаблонах */ . hiddenStructure { display : none ; speak : none ; }     

Любой текст, содержащийся в конструкции HTML, <div class="hiddenStructure">text to hide</div>скрыт. Класс также может быть применен к любому элементу XHTML , например <span> и строкам wikitable ( |- ).

Эта функция затем объединяется с функцией параметра по умолчанию для достижения избирательного скрытия текста в зависимости от пустоты параметра шаблона. Вот пример простой таблицы, которая может быть частью шаблона. если "параметр" оставить пустым, class{{{parameter|}}}преобразуется в просто class, завершая вызов CSS, как указано выше. Для любого значения "параметра" стиль становится бессмысленным и удаляется программным обеспечением MediaWiki, делая строку таблицы видимой, а также данные.

{| |- класс {{{ параметр |}}} = "hiddenStructure" ! Заголовок | {{{ параметр |}}} |}   

Предостережения

Этот метод не скрывает текст ни от каких браузеров, не поддерживающих CSS (включая текстовые браузеры, такие как Lynx ), ни от пользователей многих типов экранных ридеров и другого программного обеспечения для обеспечения доступности. Страницы, использующие этот метод, также не отображаются должным образом при копировании на другие сайты, которые не были настроены на использование класса 'hiddenStructure', включая Википедии на иностранных языках и, возможно, некоторые зеркала Википедии. Поэтому важно, чтобы шаблон был читаемым и имел смысл для того, кто использует такой браузер . Если страница зависит от этого метода, чтобы иметь смысл, то она нарушит контрольную точку доступности WAI priority 1. Некоторые распространенные ошибки включают чрезмерное использование этого, отмечая каждую строку в информационном поле как необязательную или используя этот метод для скрытия знаков препинания вокруг необязательного параметра.

  • Использование CSS для сокрытия непреднамеренно созданной структуры документа считается плохой практикой веб-дизайна.
    • Такой подход будет передавать избыточную информацию клиентам.
    • В некоторых случаях этот подход включает в себя сырой викитекст, который не имеет смысла в контексте статьи (например, template:Infobox President )
  • Такой подход создает в визуальном браузере несколько иную версию содержимого статьи, чем в других браузерах и поисковых системах.
  • Если две версии статьи различаются по смыслу, то страница не проходит все три уровня проверки доступности.

Проблемы

USS Monitor использует CSS-хаки
USS Monitor с использованием меташаблонов
Blue Whale использует CSS-хаки
Blue Whale использует мета-шаблоны

Проблема с использованием hiddenStructure заключается в том, что он скрывает строки нестандартным способом. В то время как другие веб-сайты скрывают данные, просто не отправляя их с сервера [1] , hiddenStructure откладывает этот процесс сокрытия на клиента. Из-за этого некоторые браузеры, не поддерживающие или несовместимые с CSS, неправильно отображают страницы, используя этот хак (см. рисунки справа).

Некоторые страницы минимизируют ущерб, отображая параметр только в том случае, если он на самом деле непустой (используя синтаксис {{{parameter|}}}). Таким образом отображается только строка, а не уродливое имя параметра {{{parameter}}}. Конечно, в шаблонах с большим количеством условных строк это все равно приводит к отображению ненужных данных в браузерах, несовместимых с CSS.

Из-за этих проблем многие статьи плохо отображаются для людей с ограниченными возможностями. В худшем случае читателю отображается/считывается ряд параметров Wiki-разметки. В лучшем случае отображается/считывается ряд пустых строк.

По этим причинам не следует использовать hiddenStructure .

Сноска:

  1. ^ Большинство веб-сайтов используют PHP или ASP для условной отправки данных с сервера. Более продвинутые разработки кэшируют результаты, поэтому скрипты PHP/ASP выполняются только один раз для каждого возможного результата.

Решения

Решения, в порядке предпочтения, следующие.

  • Используйте ParserFunctions
    • Преимущество : меньшая нагрузка на сервер и меньшая вероятность сбоев по сравнению с другими методами.
  • Используйте код Weeble (например , {{ row }} ).
    • Преимущество : можно полностью избежать меташаблонов.
    • Проблема : Требует передачи пустого параметра (обычно if=). Кроме того, если и когда в MediaWiki реализованы условные операторы, может быть сложнее найти и заменить шаблоны, использующие этот метод. Наконец, шаблоны, использующие Weeble, как правило, самые уродливые с точки зрения кода.
  • Ограничьте или исключите условные строки.
    • Преимущество : позволяет избежать проблем с условным отображением строк.
    • Проблема : позволяет избежать проблемы условного отображения строк.

Другие возможные решения, которые нецелесообразны, включают:

  • Разбиение одного шаблона на несколько других шаблонов, каждый из которых обрабатывает различные комбинации параметров.
    • Проблема : Это кошмар для обслуживания, который противоречит цели шаблонов (централизация обслуживания в одном месте).

Другие применения

Одно из нескольких принятых применений CSS display: none— скрыть кладжи, вставленные только для устаревших браузеров, от современных браузеров. Типичный пример — кнопки сброса ; ни один современный браузер не нуждается в этом, так как пользователи могут очищать текстовые области локально. Устаревшие браузеры не предлагают эту функцию и зависят от кнопки сброса . Пользователи, нажимающие кнопку сброса непреднамеренно, потеряют свои изменения в форме. Скрытая кнопка сброса , видимая только в устаревших браузерах, позволяет избежать этой проблемы.

Другие примеры — это приложения, специфичные для медиа : эмотиконы (смайлики) как ASCII-арт, возможно, бесполезны для речевых браузеров, их можно скрыть там, возможно, предлагая WAV. Иногда информация об авторских правах может быть ограничена печатным выводом. Информация, обычно доступная только для визуальных браузеров с мышью, может быть дополнительно отображена как обычный текст, скрытый от большинства выходных носителей, за исключением текста, печати и речи. Похожая концепция — <noscript>элемент.

Известные применения

Это неполный список известных способов применения, которые, как утверждается, считаются безвредными . Пожалуйста, добавьте то, что вы найдете:
  1. Шаблон:Скрыть (изменить историю ссылок на обсуждения) - вероятно, не безвредно

Смотрите также

Получено с "https://en.wikipedia.org/w/index.php?title=Wikipedia:HiddenStructure&oldid=1155417879"