ホームへ

CSSでボタンを上下左右中央寄せにする方法2種

2021年08月08日

「ボタンを左右中央寄せにする方法はわかったけど、上下中央寄せにするにはどうやるんだろう?」

CSSでボタンを上下左右中央寄せにする方法を解説します。

ちなみに「ボタン」と言っていますが、ボタンに限らずなんでも上下左右中央寄せできます。

display:flexで上下左右中央寄せ

ボタンの親要素に「display: flex」と「align-items: center」と「justify-content: center」を指定しましょう。

<style>
.example{
    /*コレ*/display: flex;
    /*コレ*/align-items: center;
    /*コレ*/justify-content: center;
    height: 200px;
    background: #EEE;
    border: 1px solid #999;
}
.example a{
    display: block;
    padding: 10px;
    background: #b2e5dd;
    border: 1px solid #333;
    color: #333;
    width: 100px;
    text-align: center;
}
</style>
<div class="example">
    <a href="#">ボタン</a>
</div>

display: flexは子要素の位置を調整するCSSです。

align-itemsはflexとセットで使い、縦の位置を指定できます。

align-items: centerは上下中央寄せです。

justify-contentはflexとセットで使い、横の位置を指定できます。

justify-content: centerは左右中央寄せです。

display: flexについて詳しくはこちら↓

CSSやhtmlの基本をしっかり理解すると、この記事の内容もより理解できるようになりますよ。

↓CSSやhtmlを楽しく学べるようにマンガを描きましたのでゼヒご覧ください↓

↑「副業してもう少し稼ぎたい!」というかたのために副業の方法も解説しています。

position:absoluteで上下左右中央揃え

ボタンの親要素に「position: relative」、ボタンに「position: absolute」、「top: 50%」、「left: 50%」、「transform: translateY(-50%) translateX(-50%)」を指定しましょう。

<style>
.example2{
    /*コレ*/position: relative;
    height: 200px;
    background: #EEE;
    border: 1px solid #999;
}
.example2 a{
    /*コレ*/position: absolute;
    /*コレ*/top: 50%;
    /*コレ*/left: 50%;
    /*コレ*/transform: translateY(-50%) translateX(-50%);
    display: block;
    padding: 10px;
    background: #b2e5dd;
    border: 1px solid #333;
    color: #333;
    width: 100px;
    text-align: center;
}
</style>
<div class="example2">
    <a href="#">ボタン</a>
</div>

position:absoluteは任意の位置調整ができるCSSです。

親要素にposition: relativeを指定し、基準を作ります。

position:absoluteとセットでtop: 50%とleft: 50%を指定します。

ただし、これだけでは下記のようにボタンの左上が真ん中になり少しずれています。

そこでtransform: translateY(-50%) translateX(-50%)を指定し、ボタンの横幅、高さそれぞれの半分ずつずれを戻すというものです。

positionについて詳しくはこちら↓

【まとめ】ボタンの上下左右中央寄せ

display:flexを使う方法

ボタンの親要素に「display: flex」と「align-items: center」と「justify-content: center」を指定

position:absoluteを使う方法

ボタンの親要素に「position: relative」、ボタンに「position: absolute」、「top: 50%」、「left: 50%」、「transform: translateY(-50%) translateX(-50%)」を指定

display:flexのほうが使うCSSが少なく覚えやすいので基本的にはflexをオススメします。

flexが使えない、要素を重ねたい、というようなときにはposition:absoluteを使いましょう。

以上、CSSでボタンを上下左右中央寄せにする方法でした。

「この記事の内容がよくわからなかった…」「なんかうまくいかなかった…」というかたは下記記事↓でhtmlとCSSの基本を学びましょう。
わからないまま突き進むより基本を学ぶのが結局近道です。

CSSやhtmlをマンガで学ぶ