Moja witryna będzie zawierać trochę kodu wbudowanego („podczas korzystania z foo()
funkcji ...”) i fragmenty bloków. Zwykle są to XML i mają bardzo długie linie, które wolę, aby przeglądarka je zawijała (tzn. Nie chcę ich używać <pre>
). Chciałbym również umieścić formatowanie CSS we fragmentach bloku.
Wygląda na to, że nie mogę używać <code>
obu, ponieważ jeśli dodam do niego atrybuty bloku CSS (z display: block;
), spowoduje to uszkodzenie wbudowanych fragmentów kodu .
Jestem ciekawa, co ludzie robią. Używać <code>
do bloków i <samp>
do wbudowania? Użyj <code><blockquote>
czy coś podobnego?
Chciałbym, aby rzeczywisty HTML był tak prosty, jak to możliwe, unikając zajęć, ponieważ inni użytkownicy będą go utrzymywać.
html
semantic-markup
Steve Bennett
źródło
źródło
<pre>
a jego zachowanie można zapamiętać jako słowo „ dokładnie”Odpowiedzi:
Użyj
<code>
dla kodu wbudowanego, który może się zawijać oraz<pre><code>
do kodu blokowego, który nie może się zawijać.<samp>
jest dla przykładowego wyjścia , więc unikałbym używania go do reprezentowania przykładowego kodu (który czytnik ma wprowadzić ). To właśnie robi przepełnienie stosu.(Jeszcze lepiej, jeśli chcesz łatwo utrzymać, pozwól użytkownikom edytować artykuły jako Markdown, wtedy nie muszą pamiętać, aby z nich korzystać
<pre><code>
).HTML5 zgadza się z tym w „
pre
elemencie” :źródło
<code>
tagu, ale postanowili napisać tylko jedną linię? A może chyba dlatego, że nie chcieli mieć dwóch tagów, jednego bloku i jednego wbudowanego? Nadal ... co jest złego w tworzeniu<code>
poziomu bloku za pomocą CSS? Myślałem, że powinniśmy napisać „semantyczny” HTML.<code>
jest dobry i semantyczny, ale<pre>
nie tak bardzo.<code>
bloków za pomocą CSS jest nieprzyjemne. Ten sposób jest zalecany w HTML5 .<pre>
polega na tym, że modyfikuje również przetwarzanie białych znaków: wszystkie spacje są zachowane, a zawijanie jest wyłączone. Chyba że istnieje sposób, aby to wyłączyć?white-space: normal;
Chociaż nie rozumiem, dlaczego zrobiłbyś to dla kodu. Również to<pre><code>
jest głupie,<pre>
znacznik jest bardzo wyraźnie zdefiniowany w standardach jako „kod komputerowy” (i inne rzeczy), jak wspomniano w @jleedev. Czy dlatego, że uważasz, że<code>
to lepsze imię? przepraszam, że to nie czyni tego bardziej semantycznym. Jest podobny przypadek z tagiem<address>
, tak naprawdę nie brzmi jak „autor”, ale standard mówi, że po to jest, więc jest.Coś, za czym całkowicie tęskniłem: nieokreślające zachowanie
<pre>
można kontrolować za pomocą CSS. To daje dokładny wynik, którego szukałem:http://jsfiddle.net/9mCN7/
źródło
Osobiście skorzystałbym,
<code>
bo to jest najbardziej poprawne semantycznie. Następnie, aby rozróżnić kod wbudowany i blokowy, dodam klasę:dla kodu wbudowanego lub:
dla bloku kodu. W zależności od tego, który jest mniej powszechny.
źródło
<code>
bloku bez klasy dla najczęstszego przypadku użycia. Wtedy każdy, kto chce zrobić coś niezwykłego, musi tylko dodać klasę. Wykonanie tego w inny sposób będzie nadal wymagało od użytkownika wpisania dodatkowego. W ten sposób użytkownik może myśleć o tym jako o dodaniu specjalnego znacznika zamiast o zupełnie innej strukturze.Do normalnego
<code>
użytkowania:i do każdego miejsca, gdzie
<code>
potrzebne jest zablokowanie , użyjAlternatywnie, zdefiniuj
<codenza>
znacznik dla bloku podszewki przerwania<code>
(bez klas)Testowanie: (NB: poniżej jest rysunek wykorzystujący
data:
protokół / schemat URI, dlatego%0A
kody w formacie nl są niezbędne do zachowania takich, gdy są wycinane i wklejane do paska adresu URL do testowania - więcview-source:
( ctrl- U) wygląda dobrze przed każdą linią poniżej%0A
)źródło
Pokaż kod HTML w obecnej postaci , używając
<xmp>
tagu (przestarzały) :To bardzo smutne, że ten tag jest przestarzały, ale nadal działa w przeglądarkach, jest to zły tag. nie trzeba niczego uciekać. Co za radość!
Pokaż kod HTML w obecnej postaci , używając
<textarea>
tagu:źródło
<textarea readonly>
robi to samo, jest aktualne i ma znacznie większą kontrolę, jeśli chcesz.<xmp>
robi to, lub jakikolwiek innyblock
element .. nie poleciłbym tego jako prawdziwego rozwiązania, tylko teoretycznego.<blink>
to jeden z przykładów - chciałbym używać tego do wszystkiego, co musi być przyszłościowe.Zastanów się nad TextArea
Ludzie znajdujący to za pośrednictwem Google i szukający lepszego sposobu zarządzania wyświetlaniem swoich fragmentów kodu powinni również rozważyć,
<textarea>
co daje dużą kontrolę nad szerokością / wysokością, przewijaniem itp. Zwracając uwagę, że @vsync wspomniało o przestarzałym tagu<xmp>
, uważam go za<textarea readonly>
doskonały zamiennik do wyświetlania HTML bez konieczności ucieczki od wszystkiego (poza miejscem, w którym</textarea>
może się pojawić).Na przykład, aby wyświetlić pojedynczą linię z kontrolowanym zawijaniem linii, rozważ
<textarea rows=1 cols=100 readonly>
swój HTML lub etc z dowolnymi znakami, w tym tabulatorami i CrLf</textarea>
.Aby porównać wszystkie ...
źródło
Zastanów się nad plikiem Prism.js: https://prismjs.com/#examples
To sprawia, że
<pre><code>
praca jest atrakcyjna.źródło