Как создать отступ табуляции в html

у меня ситуация следующая

‹body›
Test‹br /›
test‹br /›
test1‹br /›
‹/body›

Мне нужно добавить вкладку после 2-го теста и 3-го теста

так что это похоже на это.

Тест
тест
тест1

Есть ли специальный объект HTML или специальный символ для TAB. например. Неразрывный пробел == & NBSP ;

Благодарность


person Elitmiar    schedule 01.07.2009    source источник
comment
Я думаю, что соглашусь со списком, а затем использую list-style-type: none; в css, чтобы скрыть пули   -  person Elitmiar    schedule 01.07.2009
comment
если вы остановились на списке, почему вы приняли ответ, в котором даже не упоминаются списки?   -  person geowa4    schedule 01.07.2009
comment
Пожалуйста, как советует один из ответов, обновите вопрос о размечаемой структуре данных. Презентация не должна рассматриваться, пока не известна структура.   -  person Quentin    schedule 01.07.2009


Ответы (9)


О боги, столы?

Выглядит как очевидный пример использования списков с переменным полем и типом стиля списка: нет; приправленный по вкусу.

person annakata    schedule 01.07.2009
comment
Это не очевидно. Пример, приведенный OP, слишком расплывчатый, чтобы сказать, являются ли это данными списка или чем-то еще. - person Quentin; 02.07.2009

Самый простой способ, который я могу придумать, - это поместить текст во вложенные элементы div. Затем добавьте поле слева от div. Он будет стекать вниз, давая вам отступ.

<div id='testing'>
  Test1
  <div>
    Test2
    <div>
      Test3
    </div>
  </div>
</div>

С CSS:

#testing div {
  margin-left: 10px;/*or whatever indentation size you want*/
}

С ними вы получите красивое дерево, независимо от того, на сколько уровней вы хотите пройти.

EDIT: вы также можете использовать padding-left, если хотите.

person geowa4    schedule 01.07.2009
comment
+1 За упоминание бесконечной глубины уровня. Это может пригодиться, плюс будет лучше работать с динамическим контентом. - person Sam152; 01.07.2009
comment
Я говорю list вместо div, но, по крайней мере, это субъективный разговор. +1 - person annakata; 01.07.2009
comment
Вопрос заключался в том, чтобы отображать символы табуляции на HTML-страницах, а не в том, как их подделать с помощью CSS... - person Mathias Bynens; 01.07.2009
comment
@Matthias - нелепое беспокойство, CSS - более чем разумное предположение, учитывая HTML. Значительно менее 1% вашей аудитории не будет иметь CSS. - person annakata; 01.07.2009
comment
@annakata Списки великолепны, но для бесконечной глубины гораздо проще просто добавить div под родительский узел. И обход xpath сокращается, так как вам больше не нужно добавлять ul повсюду. @Mathias Bynens Мой ответ лучше подходит для решения его проблемы, чем использование символов табуляции. - person geowa4; 01.07.2009
comment
ew divs — почему бы не выбрать что-то с семантикой, может быть, список или таблицу, в зависимости от типа данных? - person Jørn Schou-Rode; 01.07.2009
comment
@annakata, решение CSS более разумно? Это зависит от ситуации. Поскольку вопрос заключался в том, как отображать символы табуляции, я предполагаю, что он действительно хочет отображать символы, а не просто делать отступ для текста. Существует большая разница. - person Mathias Bynens; 01.07.2009
comment
Я понятия не имею, почему этот вариант или вариант списка не являются принятым ответом - использование списка или div, безусловно, является лучшим вариантом. - person Thomas Owens; 01.07.2009
comment
@Jørn Schou-Rode: div для простоты - person geowa4; 16.07.2009

Если вы действительно хотите использовать табуляции (== символы табуляции), вы должны использовать следующее решение, которое я не рекомендую:

<pre>
test
&#x09;test
&#x09;&#x09;test
</pre>

или замените <pre/> на <div style="white-space: pre" />, чтобы добиться того же эффекта, что и с элементом pre. Вы даже можете ввести буквальный символ табуляции вместо экранированного &#x09;.

Я не рекомендую его для большинства применений, потому что он не совсем семантический, то есть из просмотра исходного кода HTML программа не может вывести какую-либо полезную информацию (например, «это заголовок» или что-то в этом роде). Вам лучше использовать один из хороших margin-left примеров других ответов. Однако, если вы хотите отобразить некоторые вещи, такие как исходный код или что-то подобное, приведенное выше решение сделает это.

Ваше здоровье,

person Boldewyn    schedule 01.07.2009

До сих пор было множество хороших и плохих ответов, но, похоже, никто не обращался к тому, как вы можете выбирать между решениями.

Первый вопрос, который следует задать: "Какова взаимосвязь между отображаемыми данными?". Как только на этот вопрос будет дан ответ, используемая вами структура HTML должна быть очевидна.

Пожалуйста, обновите вопрос, объясняя больше о структуре контента, который вам нужно отобразить, и вы обнаружите, что вы получаете лучшие ответы. На данный момент все, от использования <pre> до таблиц, может быть лучшим решением.

person edeverett    schedule 01.07.2009
comment
Лучший ответ. Может быть 10 или 15 правильных решений, но OP очень плохо справился с поддержанием качества в этом вопросе. - person cherouvim; 02.11.2011

См. Создание вкладки в HTML от Неха Синха:

предварительно отформатировано

Вы можете поместить символы табуляции непосредственно в свой HTML, если используете так называемый «предварительно отформатированный» текст. В HTML окружите текст, который вы хотите «предварительно отформатировать», парой начального и конечного тегов «<pre>» и «</pre>».

Столы

Вы можете использовать html-таблицу, чтобы все, что вы помещаете в набор строк (<tr>) и столбцов (<td>), отображалось одинаково. Вы можете очень хорошо скрыть границы таблицы, чтобы показать только текст.

Использование тега <dd>

Тег <dd> предназначен для определения форматирования. Но это также создаст разрыв строки и сделает вкладку!

&nbsp;, Неразрывное пространство

Один фрагмент HTML-кода, который я использовал в примере с таблицей, — это «неразрывный пробел», закодированный как в HTML. Это просто дает вам некоторое пространство. В сочетании с разрывом строки, <br>, вы можете создать некоторые эффекты табуляции.

Пример

Test<br/>
<pre>   </pre>test<br/>
<pre>       </pre>test1<br/>

это должно отображаться как:

Test
    test
        test1
person Eugene Yokota    schedule 01.07.2009
comment
pre здесь совершенно не нужен, гораздо лучше добавить padding-left на основе единиц em к вложенным элементам. - person annakata; 01.07.2009
comment
@annakata, есть несколько способов содрать с кота шкуру. Я лично предпочел бы способ css, но могут быть ситуации, которые являются излишними или просто невозможными. pre Я думаю, это быстрый взлом. - person Eugene Yokota; 01.07.2009
comment
Этот ответ не заслуживает принятия, тем более что спрашивающий даже не использовал этот метод для решения своей проблемы. - person Thomas Owens; 01.07.2009
comment
НЕ используйте этот ответ как принятое решение. Варианты использования предварительных списков, списков определений и/или неразрывных пробелов совершенно не подходят для создания «вкладок». Ответ Георга IV, безусловно, наиболее уместен. - person Metro Smurf; 01.07.2009
comment
Эй, отдай должное @annakata. Это решение также имеет большой смысл. - person geowa4; 01.07.2009
comment
Я не знаю, почему это решение было отклонено. Если вы используете редактор (в веб-приложении) и хотите впоследствии отобразить содержимое в обычном div, pre — это то, что вам нужно. Да, вы должны использовать таблицы или списки (полностью с этим согласен!), но некоторые пользователи упрямы и хотят использовать вкладки так же, как в Word... вы можете преобразовать вкладки программно, но это не всегда так просто, как звучит. - person thomasvdb; 08.07.2011

Я думаю, что проще всего использовать html-теги UL/LI, а затем манипулировать (и удалять, если необходимо) символы перед списком с помощью CSS.

Тогда вы получите что-то вроде:

  • Контрольная работа
  • Test2
    • Test 3

Дополнительная информация + рабочий пример, который вы можете попробовать.

person Perica Zivkovic    schedule 01.07.2009

Если вам нужно отобразить вкладки (символы табуляции), используйте элемент PRE (или любой элемент с примененным к нему white-space: pre; CSS).

<!doctype html>
<html>
 <head>
  <title>Test</title>
  <style type="text/css">
   pre { white-space: pre; }
  </style>
 </head>
 <body>
  <p>This is a normal paragraph, blah blah blah.</p>
  <pre>This is preformatted text contained within a <code>PRE</code> element. Oh, and here are some tab characters, each of which are displayed between two arrows: ← → ← → ← → ← →</pre>
 </body>
</html>

Вы также можете использовать объект HTML &#x09; вместо фактического символа табуляции.

person Mathias Bynens    schedule 01.07.2009
comment
Или любой блочный элемент с white-space: nowrap; - person l0b0; 01.07.2009
comment
Разве тег pre не испортит большое количество форматирования и не заставит использовать уродливый шрифт с одинаковой шириной символов? - person Sam152; 01.07.2009
comment
Код в кодовых блоках на этом сайте находится в предварительных тегах. Они кривые и некрасивые? - person Macha; 01.07.2009
comment
Хорошо, первая часть бесполезна, но это правильное решение, поэтому не понимаю отрицательного ответа. - person pihentagy; 02.06.2010

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


На мой взгляд, это гораздо более чистый способ, чем многие другие ответы здесь, и может быть лучшим способом:

  • Он не использует кучу пробелов (что дает мало контроля с точки зрения форматирования стилей).
  • Он не использует тег <pre>, который следует использовать только для форматирования (на мой взгляд, это должно быть крайним средством или особым случаем использования в HTML); Тег <pre> также зависит от пробелов и не зависит от CSS, если используется по назначению
    #P3#
  • списки описаний позволяют лучше контролировать форматирование и иерархию
  • Я бы сказал, что ответ @geowa4 — еще один отличный способ добиться этого. <div> позволяет контролировать стиль, и, в зависимости от использования/цели, его ответ может быть лучшим способом.


<dl>
  <dt>Test</dt>
  <dd>
    <dl>
      <dt>test</dt>
      <dd>test1</dd>
    </dl>
  </dd>
</dl>

person ctwheels    schedule 18.01.2016

Я не сторонник использования CSS для имитации символа табуляции.
Для отступов да, во что бы то ни стало используйте CSS, но не для символов табуляции.

Для одной вкладки я бы заменил на &nbsp; &nbsp; (4 пробела).
Это похоже на то, что использовалось для форматирования вашего вопроса для отображения.
Дополнительным преимуществом этого является (если кто-то скопирует ваш текст)
   при вставке в Word или Блокнот интервалы сохранятся.

Пример:

Test<br />
&nbsp; &nbsp; test<br />
&nbsp; &nbsp; &nbsp; &nbsp; test1

Примечание. Если ваш текст находится в теге <pre>, то ответ @Boldewyn будет лучшим вариантом.
Имейте в виду, что текст в теге <pre> может отображаться иначе, чем ожидалось.

person MikeTeeVee    schedule 04.05.2021