Center div text align center: CSS Layout — Horizontal & Vertical Align

css — Center text in div?

Asked

Modified 2 months ago

Viewed 156k times

I have a div 30px high and 500px wide. This div can contain two lines of text one under the other, and is styled (padded) accordingly. But sometimes it only contains one line, and I want it to be centered. Is this possible?

  • css
  • padding
  • spacing

2

To center horizontally, use text-align:center.

To center vertically, one can only use vertical-align:middle if there is another element in the same row that it is being aligned to.


See it working here.

We use an empty span with a height of 100%, and then put the content in the next element with a vertical-align:middle.

There are other techniques such as using table-cell or putting the content in an absolutely positioned element with top, bottom, left, and right all set to zero, but they all suffer from cross browser compatibility issues.

1

I believe you want the text to be vertically centered inside your div, not (only) horizontally. The only reliable way I know of doing this is using:

display: table-cell;
vertical-align: middle;

on your div, and it works with any number of lines. You can see a test here: http://jsfiddle.net/qMtZV/1/

Be sure to check browser support of this property, as it is not supported — for example — in IE7 or earlier.

UPDATE 02/10/2016

Five years later this technique is still valid, but I believe there are better and more solid solutions to this problem.

Since Flexbox support is good nowadays, you might want to do something along these lines: http://codepen.io/michelegera/pen/gPZpqE.

2

HTML

<div>
  <div>
      <p>Centered Text</p>
  </div>
</div>

CSS

.outside { 
  position: absolute; 
  display: table; 
}
.inside {
  display: table-cell; 
  vertical-align: middle; 
  text-align: center; 
}

1

For the parent div,use following CSS:

style="display: flex;align-items: center;"

If you have text inside a

<div>:

text-align: center;
vertical-align: middle;
display: table-cell;
div {
    height: 256px;
    width: 256px;
    display: table-cell;
    text-align: center;
    line-height: 256px;
}

The trick is to set the line-height equal to the height of the div.

You may try to use in your CSS the property vertical-align in order to center it verticaly

div {  
    vertical-align:middle;  
}

if it’s a size problem, please notice that 2 text lines and a padding style have great chance to have a height superior to 30px.

For example, if your font size is 12 px and your div padding is 5 px, a one text line div height will be 5px (padding-top) + 12px + 5 px (padding-bottom) = 22px < 30px so no problem,

With a 2 text lines div, it will be 5px +12px *2 (2 lines) + 5px = 34px > 30px and your div height will be automatically changed.

Try either to increase your div height (maybe 40px) or to reduce your padding.

Hope it will help

Adding line height helps too.

text-align: center;
line-height: 18px; /* for example. */

I may be missing something here, but have you tried:

text-align:center; 

??

2

Will this work for you?

div { text-align: center; }

I’ve looked around and the

display: table-cell;
vertical-align: middle;

seems to be the most popular solution

display: block;
text-align: center;
<div>
<div>&#9742; 052 824 134</div>
<div>&#10031; бул.  Княз Борис I, No 115 - Дворец на Културата и Спорта</div>

using flexbox To center div

.header{
        background: #ff6400;
        height:100px;
        box-sizing: border-box;
        display: flex;
        justify-content:'center';
        flex-direction: column;
    }
    .phone{
        color: white; 
        font-size: 20px; 
        padding: 9px 0 0 125px;
     
    }
    .adres{
        display: inline-block;
        color: white; 
        font-size: 20px;
        width: 50%;
        margin: 0 auto;
        text-align:'center';
    }

}

Add to the selector containing the text

margin:auto;

Sign up or log in

Sign up using Google

Sign up using Facebook

Sign up using Email and Password

Post as a guest

Email

Required, but never shown

Post as a guest

Email

Required, but never shown

html — как выровнять текст по центру и по правому краю

спросил

Изменено 2 года, 9 месяцев назад

Просмотрено 74к раз

Я столкнулся с проблемой при выравнивании двух текстов, одного по центру, а другого справа.

Я использовал Div для выравнивания:

 <дел>
   

Образец заголовка

<дел> пример ссылки

Когда я использовал это, мой заголовок идет слева, это не центральное выравнивание должным образом, пожалуйста, скажите, это правильный способ или есть какой-либо другой способ справиться с этим сценарием.

Спасибо

  • HTML
  • CSS

0

Если вы хотите, чтобы элемент не мешал макету, попробуйте absolute:

 
Заголовок

3

Для этого не нужно использовать элементы div, вы можете стилизовать сами элементы. Тег по умолчанию не поддерживает выравнивание текста, так как это встроенный элемент, поэтому я поместил ссылку в абзац, который принимает выравнивание текста.

Я поместил две строки в тег

2

У меня работает нормально. Но если у вас есть проблемы с позиционированием h2 , попробуйте сделать его block: h2 { display: block; } . С другой стороны, если вы хотите отобразить h2 и a в одной строке, вам просто нужно поместить с выравниванием по правому краю на до h2 .

Чтобы быстро выровнять ссылку по правому краю, это работает:

 html
    голова
        стиль.
            обряд {
                семейство шрифтов: моноширинный;
                размер шрифта: 10pt;
                выравнивание текста: вправо;
            }
 

а потом…

 обряд
    п
        a(href='/logout' align=right) выход
 

Обратите внимание, что это не сработает:

 rite a(href='/logout' align=right) logout
 

И это не сработает:

 обряд
    a(href='/logout' align=right) выход
 

Как объяснил @superUntitled. Отличный совет от @superUntitled.

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

CSS: выровненный по центру список с текстом, выровненным по левому краю (и неизвестной шириной)

Вот краткий обзор Учебное пособие по CSS , показывающее, как выровнять по центру элемент списка с текстом, выровненным по левому краю. Например, если у вас есть

    или
      из неизвестной ширины , и вы хотите, чтобы он оставался по центру страницы и чтобы внутренний текст был выровнен по левому краю. Это трюк, который мы рассмотрим в этом уроке.

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

       ul {
      ширина: 400 пикселей;
      поле слева: авто;
      поле справа: авто;
      } 

      Когда вы идете по этому пути, вы получаете выровненный по центру список со всем текстом, выровненным по левому краю. Так что это самое простое решение для списков (и других элементов), которые имеют известную/установленную фиксированную ширину. Но, конечно, я не хотел указывать ширину для этого конкретного случая.

      Итак, не устанавливая ширину элемента списка, я добавил text-align: center; к родительскому div и получил это:

      Обратите внимание, что маркеры в списке расположены далеко слева от элементов списка

      Маркеры списка отображаются с выравниванием по левому краю, но текст списка выравнивается по центру. Таким образом, между маркерами и текстом для каждого элемента списка есть странный разрыв. Решение состоит в том, чтобы сделать список встроенным блоком и установить для его text-align значение left . Вот окончательный код :

       div.parent {
      выравнивание текста: по центру;
      }
      ул {
      отображение: встроенный блок;
      выравнивание текста: по левому краю;
      } 

      А разметка HTML выглядит так:

       
      <ул>
    1. Элемент 1
    2. Элемент 2
    3. Элемент 3
    4. Элемент 4

Вот окончательный результат:

Приведенный выше код приводит к выровнению по центру списка, но с выравниванием по левому краю текста

Миссия выполнена. Этот метод также добавляет преимущество соблюдения поля тега предыдущего абзаца. До того, как мы сделали список встроенным блоком, расстояние по вертикали между списком и предыдущим абзацем выглядело так:

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

Обратите внимание, что нижнее поле абзаца игнорируется/сворачивается, поэтому список располагается близко к тексту абзаца.