Ненависть к PRE|Переносы в PRE

Чтобы многострочный код отображался правильно, естественно, использую <pre><code>. Второй тег говорит нам, что это код, первый же отображает текст, не сжимая последовательности пустых символов и превращая разрывы строк в переводы каретки уже в браузере.

Возможно, из десятка известных мне хайлайтеров выберу один — пока предпочтение идет в сторону js, как более выгодного в свете оптимизации метода. Хотя, конечно, придется выбранный скрипт подсократить и убрать лишние цвета.

Но вот вчера в мессенджер постучался Антон Веринов и указал мне на известную ошибку с pre, который игнорирует ширину родительского блока и вылезает за нее. Ну и плюс силком заставил уменьшить размер шрифта (все равно коду не так требуется читаемость).

Если решать проблему переносов в pre, то мы сталкиваемся с довольно неприятным поведением браузеров, не предоставляющих этого по умолчанию. Краткое решение нашел здесь, а уже потом — у Slaff'а вроде как более полное. Однако, не совсем так.

pre {
	<del>white-space: pre;			/* CSS2 */</del>
	white-space: pre-wrap;		/* CSS 2.1 */
	<del>white-space: pre-line;		/* CSS 2.1/3 */</del>
	white-space: -moz-pre-wrap;	/* Mozilla */
	<del>white-space: -hp-pre-wrap;	/* HP printers */</del>
	white-space: -o-pre-wrap;	/* Opera 7 */
	white-space: -pre-wrap;		/* Opera 4-6 */
	word-wrap: break-word;		/* IE 5.5+ */
}

Собственно, первый атрибут удаляем, т.к. он бесполезен. Третий — потому как pre-line — это тот же pre-wrap, но сжимающий последовательности символов пустого пространства (что нам не надо). А пятый — из-за отсутствия смысла. Комментарии (они не «условные») также можно удалить, т.к. они загромождают место.

А если взять за предположение, что пользователи Оперы и Фаерфокса все-таки знают, что такое обновление, достаточно и двух строчек:

white-space: pre-wrap;
	word-wrap: break-word;

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

 по тегам: ,
{16 комментариев} Подписка на комментарии

я тоже пытался с этим боротся, только что сделал по твоему совету — все гуд, но как теперь юзеру определить что строчка переслась? вот пример: lilumi.org.ua/debian-ubun...mpiz-dlya-debian — угадай какая строчка переносится

При копировании переносы сохранятся правильно — ведь «настоящие» только те, которые и в HTML \r\n.

В приведенном примере — 2 и 3. Но я вставляю только PHP, HTML, CSS, так что для меня без разницы, где перенесется. Ну разве что для красоты сделаю сам, с табуляцией для читаемости.

В случае же примеров консоли (или, например, ЛИСПа) лучше вначале ставить значок специальный >>.

Последний вариант — те из хайлайтеров, которые правильно ставят нумерацию строк.

Оверфлоу же не удобен, разве что когда вставляем по 100 строк кода каждый раз (если же такое бывает раз — можно прописать стиль, или вообще сделать инлайн).

тьфу, только вторая :). ну, в общем, это решаемо, да :)

хорошо, там есть возможность проставлять нумерацию строк, наверное ее поставлю. Я просто этот плагин отключил и лишь юзал его стилевую таблицу и через export получал исходник который вставлял в тело поста. Потому что плагин сильно прожорливый. Когда найдешь легковесный хайлайтер маякнешь ;)

А меня достало то, что вордпресс слишком хитрожопо форматирует текст.

Но пре — противное решение.

Так что написала свой мини-плагин для форматирования, а их фильтр отключила.

«\n» заменяем на бряк, символ табуляции — на пять пробелов, каждые два пробела — на нбсп

А то меня уже доконало мучаться с выкладыванием моих любимых маленьких рассказиков...

Кстати, проверка: у тебя опенид работает?:)

OpenID нет здесь (я бы обязательно поставил иконку), не вижу пока смысла (пока анонимных комментариев немного, нет смысла подтверждать «авторство»). Да и плагин тот кривоват.

Бряк и количество пробелов — разве pre не достаточно? :) Отцссить его, нормальным шрифтом, с нормальными переносами слов (но без ужимания последовательностей пустых символов) — чего не хватает?

В типографе, который сейчас пытаюсь закончить, наоборот, удаляю лишние пробелы и все прочее — не вижу в них смысла.

У меня просто цель — чтобы всё смотрелось точно как в ноутпаде. «Восстание машин — вордпресс убирает пробелы))»

Если у меня есть в тексте пять табов — значит, так надо.

А тэг пре, если мне память не изменяет, поисковики не любят. Хотя может и изменяет)

Кроме того, у него ещё обычно и форматирование шрифта другое.

В общем, каждый ленится по-своему, можно решать тем методом, какой нравится больше)

Кстати, забыла написать:

Багов с OPENID практически не было.

Сам стандарт по определению весёлый — мне так и не удалось найти работающего плагина опенид на медиавики — на самом сайте опенид вики не пашет с опенид 2.0... Собираюсь сама писать, но только сервер. делается легко, но лень — мотивации особой нет.

А у вордпресса он очень даже ничего.

Хотя возможность раздавать кому попало идентификаторы myblog.ru/authors/myname я считаю абсолютно лишней :)

В первый раз слышу такой миф о pre — просто обычно в него код вставляют(часто опуская даже code), и все равно все ищется. В CSS же шрифт легко перебивается в нужный (ессно, моноширинный ), типа: pre {font-family:Verdana, sans-serif} , туда же размер фонта и прочее. Ну и white-space, как описано выше. А расстановка большого количества — лень, которая оборачивается негативом для посетителей )

OpenID я люблю и обожаю, но не вижу смысла. На входе? Только если есть шанс, что кто-то подделает или заместо полноценной регистрации. На выходе? Поднимать для кого-то openid-сервер, когда можно воспользоваться уже готовыми решениями? iskariot.ru/development/link-rel-openid/ Меня в связи с этим больше волнует его распространение на крупных проектах. К которым я, увы, отношения не имею :)

Да. с поисковиками походу нагнала, просто ощущение такое было)

css редактировать леень — как писала, у каждого свой метод решения)

А OPENID — я проставила как «приятную няшечку»)

Да и приятно комментить других с его помощью — часто у людей бывает импульс «Что за хня? Посмотреть надо!»

Насчёт готовых решений я по лени не посмотрела)

Но нативный вордпрессовый плагин и PHPMyID (или ка-то типа того называется, позавчера ставила) прекрасно работают.

А на крупных проектах тоже есть одна забавная фишка, которая OPENID по определению дискредитирует. Всё никак не соберусь сделать тоже)

Хых, ну мое стремление к рациональности пытается перевесить лень. Так же и с OpenID — прагматичный подход говорит мне, что это система единой авторизации, которая имеет дополнительную роль «достоверности» ссылки.

А что за дискредитирующая фенечка?

Отпишу сейчас в почту.

> overflow: off

А разве так можно? Может, overflow: visible или вообще overflow: hidden?

Нельзя, конечно, в overflow нет shorthand. Это меня Слафф смутил. hidden, конечно же.

Тьфу, visible ))). Все, я поехал домой, заработался.

А здесь можно оставить свое мнение ↓ Подписка на комментарии
какие-то из следующих трех полей можно оставить пустыми


нет тегам!!! **эмоция**, __ирония__, >цитата, {[код]}