Ненависть к 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.




я тоже пытался с этим боротся, только что сделал по твоему совету — все гуд, но как теперь юзеру определить что строчка переслась? вот пример: 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: visible или вообще overflow: hidden?
Нельзя, конечно, в overflow нет shorthand. Это меня Слафф смутил. hidden, конечно же.
Тьфу, visible ))). Все, я поехал домой, заработался.