Вот левый край текста для примера:

http://img12.imageshost.ru/img/2011/05/07/image_4dc4ff655f55d.jpg

Здесь красные строчки составлены из одинаковых рядов неразрывных пробелов типа &nbsр. Обычных пробелов в них нет. В другом браузере, да и в предыдущей версии этого же самого, они читались нормально, красные строчки выглядели ровными, равными друг другу.

У меня Windows XP, хотя вряд ли это важно.

Лучше бы ссылку на страницу

Онторкс пишет

Здесь красные строчки составлены из одинаковых рядов неразрывных пробелов типа &nbsр.

Для красной строки используйте следующую запись в css:
p {
text-indent: X px;
}
где X необходимій отступ в пикселях.

ST пишет

Для красной строки используйте следующую запись в css:p { text-indent: X px;}где X необходимій отступ в пикселях.

Ну, здрасте. :rolleyes: Оригинально: везде, где я увижу эту проблему, советовать авторам страницы изменить манеру набора красной строки? Только потому, что какая-то новая версия некоего браузера не умеет распознавать старую манеру.

Наверное, там выравнивание по ширине. Вот неразрывный пробел и растягивается. Раньше вроде бы &nbsp в Firefox действительно был нерастяжимым…

Для «красных строк» используйте css-свойство text-indent, если есть возможность.

Lynn пишет

Лучше бы ссылку на страницу

Сейчас выберу что-нибудь нейтральное и по возможности чужое...

Ага, здесь

http://plumbax.livejournal.com/11312.html

Тот же эффект, если присмотреться.

07-05-2011 13:28:04

luitzen пишет

Наверное, там выравнивание по ширине. Вот неразрывный пробел и растягивается. Раньше вроде бы &nbsp в Firefox действительно был нерастяжимым…Для «красных строк» используйте css-свойство text-indent, если есть возможность.

Угу, спасибо. Надеюсь, в следующем патче устранят... :rolleyes:

Собственно, где сказано, что этот неразрывный пробел должен обрабатываться как нерастяжимый… А где-то высоко в Unicode пробельчики разной фиксированной ширины есть.

То есть "это не баг, а фича", ага. :rolleyes:
М-да... Понятненько...
:usch:

Но пока что читать неразрывные пробелы так попытался лишь один браузер из известных мне. :blush:

text-indent - интересно, но что-то я не понял, как этим делом пользоваться... Это обычные html-теги или как? В блогах они работают?

Онторкс

text-indent - интересно, но что-то я не понял, как этим делом пользоваться... Это обычные html-теги или как? В блогах они работают?

Это CSS. Работает как-то так.

М-да. :music:

Буду надеяться, что Они всё же сочтут это багом. Хотя надежд на это мало, учитывая, что они - западники, а на Западе "красная строка" не используется.

Посёрфил тут гуглем - оказывается, проблема "красной строки" давно волнует многих, а быстрое удовлетворительное решение мало кому удалось найти. Неразрывные пробелы - один из вариантов, теперь для пользователей сверхновой Мозиллы отлетающий. Артём Белоглазов в своём пособии по HTML советовал ещё использовать комбинацию br/dd, но в блогах на liveinternet она не работает. Советовать всем, кто хочет писать с красной строкой, спешно изучать CSS, целую дисциплину?

Нет, ну я посмотрю, конечно. :cool:

Онторкс
Лучше бы сделал тестовую страничку и код здесь в теме выложил. Фик знает чё там разное.
Что думают разрабы - смотри в багзилле.

Онторкс

Советовать всем, кто хочет писать с красной строкой, спешно изучать CSS, целую дисциплину?

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

Вероятно, из-за исправления Bug 541189 - For Justified Text, Non-Breaking Spaces Do Not Expand

Тема перенесена из форума «Firefox» в форум «Разработка».

Онторкс пишет

Советовать всем, кто хочет писать с красной строкой, спешно изучать CSS, целую дисциплину?

Ну тем кто хочет писать можно посоветовать пользоваться Word.
А тем кто хочет писать в интернете, и чтобы тексты выглядели нормально то нужно помимо орфографии, грамматики и языка в целом. Еще знать и уметь применять специфический язык разметки в HTML и CSS.
Иначе получится каша...
Вам уже раньше написали,

ST пишет

Для красной строки используйте следующую запись в css:
p {
text-indent: X px;
}
где X необходимій отступ в пикселях.

Единственное что от себя добавлю так это то что этот код прописывется или в CSS файле или в

Выделить код

Код:

<head>
  <title>text-indent</title>

  <style type="text/css">
   P { 
    text-indent: 1.5em; /* Отступ первой строки */
    text-align: justify;  /* Выравнивание по ширине */
   }
  </style> 
 </head> 

 <body>

И самый лучший справочник это htmlbook.ru
И вот пример
http://htmlbook.ru/css/text-indent

В холиварах на тему "Специалисты vs Простые Люди" я не участвую. :music:

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

Из изменений в версии 3.0
Изменена обработка неразрывных пробелов (U+00A0) в тексте, выровненном по обоим краям (justified): если раньше неразрывные пробелы расширялись точно так же, как и обычные пробелы (U+0020), то теперь неразрывные пробелы имеют фиксированную ширину (как в Internet Explorer). Это может значительно ухудшить вид текста, так как пробелы становятся неравномерными. Но «нерасширяемость» неразрывных пробелов может быть полезной, если они используются не по назначению — например, для создания отступа текста. Также неразрывные пробелы в полях ввода перестали заменяться на обычные.

Теперь они откатили это изменение вспять. При том, что Википедия подчёркивает преимущества обоих подходов. :rolleyes:

Совместимы ли они? Подумаем, какую цель обычно преследует неразрывный пробел в тех случаях, каковые имелись в виду разработчиками Firefox при этом откате. Соединить воедино неразрываемые слова, например, инициалы или части единого сокращения, наподобие "т. е." или "т. д". Для этого используется неразрывный пробел в одном экземпляре. Если же некто использует несколько неразрывных пробелов подряд, значит, ему нужен интервал заданной длины. С этой точки зрения растягивание комбинации из нескольких неразрывных пробелов является багом, насильственным редактированием задуманного пользователем текста, и желательно к исправлению. Замечу, что тут и правило предецента действует - все остальные браузеры не позволяют себе вольностей такого рода.

Казалось бы, вывод очевиден.

Сделать так, чтобы автоматически растягивался лишь один неразрывный пробел, а не несколько идущих подряд. Но я не знаю, насколько это технически осуществимо. :angry:


Да, по поводу CSS и всего остального - пустой разговор. В блогах эти навороченные теги не работают.

Онторкс
Неоднородность поведения элементов — худшее из всех известных мне зол. Если элемент ведёт себя так, то он везде и всегда должен вести себя так, а не иначе. Если, конечно, это не противоречит здравому смыслу и спецификации.
Неразрывный пробел должен быть либо всегда пропорционально растягивающимся, либо всегда фиксированной ширины. В виду того, что действительно ни где не сказано, что неразрывный пробел обязан быть фиксированной ширины и того, что он может встречаться в середине текста, он обязан быть пропорционально расширяемым.
Если кому-то приспичило использовать неразрывные пробелы не по-назначению, то они сами себе злые буратины. Использование чего угодно не по-назначению рано или поздно приводит к проблемам. Если сейчас корректно неразрывный пробел обрабатывает только Firefox это не значит, что это поведение снова нужно ломать в угоду совместимости с некорректной реализацией неразрывного пробела в других браузерах.

Если автор блога не предусмотрел добавление отступа в начале пользовательских сообщений — нефиг выпендриваться. Пишите как есть.
Если же кто-то хочет писать в своей уютненькой жежешечке с отступами — пусть добавит себе в стиль страницы необходимый CSS-код 1 раз и больше не мучает себя форматированием пробелами ибо это идиотизм. Редактировать CSS в LJ и многих других блогах на собственной странице давным-давно можно. Причём даже знать CSS для этого не нужно. Достаточно найти готовый пример и скопировать его себе в настройки. Но кто ж так будет делать если можно лупить тонны nbsp? Вот отсюда и проблема. Вместо того, что б делать 1 раз как надо куча дятлов делают каждый раз как не надо, а под них ещё и подстраиваться…

Кстати, в Google Chrome в статье http://plumbax.livejournal.com/11312.html отступы в начале текста тоже поплыли. :P

А это значит что? А это значит, что в двух из трёх самых популярных браузерах в мире (IE, Firefox, Chrome) неразрывный пробел наконец реализован правильно. Вот тебе и прецедент. Оперу на мировой арене можно не учитывать. Её там нет. Сафари, кстати, тоже (хоть Сафари и больше, чем оперы в 2-3 раза). Хотя как там ведёт себя nbsp я даже не проверял, скорее всего как в Хроме — движок общий, хоть каждый и пилил под себя.

Есть очень простое решение для отбивки красных строк.

Без всяких записей в css типа:
p {
text-indent: X px;
}
где X необходимый отступ в пикселях.

Дело в том, что в этом случае каждый из абзацев отделяется один от другого пустой строкой на манер "западной" или слизанной с нее верстки...
А иногда так хочется написать по-русски: с отступом красной строки и без пустых строк между абзацами.
И при этом, чтобы все браузеры понимали разметку и не "тянули" отбивку красной строки при выключке по ширине, как в случае с неразрывными пробелами последними версиями FireFox или Google Chrome.

Решение следующее.
Вместо неразрывных пробелов используйте пробелы с фиксированной шириной.
Правильно использовать этот: &ensp;
Его понимают ВСЕ браузеры на всех ОС.
Количество подряд идущих таких пробелов определяет размер отступа.

Использовать фиксированный пробел &emsp; для красной строки не рекомендуется. Его назначение несколько другое (ставится, обычно, в конце строки, если, конечно, в этом есть какая то надобность). Да и Opera не читает отбивку красной строки этим пробелом.

Вот и все. Проще некуда...
Не нужно ни растянутых прозрачных gif-ов 1х1; ни набитого текста под цвет фона в области отбивки красной строки; ни неразрывных пробелов, то тянущихся, то нет, при выключке по ширине, в зависимости от браузера; ни css с его иногда "нерусской версткой" (см. выше).

&ensp;  — оцените это решение.

Zai пишет

А иногда так хочется написать по-русски: с отступом красной строки и без пустых строк между абзацами.

Выделить код

Код:

p {
  text-indent: 2em;
  margin: 0 auto;
}
Sid пишет
Zai пишет

А иногда так хочется написать по-русски: с отступом красной строки и без пустых строк между абзацами.

Выделить код

Код:

p {
  text-indent: 2em;
  margin: 0 auto;
}

Код работает...
Но, приходится обрамлять каждый абзац!
А если в пределах страницы еще и разное форматирование: и по выравниванию, и по пропускам между абзацами (иногда, такое бывает нужно: то есть пустая строка, то нет) и т. п., то все становится достаточно мудрено...
А тут просто вставил нужное число пробелов для красной строки, если нужно, и все.
А если не нужно (например, для первого абзаца), то не вставил.
Главное, что отступ из пробелов с фиксированной шириной очень корректно работает в разных браузерах при любых ОС.

Не нужно фиксированную ширину требовать от неразрывного пробела — у него другие функции.
Для рассматриваемого случая нужен как раз пробел по умолчанию с фиксированной шириной - &ensp;

Zai пишет

А если не нужно (например, для первого абзаца), то не вставил.

Тоже не проблема.

Выделить код

Код:

p:first-child {
  text-indent: 0;
}

CSS очень гибкий, в отличие от решения с пробелами.

Напоминает спор сисадмина с секретарём.
Сисадмин, работая в M$ Word предпочитает один раз настроить все отступы и границы, сохранить шаблон, а уже потом печатать; секретарь же будет выравнивать каждую строчку и выставлять абзацы пробелами.
С точки зрения конечного пользователя, прочитающего документ на бумаге, разницы между их версиями не будет никакой (:

P.S.: Разумеется, я не хотел обидеть ни одного из участников дискуссии. Суть моих слов заключается в последней строчке.

Tiger.711 пишет

Напоминает спор сисадмина с секретарём.
Сисадмин, работая в M$ Word предпочитает один раз настроить все отступы и границы, сохранить шаблон, а уже потом печатать; секретарь же будет выравнивать каждую строчку и выставлять абзацы пробелами.
С точки зрения конечного пользователя, прочитающего документ на бумаге, разницы между их версиями не будет никакой (:

P.S.: Разумеется, я не хотел обидеть ни одного из участников дискуссии. Суть моих слов заключается в последней строчке.

Спасибо, Tiger.711
Подмечено правильно...

На самом деле, развивая эту затухшую три месяца назад ветку форума, я преследовал конкретную цель.
Хотелось бы получить конструктивные замечания разработчиков или пользователей по тем или иным проблемам (глюкам), возникающим при использовании пробела с фиксированной шириной для отбивки красной строки в абзацах (&ensp;). Тема актуальна в первую очередь при форматировании "justify;".
Мне это необходимо для конкретных разработок.

Пока же, уяснил для себя следующее.
1) Пробелы с фиксированной шириной корректно, т. е. именно как пробелы, определяются всеми поисковиками (информация из Сети, с форумов, из методических рекомендаций).
2) Практически все браузеры на разных ОС правильно определяют пробелы с фиксированной шириной. Даже самые экзотические (проверено на http://browsershots.org/)
Исключение только для некоторых СТАРЫХ версий Opera, где эти пробелы в начале красной строки браузер не понимает (т. е. строка не отбивается). Также в одной из старых версий (9.80) замечено появление квадратиков вместо пробелов с фиксированной шириной. Этот баг обсужден на многих форумах (применительно к другим вопросам) и в современных версиях Opera исправлен.

Поэтому, буду признателен, если кто-либо расскажет о действительно некорректном показе текста с отбитой красной строкой пробелом с фиксированной шириной в тех или иных условиях, на сайтах, форумах и т. п.