質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.05%

下記のようにポジションfixedでdivを中央に表示させ、その中のimgも中央に表示させるライトボックスを作ったのですが、 なぜかimgが左上ぞろいになってしまいます。 fixedをかけたボックスの

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 2,403
退会済みユーザー

退会済みユーザー

下記のようにポジションfixedでdivを中央に表示させ、その中のimgも中央に表示させるライトボックスを作ったのですが、
なぜかimgが左上ぞろいになってしまいます。

fixedをかけたボックスの中の、imgなどの要素は、中央ぞろえができないのでしょうか?

<!-- lightbox-images -->
        <article id="lightbox-course">
            <div id="lightbox-tutor1"><img src="./img/index/pcimage.png" alt="iphone" class="close"></div>
            <div id="lightbox-tutor2"><img src="./img/index/tabletimage.png" alt="webservice"  class="close"></div>
            <div id="lightbox-tutor3"><img src="./img/index/spimage-top.png" alt="robot" class="close"></div>
            <div id="lightbox-tutor4"><img src="./img/index/spimage-center.png" alt="robot" class="close"></div>
        </article>

lightbox-course div {

    display: none;
    position:fixed;
    z-index:2;    
    width: 90%;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    text-align: center;
    vertical-align: middle;
    margin: auto;
    cursor: pointer;
    background-color: #fff;
}

lightbox-course img.close {

    vertical-align: middle;
    text-align: center;
    background-color: #fff;
}

上記CSSは#lightbox-course img.closeとシャープがついているのですが、なぜか表記上はないことになってしまっています。
CSSは間違いなくあったっているのですが、上下真ん中になりません。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

0

imgをtext-alignでセンタリングする場合は、
img自身に指定するのでは無く、その親要素に指定します。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/01/13 18:07

    ただし、

    <div id="lightbox-tutor1">達は、display:noneがついているので、ここにtableはつけられないですよね。
    articleにつけて、imgにdisplay:table-cell;をつけるのでしょうか?

    キャンセル

  • 2016/01/13 18:45

    まず、インラインとテーブルセルでのvertical-alignの扱いは全くの別物と考えた方が良いです。

    今回意識するのはテーブルセルでのvertical-align。インライン要素は忘れてください。

    細かい説明するよりも実際のソースを見てもらった方が分かり易いので、以下を参考にしてみてください(そのまま貼り付ければ表示されるはずです)。

    クラス名は分かり易くtable、tr、tdとそのまま使っています。適した名称に変更して使ってください。

    色々とパラメータを変更してみて挙動の変化を確認してみてください。



    <body>

    <style>
    .box { position:fixed; width:70%; height:70%; left:15%; top:15%; background:#eee; box-shadow:5px 5px 5px #ddd; }
    .table { display:table; width:100%; height:100%; }
    .tr { display:table-row; }
    .td { display:table-cell; vertical-align:middle; text-align:center; }
    .img { display:inline-block; background:#000; width:200px; height:100px; }

    </style>

    <div class="box">
    <div class="table">
    <div class="tr">
    <div class="td">
    <span class="img"></span>
    </div>
    </div>
    </div>
    </div>

    </body>

    キャンセル

  • 2016/01/14 19:52

    やってみました。
    確かに中央ぞろえになっていますね。

    ただ、下記の画像を中央ぞろえする場合は、もうひとつdivをはさむしかないですね。

    <!-- lightbox-images -->
    <article id="lightbox-course">
    <div id="lightbox-tutor1"><img src="./img/index/pcimage.png" alt="iphone" class="close"></div>
    <div id="lightbox-tutor2"><img src="./img/index/tabletimage.png" alt="webservice" class="close"></div>
    <div id="lightbox-tutor3"><img src="./img/index/spimage-top.png" alt="robot" class="close"></div>
    <div id="lightbox-tutor4"><img src="./img/index/spimage-center.png" alt="robot" class="close"></div>
    </article>

    キャンセル

0

よくわからないけど、text-align:center;はdivに設定するべきでは?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/01/14 19:37

    確かに、レスポンシブのフルイドイメージでなければ、それで良いと思うのですが、
    この場合は無理ですよね。

    インライン要素、imgタグにvertical-align: middle;はなぜ効かないのでしょうか?

    キャンセル

  • 2016/01/14 20:03

    ごめんなさい、わかりません。
    困ったときは、根本から考え方を変えてみるといいかもしれませんよ。
    私の場合は、imgタグを使わずに、

    div.lightbox-tutor1{
    width:600px;
    height:600px;
    border:solid 2px black;
    background-image:url("./img/index/pcimage.png");
    background-repeat:no-repeat;
    background-position:center;
    }
    ってかんじで、画像をバックグラウンドとして表示させます。
    background-position:center; の一行で縦方向も横方向も中央にきますし。

    キャンセル

  • 2016/01/14 23:24

    imgでなく背景にして中央ぞろえにするのですね。
    そんなアイデアもありましね。

    キャンセル

0

こんにちは。

lightbox-course div {

lightbox-course img.close {

lightbox-courseは<article>タグ の id なので
#lightbox-courseと「#」をつけるのでは?

センタリングについては、参考になりそうなサイトを見つけたので、見てみてください。
position:absolute;やposition:fixed;で要素をきれいに中央配置する方法
サイズが分からない要素を真ん中に配置するテクニック

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/01/13 16:15

    こんにちはありがとうございます。

    上記CSSは#lightbox-course img.closeとシャープがついているのですが、なぜか表記上はないことになってしまっています。

    CSSは間違いなくあったっているのですが、上下真ん中になりません。




    vertical-align: middle; も親要素につけるのでしょうか?
    こちらは、インライン要素とテーブルの場合に使えるようなので、テキストのように、ラインハイトとハイトで中央ぞろえにできない際はこちらかなと思いました。
    親要素の<article id="lightbox-course">にポジションフィックスがついてしまっているので、ポジションでの中央ぞろえはできないですよね。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.05%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • トップ
  • HTMLに関する質問
  • 下記のようにポジションfixedでdivを中央に表示させ、その中のimgも中央に表示させるライトボックスを作ったのですが、 なぜかimgが左上ぞろいになってしまいます。 fixedをかけたボックスの