どうも!LSSです!!
CSSで描く背景について、色々と考えていました。
ふと「れんが模様の背景って描けないかな?」と思い立ったのですが…。
【CSS】background-sizeとbackground-positionを使うとドット絵が描けちゃいます!【極端な例】
【CSS】repeating-radial-gradientを何気に初めて使ってみる
↑これらと同様の手段を用いて、描けないものかと色々試みていましたが…挫折^^;;;;;
で、
【CSS+SVG】ちょっと変テコな模様(背景用)を考えてみました
で使った、SVGをCSSに織り込む、という方法を使うと一発で作れました!
れんが模様の背景
コード
<style><!--
.renga{
padding:0.6em;
background-color:#ffffff;
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewbox="0 0 40 40" stroke="none" stroke-width="0" fill="%23eeeeee"><rect x="-20" y="0" width="38" height="19" ></rect><rect x="20" y="0" width="38" height="19"></rect><rect x="0" y="20" width="38" height="19"></rect></svg>');
background-size:40px 40px;
}
--></style>
<div class="renga">中に入れる文章</div>
ボックスサイズに合わせて繰り返す、というのが
CSSのみではついにできませんでした…。
問題は「縦にも横にも」繰り返す、という部分で、例えば「格子模様」の応用で、
模様
みたいな事なら出来たのですが、段ごとに書いた分だけしか表示されない、という事になり、縦の繰り返しを指定すると、
模様
このように模様が破綻しますw
コード
<p>問題は「縦にも横にも」繰り返す、という部分で、例えば「格子模様」の応用で、 </p>
<div style="padding: 0.6em; background-color: #eeeeee; background-image: linear-gradient(90deg,#cccccc00 4%,#ccccccff 5%,#ddddddff 95%,#dddddd00 96%),linear-gradient(90deg,#cccccc00 4%,#ccccccff 5%,#ddddddff 95%,#dddddd00 96%); background-size: 40px 18px; background-position: -20px 0px,0px 20px; background-repeat: repeat-x;">れんが<br />模様</div>
<p>みたいな事なら出来たのですが、段ごとに書いた分だけしか表示されない、という事になり、縦の繰り返しを指定すると、</p>
<div style="padding: 0.6em; background-color: #eeeeee; background-image: linear-gradient(90deg,#cccccc00 4%,#ccccccff 5%,#ddddddff 95%,#dddddd00 96%),linear-gradient(90deg,#cccccc00 4%,#ccccccff 5%,#ddddddff 95%,#dddddd00 96%); background-size: 40px 18px; background-position: -20px 0px,0px 20px; background-repeat: repeat;">れんが<br />模様</div>
<p>このように模様が破綻しますw</p>
そう複雑な模様でもないので、CSSだけで表現する方法がありそうな気もするんですが、今の自分にはまだ分かりません^^;
CSS+SVGの謎、ひとつ解決しました
CSSにSVGを織り込むにあたり、以前に記事上で
「なぜか#が入るSVGは有効にならない」
と書きましたが、それは解決策が見つかりました!
# を %23 に置き換えればOKです^^
あとがき
「インラインSVGの有効活用」のひとつ、としてはいいのですが、模様がシンプルな分、CSSだけで(自分には)できなかったのがちょっと悔しいですね^^;
ただ、もしCSSだけで実現できたとして、よほどコードが煩雑になるようなら、今回のCSS+SVGが最適解かも知れません。
ってなとこで、今回はこのへんで!
次回もまた、よろしくお願いします^^