Jak zdobyć postać tabulatora?


124

W HTML nie ma znaku na karcie, ale nie wiem, dlaczego mogę skopiować i wkleić tutaj:. (Nie możesz zobaczyć pełnej szerokości, ale jeśli klikniesz, aby edytować moje pytanie, zobaczysz znak.) Jeśli mogę skopiować i wkleić znak tabulatora, powinien istnieć odpowiednik Unicode, który można zakodować w html . Wiem, że nie istnieje, ale jest to tajemnica, której nigdy nie byłem w stanie pojąć.

Moje pytanie brzmi: dlaczego nie ma znaku Unicode dla karty, nawet jeśli mogę go skopiować i wkleić?


8
Oto znak tabulacji: „”. Po prostu napisz do mnie, jeśli potrzebujesz innych postaci! Mam też spacje, myślniki i greckie litery!
szalony

W systemie Unix: Ctrl + Shift + U, a następnie 9 dla znaku wcięcia.
neverMind9

StackOverflow wymusza tekst komentarza bardziej surowo niż pytania lub odpowiedzi. `` „” I „” zostały wklejone znaki Tab, notowane różne sposoby.
MarkHu

Odpowiedzi:


165

Jasne, że istnieje jednostka dla kart:

	

(Karta zawiera znak ASCII 9 lub Unicode U + 0009).

Jednak, podobnie jak literalne tabulatory (te, które wpisujesz w edytorze tekstu), wszystkie znaki tabulacji są traktowane jako białe znaki przez parsery HTML i zwinięte w pojedynczą spację, z wyjątkiem tych w <pre>bloku, gdzie dosłowne tabulatory będą renderowane jako 8 spacji w czcionka o stałej szerokości.


1
To ciekawe, ale jeśli jest to znak Unicode, to html w ogóle nie powinien go zmieniać (zwijać), prawda?
Abbey Graebner

2
Unicode nie ma własnego znaku tabulacji; U + 0009 to to samo, co znak tabulacji, który otrzymujesz po naciśnięciu Tab. (Myślę, że możesz mylić encje HTML z zestawem znaków Unicode.)
josh3736

9
bardziej ogólnie możesz użyć & # 9; w dowolnym elemencie ze spacjami w stylu CSS: pre; jak w jsfiddle.net/cancerbero_sgx/sp269/3
cancerbero

96

Próbować &emsp;

zgodnie z dokumentacją:

Jednostki znaków &ensp;i &emsp;oznaczają odpowiednio spację en i spację em, gdzie spacja en jest równa połowie rozmiaru w punktach, a spacja em jest równa rozmiarowi w punktach bieżącej czcionki. W przypadku czcionek o stałej szerokości, program użytkownika może traktować spację en jako odpowiednik znaku spacji, a spację em jako odpowiednik dwóch znaków spacji.

Link do dokumentów: https://www.w3.org/MarkUp/html3/specialchars.html


48

umieść go między <pre></pre>tagami, a następnie użyj tych znaków&#9;

nie działałoby bez <pre></pre>tagów


4
Okay, to jest świetne, próbowałem użyć &#9;samego siebie, ale nie zadziałało. Dzięki za wzmiankę <pre>!
Abbey Graebner

1
Doskonała sugestia. Dlaczego dokładnie tak się zachowuje?
pkanane

1
tag <pre> definiuje wstępnie sformatowany tekst, każdy tekst umieszczony wewnątrz tagu zachowa spacje, podziały wierszy, tabulatory itp. Zwykle będzie wyświetlany czcionką o stałej szerokości, np. Courier
Raymund

2
Możesz użyć dowolnego tagu html z kombinacją white-space: pre-wrap;lubwhite-space: pre;
Petr Hurtak

16

Publikowanie innej alternatywy, aby była pełniejsza. Kiedy wypróbowałem odpowiedzi oparte na „wstępnych”, dodali również dodatkowe pionowe podziały linii.

Każda tabulacja może zostać przekonwertowana na sekwencję nierozdzielających spacji, które nie wymagają zawijania.

"&nbsp;&nbsp;&nbsp;&nbsp;" 

Nie jest to zalecane w przypadku wielokrotnego / rozległego użycia na stronie. Podejście do marginesów / dopełnień div wydawałoby się znacznie czystsze.


5
Jeśli tabulatory są używane jako narzędzie do wyrównywania tekstu do prawej strony tabulatorów (gdzie tekst czcionki o stałej szerokości po lewej stronie nie jest równy), konwersja na znaki nbsp nie rozwiąże problemu.
Steve Midgley

4

Używam <span style="display: inline-block; width: 2ch;">&#9;</span>zakładki o szerokości dwóch znaków.


To nie to samo, co karty, po prostu dodaje spację, więc nie ma z tym kolumn.
Salami


1

Jak wspomniano, ze względów wydajności sekwencyjne spacje są skonsolidowane w jedną przestrzeń, którą przeglądarka faktycznie wyświetla. Pamiętaj, co oznacza ML w HTML. Jest to język znaczników, zaprojektowany do kontrolowania sposobu wyświetlania tekstu, a nie białych znaków: str

Mimo to możesz udawać, że przeglądarka szanuje karty, ponieważ wszystko, co robi TAB, to dodawanie 4 spacji, a to łatwe dzięki CSS. albo w kolejce jak ...

 <div style="padding-left:4.00em;">Indenented text </div>

Lub jako zwykła klasa w arkuszu stylów

.tabbed {padding-left:4.00em;}

Wtedy może wyglądać HTML

<p>regular paragraph regular paragraph regular paragraph</p>
<p class="tabbed">Indented text Indented text Indented text</p>
<p>regular paragraph regular paragraph regular paragraph</p>

1
To nie jest to, co robi karta. Tabulatory wyrównują zawartość - w jednym wierszu może dodać 3 spacje, aw innym 4. Koncepcyjnie przenosi kursor do następnego tabulatora.
BrainSlugs83
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.