画像の下に出来る余白の消し方について【WEB制作初心者向け】

CSS

 

こんにちは!

現在大阪の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;」ということになり、そのことがこの隙間ができる原因になっているのです。

引用:https://arts-factory.net/img-vertical-align/

 

つまり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

  1. <!DOCTYPE html>
  2. <html lang=”ja”>
  3. <head>
  4.     <meta charset=”UTF-8″>
  5.     <meta name=”viewport” content=”width=device-width, initial-scale=1.0″>
  6.     <link rel=”stylesheet” href=”css/main.css”>
  7.     <title>画像(img)の下に出来る余白の消し方</title>
  8. </head>
  9. <body>
  10.     <div class=”box”>
  11.         <div class=”box__img”>
  12.             <img src=”./image/IMG_3874.jpeg” alt=””>
  13.         </div>
  14.         <div class=”box__text”>
  15.             <h2>ここにタイトルが入ります。</h2>
  16.             <p>
  17.                 ここにタイトルに関する文章が入ります。ここにタイトルに関する文章が入ります。
  18.             </p>
  19.         </div>
  20.     </div>
  21. </body>
  22. </html>

 

◎CSS

  1. /* http://meyerweb.com/eric/tools/css/reset/
  2.    v2.0 | 20110126
  3.    License: none (public domain)
  4. */
  5. html, body, div, span, applet, object, iframe,
  6. h1, h2, h3, h4, h5, h6, p, blockquote, pre,
  7. a, abbr, acronym, address, big, cite, code,
  8. del, dfn, em, img, ins, kbd, q, s, samp,
  9. small, strike, strong, sub, sup, tt, var,
  10. b, u, i, center,
  11. dl, dt, dd, ol, ul, li,
  12. fieldset, form, label, legend,
  13. table, caption, tbody, tfoot, thead, tr, th, td,
  14. article, aside, canvas, details, embed,
  15. figure, figcaption, footer, header, hgroup,
  16. menu, nav, output, ruby, section, summary,
  17. time, mark, audio, video {
  18.     margin: 0;
  19.     padding: 0;
  20.     border: 0;
  21.     font-size: 100%;
  22.     font: inherit;
  23.     vertical-align: baseline;
  24. }
  25. /* HTML5 display-role reset for older browsers */
  26. article, aside, details, figcaption, figure,
  27. footer, header, hgroup, menu, nav, section {
  28.     display: block;
  29. }
  30. body {
  31.     line-height: 1;
  32. }
  33. ol, ul {
  34.     list-style: none;
  35. }
  36. blockquote, q {
  37.     quotes: none;
  38. }
  39. blockquote:before, blockquote:after,
  40. q:before, q:after {
  41.     content: ”;
  42.     content: none;
  43. }
  44. table {
  45.     border-collapse: collapse;
  46.     border-spacing: 0;
  47. }
  48. * {
  49.     box-sizing: border-box;
  50. }
  51. img {
  52.     max-width: 100%;
  53.     height: auto;
  54.     vertical-align: top;
  55.     vertical-align: bottom;
  56. }
  57. .box {
  58.     max-width: 500px;
  59.     margin: 0 auto;
  60.     padding: 100px 0;
  61. }
  62. .box__text {
  63.     padding: 30px;
  64.     background-color: pink;
  65.     width: 100%;
  66. }
  67. .box__text h2 {
  68.     padding-bottom: 25px;
  69. }
  70. .box__text p {
  71.     line-height: 1.5;
  72. }