Centrum przycisków CSS


85

Zwykły problem z centrowaniem CSS, po prostu nie działa dla mnie, problem polega na tym, że nie znam końcowej szerokości px

Mam element div dla całej nawigacji, a następnie każdy przycisk w środku, nie wyśrodkowują już, gdy jest więcej niż jeden przycisk. :(

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>

Każda pomoc byłaby bardzo mile widziana. Dzięki


Wynik

Jeśli szerokość jest nieznana, znalazłem sposób na środek przycisków, nie do końca szczęśliwy, ale nie ma to znaczenia, działa: D

Najlepszym sposobem jest umieszczenie go w stole

<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>

Odpowiedzi:


201

Zdaję sobie sprawę, że to bardzo stare pytanie, ale natknąłem się dziś na ten problem i udało mi się go rozwiązać

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

Pozdrawiam, Mark


Zauważ, że inny element, który ma styl przesunięcia w prawo / lewo w pobliżu tego elementu, może sprawić, że będzie on wyglądał poza środkiem.
— shlgug

1
Ufam, że masz rację, ale czy jest powód, aby tego nie robić<input class="btn btn-primary" style="text-align:center;display:block;" type="submit" value="{% trans 'ButtonPurpose' %}" />
— RobotHumans,

26

Rozważ dodanie tego do swojego CSS, aby rozwiązać problem:

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

4
Najlepsza odpowiedź. Brak zewnętrznych pojemników, (prawdopodobnie) żadnych wad.
— Konrad Gałęzowski

23

Inną fajną opcją jest użycie:

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

Działa (i ma sens) dla Material UI, jeśli przycisk jest tylko jeden w środku a<Grid item>...</Grid>
— Juan Salvador,

O niezły pomysł :)
— Martin Volek

10

Problem jest z następującą linią CSS na .nav_button:

margin: 0 auto;

To zadziałałoby tylko wtedy, gdybyś miał jeden przycisk, dlatego są one wyśrodkowane, gdy jest więcej niż jeden nav_buttonelement div.

Jeśli chcesz, aby wszystkie twoje przyciski były wyśrodkowane, nav_buttonsw innym 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>

I ułóż to w ten sposób:

.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
dzięki za twój post, niestety też nie działa, nadal wszystko po lewej stronie.
— Stevanicus

Tak, właśnie to sobie uświadomiłem. Dzieje się tak, ponieważ .centerButtons jest elementem blokowym i zajmuje całe miejsce w .nav, przez co właściwości marginesów są bezużyteczne. Próbowałem to naprawić, również pływając .centerButtons, ale bez powodzenia.
— Espresso

tak, wiem, że to trudne, denerwuje mnie, bo robiłem to już wcześniej, ale nie pamiętam jak:) .... jakieś pomysły?
— Stevanicus

1

Rozważ dodanie tego do swojego CSS, aby rozwiązać problem:

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

-1

kiedy wszystko inne zawodzi, po prostu

<center> content </center>

Wiem, że to już nie jest „zgodne ze standardami”, ale jeśli działa, to działa


12
Ta odpowiedź nie dodaje nic do innych odpowiedzi. <center>był przestarzały w HTML4 i nie jest nawet obsługiwany w HTML5, co oznacza, że ​​prawdopodobnie nie zadziała, jeśli zostanie użyty HTML5.
— Magnilex

1
Używam go tylko wtedy, gdy nic innego nie działa. Używałem go na stronach, na których jest HTML5, ale wolę tego nie robić. I przeszły i zastąpić, co mogłem z<div align="center">button</div>
— Ott

Przestarzały tag, używanie go jest złą praktyką
— Sunchock
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.