Сначала создайте родительский div, который центрирует его дочерний контент с text-align: center. Затем создайте дочерний элемент div, который использует display: inline-block для адаптации к ширине своих дочерних элементов и text-align: left для выравнивания содержимого, которое он содержит, по левому краю по желанию.
Понятно и эффективно. Спасибо!
- personfuzzybear3965; 01.11.2016
comment
не работает, поскольку, как только одиночная строка текста не помещается в одну строку, он обертывает текст и приводит к тому, что блок имеет полную ширину, но текст меньше полной ширины, поэтому даже хотя блок центрирован, это не имеет значения, поскольку текст НЕ является полной шириной содержащего блока. Для примера обратитесь к диаграмме 2a stackoverflow.com/questions/8702802/ - personuser3338098; 01.03.2017
comment
Просто и красиво! Спасибо
- personCesar Bielich; 07.10.2018
comment
@ user3338098 Это действительно работает, в вашем случае вам нужно установить максимальную ширину для вашего текста, чтобы блок не расширялся до нежелательного размера. Я буквально просто применил ту же самую логику к своей работе и смог получить диаграмму 1b + 2b.
- personMark; 17.06.2019
Также отлично работает с оберткой pre и содержимым code.
- personSerge Stroobandt; 11.10.2015
comment
не работает, поскольку, как только This will be centered не помещается в одну строку, он обертывает текст и приводит к тому, что блок имеет полную ширину, но текст меньше полной ширины, поэтому даже если блок центрирован, это не имеет значения, поскольку текст НЕ является полной шириной содержащего блока. Для примера обратитесь к диаграмме 2a stackoverflow.com/questions/8702802/.
- personuser3338098; 05.05.2016
comment
Старайтесь избегать использования отрицательных значений! Он не будет работать правильно во всех браузерах.
- personGrasper; 25.04.2018
Если я вас хорошо понимаю, вам нужно использовать для центрирования контейнера (или блока)
margin-left: auto;
margin-right: auto;
и чтобы выровнять его содержимое по левому краю:
text-align: left;
personeKek0schedule13.08.2009
comment
Итак, что мне поставить на мои ‹pre› и ‹code›? Я пробовал вариации на этот счет и потерпел неудачу.
- personPaul Tarjan; 13.08.2009
comment
вы пробовали использовать класс css?
- personeKek0; 13.08.2009
comment
также вы можете использовать контейнерный div для ›pre›
- personeKek0; 13.08.2009
comment
Я пытаюсь использовать контейнер div, и единственный способ заставить его работать - с фиксированной шириной (чего я не хочу).
- personPaul Tarjan; 13.08.2009
Обычно вы должны использовать margin: 0 auto для div, как упоминалось в других ответах, но вам нужно будет указать ширину для div. Если вы не хотите указывать ширину, вы также можете (это зависит от того, что вы пытаетесь сделать) использовать поля, например, margin: 0 200px; , это должно сделать ваш контент центрированным, вы также можете увидеть ответ Лейу на мой вопрос
personWaleed Eissaschedule13.08.2009
comment
к сожалению, ваше решение создает переполнение с принудительной горизонтальной полосой прокрутки. Добавление overflow: hidden к родительскому элементу нехорошо, поскольку мой вывод может быть достаточно длинным, чтобы обеспечить полосу прокрутки. Извини :(
- personPaul Tarjan; 13.08.2009
comment
На самом деле это не мое решение, о котором я говорил, но в любом случае я не понимаю, что вы имеете в виду под переполнением: скрытые принудительные полосы прокрутки, он должен скрывать содержимое, а не заставлять полосы прокрутки.
- personWaleed Eissa; 13.08.2009
comment
Решение в вашем сообщении вызывает горизонтальную полосу прокрутки, поскольку содержимое фактически смещено на 50% вправо. Для этого требуется переполнение: скрыто для удаления, которое у меня не работает.
- personPaul Tarjan; 17.08.2009
<section class="container">
<section class="inside">
A
</section>
<section class="inside">
B
</section>
<section class="inside">
C
</section>
</section>
Для тех из нас, кто все еще работает со старыми браузерами, вот некоторые расширенные возможности обратной совместимости:
<div style="text-align: center;">
<div style="display:-moz-inline-stack; display:inline-block; zoom:1; *display:inline; text-align: left;">
Line 1: Testing<br>
Line 2: More testing<br>
Line 3: Even more testing<br>
</div>
</div>
Вы можете объяснить свой код, его преимущества и недостатки? Таким образом, другие могут учиться на нем, а не просто копировать и вставлять то, что они могут или не могут полностью понять.
- personRobert; 19.03.2017
Кроме того, мне не нужна ширина: 400 пикселей. можно без этого?
- personPaul Tarjan; 13.08.2009
comment
Проблема в том, что элемент уровня блока будет расширяться, чтобы заполнить максимально возможную ширину, если вы не установите для него ограничение.
- personAmber; 13.08.2009
comment
Итак, то, что я хочу сделать, невозможно?
- personPaul Tarjan; 13.08.2009
comment
Возможно, кто-то знает секрет, о котором я не знаю, но, насколько мне известно, да.
- personAmber; 13.08.2009
comment
Я согласен с Дав. Возможно, вы могли бы взглянуть на tinyMCE или другой редактор форматированного текста, который допускает больше настроек, чем стандартное текстовое поле HTML. К сожалению, вы можете потратить много времени с хакерским результатом. Но удачи!
- personmkelley33; 13.08.2009