こんにちは!
現在大阪のWEB制作会社で働く大学4回生のYUJIROです。
この記事を読んでいる方はWEB制作を実際にやられている方だと思います。
WEBサイトを作る際に、以下の画像のようにブラウザに画像とテキストを表示すると、
↑
画像の下に「無駄な余白」が入った経験はありませんか?
多分WEB制作をしている人は1度は体験しているとはずです。
画像とテキストに「無駄な余白」が入ることで見栄えもよくない。
そこで今回の記事では「画像(imgタグ)の下に出来る余白の消し方」について解説していきます。
画像の下に出来る余白を消して、綺麗なレイアウトを組めるようになりましょう。
結論:imgタグに「vertical-align: bottom;」を指定する
先に結論をお伝えすると、imgタグに対して
・vertical-align: bottom;
・vertical-align: top;
のどちらかを指定すると、
画像の下にあった余白がなくなりました。
画像の下に余白があると見栄えが良くないので、初めからリセットCSSと一緒にimgタグに
「vertical-align: top;」or「vertical-align: bottom;」
のどちらかを指定することをおすすめします。
画像(imgタグ)の下に余白が出来る原因
参考程度に「そもそも画像の下になぜ余白が入るのか?」について紹介していきます。
より深く知りたい方はこれから先の記事を読んで頂けると、より理解できます。
なぜ画像の下に余白が出来るのか?
画像(img要素)に対して余白ができる原因は、画像を含むインライン要素が、ベースラインに配置されているためです。
つまり、imgを含むインライン要素(インラインブロックも含む)の初期値は「vertical-align: baseline;」ということになり、そのことがこの隙間ができる原因になっているのです。
つまりimgタグはインライン 要素であり、ベースラインに配置されているからですね。
インライン 要素のimgタグに対して「vertical-align: top;」or「vertical-align: bottom;」をすることでベースラインが下に揃うので、余白がなくなるという原理になっています。
※「vertical-align: top;」or「vertical-align: bottom;」などはimgタグやaタグなどのインライン要素にしか使えないので注意を。
参考コード
今回は「画像の下に出来る余白の消し方に」について紹介させて頂きました。
画像の下に出来る余白はimgタグのデフォルトによるものなので、リセットCSSと一緒に
・vertical-align: bottom;
・vertical-align: top;
のどちらかあらかじめ指定しておくことをおすすめします。
そうすることで無駄に悩む時間が減ります。
そして最後に画像で表示したサイトのコードを貼っておきます。
興味ある方は是非参考にしてください。
◎HTML
- <!DOCTYPE html>
- <html lang=”ja”>
- <head>
- <meta charset=”UTF-8″>
- <meta name=”viewport” content=”width=device-width, initial-scale=1.0″>
- <link rel=”stylesheet” href=”css/main.css”>
- <title>画像(img)の下に出来る余白の消し方</title>
- </head>
- <body>
- <div class=”box”>
- <div class=”box__img”>
- <img src=”./image/IMG_3874.jpeg” alt=””>
- </div>
- <div class=”box__text”>
- <h2>ここにタイトルが入ります。</h2>
- <p>
- ここにタイトルに関する文章が入ります。ここにタイトルに関する文章が入ります。
- </p>
- </div>
- </div>
- </body>
- </html>
◎CSS
- /* http://meyerweb.com/eric/tools/css/reset/
- v2.0 | 20110126
- License: none (public domain)
- */
- html, body, div, span, applet, object, iframe,
- h1, h2, h3, h4, h5, h6, p, blockquote, pre,
- a, abbr, acronym, address, big, cite, code,
- del, dfn, em, img, ins, kbd, q, s, samp,
- small, strike, strong, sub, sup, tt, var,
- b, u, i, center,
- dl, dt, dd, ol, ul, li,
- fieldset, form, label, legend,
- table, caption, tbody, tfoot, thead, tr, th, td,
- article, aside, canvas, details, embed,
- figure, figcaption, footer, header, hgroup,
- menu, nav, output, ruby, section, summary,
- time, mark, audio, video {
- margin: 0;
- padding: 0;
- border: 0;
- font-size: 100%;
- font: inherit;
- vertical-align: baseline;
- }
- /* HTML5 display-role reset for older browsers */
- article, aside, details, figcaption, figure,
- footer, header, hgroup, menu, nav, section {
- display: block;
- }
- body {
- line-height: 1;
- }
- ol, ul {
- list-style: none;
- }
- blockquote, q {
- quotes: none;
- }
- blockquote:before, blockquote:after,
- q:before, q:after {
- content: ”;
- content: none;
- }
- table {
- border-collapse: collapse;
- border-spacing: 0;
- }
- * {
- box-sizing: border-box;
- }
- img {
- max-width: 100%;
- height: auto;
- vertical-align: top;
- vertical-align: bottom;
- }
- .box {
- max-width: 500px;
- margin: 0 auto;
- padding: 100px 0;
- }
- .box__text {
- padding: 30px;
- background-color: pink;
- width: 100%;
- }
- .box__text h2 {
- padding-bottom: 25px;
- }
- .box__text p {
- line-height: 1.5;
- }