Центр кнопок CSS


85

Звичайна проблема центрування CSS, просто не працює у мене, проблема в тому, що я не знаю готової ширини px

У мене є div для всієї навігації, а потім кожна кнопка всередині, вони більше не центруються, коли є більше однієї кнопки. :(

CSS

.nav{
    margin-top:167px;
    width:1024px;
    height:34px;
}

.nav_button{
    height:34px;
    margin:0 auto;
    margin-right:10px;
    float:left;
}

HTML

<div class="nav">
        <div class="nav_button">
            <div class="b_left"></div>
            <div class="b_middle">Home</div>
            <div class="b_right"></div>

        </div>
        <div class="nav_button">
            <div class="b_left"></div>
            <div class="b_middle">Contact Us</div>
            <div class="b_right"></div>

        </div>
</div>

Будь-яка допомога буде вдячна. Дякую


Результат

Якщо ширина невідома, я знайшов спосіб відцентрувати кнопки, не зовсім задоволений, але не має значення, це працює: D

Найкращий спосіб - це скласти його в таблиці

<table class="nav" align="center">
    <tr>
      <td>
        <div class="nav_button">
            <div class="b_left"></div>
            <div class="b_middle">Home</div>
            <div class="b_right"></div>
        </div>

        <div class="nav_button">
            <div class="b_left"></div>
            <div class="b_middle">Contact Us</div>
            <div class="b_right"></div>
        </div>
      </td>
    </tr>
  </table>

Відповіді:


201

Я розумію, що це дуже давнє запитання, але сьогодні я натрапив на цю проблему і змусив її працювати

<div style="text-align:center;">
    <button>button1</button>
    <button>button2</button>
</div>

На ура, Марк


Зверніть увагу, що інший елемент, який має стиль плаваючої вправо / вліво біля цього елемента, може зробити так, щоб він здавався нецентровим.
shlgug

1
Я вірю, що ти маєш рацію, але чи є причина не просто так<input class="btn btn-primary" style="text-align:center;display:block;" type="submit" value="{% trans 'ButtonPurpose' %}" />
RobotHumans

26

Розгляньте можливість додати це до свого CSS, щоб вирішити проблему:

button {
    margin: 0 auto;
    display: block;
}

4
Краща відповідь. Немає зовнішніх контейнерів, (можливо) відсутність недоліків.
Konrad Gałęzowski

23

Ще один приємний варіант - використовувати:

width: 40%;
margin-left: 30%;
margin-right: 30%

Це працює (і має сенс) для Material UI, якщо кнопка знаходиться лише одна всередині a<Grid item>...</Grid>
Хуан Сальвадор

О, приємна ідея :)
Мартін Волек

10

Проблема полягає в наступному рядку CSS .nav_button:

margin: 0 auto;

Це працювало б лише у випадку, якщо у вас була одна кнопка, тому вони відцентровані, коли існує більше одного nav_buttondiv.

Якщо ви хочете, щоб усі ваші кнопки були зосереджені nav_buttonsв іншому div:

<div class="nav">
    <div class="centerButtons">
        <div class="nav_button">
            <div class="b_left"></div>
            <div class="b_middle">Home</div>
            <div class="b_right"></div>
        </div>
        <div class="nav_button">
            <div class="b_left"></div>
            <div class="b_middle">Contact Us</div>
            <div class="b_right"></div>
        </div>
    </div>
</div>

І оформити це так:

.nav{
    margin-top:167px;
    width:1024px;
    height:34px;
}

/* Centers the div that nests the nav_buttons */
.centerButtons {
    margin: 0 auto;
    float: left;
} 

.nav_button{
    height:34px;
    margin-right:10px;
    float: left;
}

2
дякую за ваш пост, на жаль, теж не працює, все ще зліва.
Stevanicus

Так, я щойно це зрозумів. Це тому, що .centerButtons є блочним елементом, і він займає весь простір у .nav, роблячи властивості полів марними. Я намагався це виправити, плаваючи також .centerButtons, але не везло.
Еспресо

так, я знаю його хитру, дратує мене, бо я це робив раніше, але не можу пам'ятати, як :)) будь-які ідеї?
Stevanicus

1

Розгляньте можливість додати це до свого CSS, щоб вирішити проблему:

.btn {
  width: 20%;
  margin-left: 40%;
  margin-right: 30%;
}

-1

коли все інше не вдається, я просто

<center> content </center>

Я знаю, що це вже не "відповідає стандартам", але якщо воно працює, це працює


12
Ця відповідь нічого не додає до інших відповідей. <center>був застарілим у HTML4 і навіть не підтримується в HTML5, а це означає, що, ймовірно, він не буде працювати, якщо використовується HTML5.
Magnilex

1
Я використовую його лише в тому випадку, якщо не можу змусити ще щось працювати. Я використовував його на сторінках, де є html5, але вважаю за краще не робити цього. Я пройшов і замінив те, що міг,<div align="center">button</div>
отт

Застарілий тег, використовувати його погано
Sunchock
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.