LoginSignup
3
2

More than 3 years have passed since last update.

CSSが反映されない理由 ~背景の色は白じゃない、透明なんだ~

Posted at

CSSで方眼を作るぞ!⇒縦横どちらかしか反映されない…

「HTMLページの背景を方眼紙みたいにしたいなあ」と思い、コードを書きました。
<理想>
方眼_risou.png
<最初に書いたコード ※これでは「理想」にならない>
・HTML(関連部分のみ抜粋)

hougan.html
<div id="page" style="width:100%; height:100%;"></div>

・CSS

hougan.css
#page
{background: linear-gradient(to right, #ffffff 49px, #b0c4de 1px),
             linear-gradient(to bottom, #ffffff 49px, #b0c4de 1px);
 background-size: 50px 50px;}

コードの説明をします。「わかるよ!」という方はお読み飛ばしください
linear-gradientというのは、
・まず色の変化の方向をきめて(to top, to bottom, to right, to leftなど)
・その方向に向かって〇px(あるいは〇%)までの部分を何色にする!
という指定ができるものです。

上のコードではまず1個目のlinear-gradientで、
左から右に向かう方向で考えてね。一番左から49pxまでを#ffffff(白)で、そこから1pxを#b0c4de(青っぽい色)にしてね!」と指定をしています。
↓こんな感じ↓
リニア.png

それから2個目のlinear-gradientで、
上から下に向かう方向で考えてね。一番上から49pxまでを#ffffff(白)で、そこから1pxを#b0c4de(青っぽい色)にしてね!」と指定をしています。
↓こんな感じ↓
リニア.png

指定された2つのlinear-gradientは重なりあうので、縦線と横線が交わった方眼のような見た目になるのです。

そして最後のbackground-sizeで、「49pxの白色部分と1pxの青色部分でできた合計50pxの模様を、divの範囲のなかで繰り返してね!」と指定しています。
・・・コードの説明おわり・・・

☟さて、先ほどのコードの実行結果は…
方眼_risou.png
縦線しか反映されてない!!なんで????

上のレイヤーを透明にしないと、下のレイヤーに書いてあるものは見えない

失敗の原因はタイトル通り、線と線の間の余白部分を#ffffff(白)で指定していたためでした。反映されなかった横線は、正しく実装されていたのに、上のレイヤーの白色で塗りつぶされてしまっていたのです。
おおいかくす.png
そこで、今まで#ffffffで指定していた49pxの部分を、透明(transparent)で指定すると、下に隠れていた横線がちゃんと見えるようになり方眼模様を実装できました。
おおいかくす.png

<正しいコード>
・CSS

hougan.css
#page
{background: linear-gradient(to right, transparent 49px, #b0c4de 1px),
             linear-gradient(to bottom, transparent 49px, #b0c4de 1px);
  background-size: 50px 50px;}

最初のコードで「#ffffff」だった部分を「transparent」に変更!

実行結果は
おおいかくす.png
理想通りになりました!

以上です。
この記事がもし誰かの助けになれたら幸いです。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2