「dotted」の見た目を自由に変更したい…!

要素に対して
点線のラインを引くCSSの記述といえば
真っ先に思い浮かぶのがお馴染みの
「border-style:dotted」ですが、
このプロパティには「点同士の間隔を調整ができない」
という地味に致命的な欠点があります。
デザイン性の高いサイトを組む時など
こういう微調整が効かないのは
何とも歯がゆい思いがしますよね。
そこで本日はそんな融通の利かない
border:dotted;に変わって
インラインイメージというテクニックを使用することで
この問題をスマートに解決する方法をご紹介します。
デモ
と、まぁこんな感じで
インラインイメージを使えば
かなり好き勝手スタイリングできてしまうわけですね。
検索狙いのスケベ心で
記事タイトルに「border:dotted;の点の間隔やサイズを自由自在に変える」
と銘打っておきながら、いきなりborderの使用を
放棄しているいい加減さはどうか大目に見てやってください
続いてHTMLとCSSコードを見てみましょう。
HTML
<div class="item">
<div class="item_title">
『インラインイメージ』版(点の間隔8px)
</div>
<div class="item-content">
<div class="item-content-Square">
↓インラインイメージで引いたかなり間隔の広い線だよ
</div>
</div>
</div>
.item-content-Square{
position: relative;
width: 100%;
background-color: #eee;
position: relative;
padding: 20px;
box-sizing: border-box;
}
.item-content-Square:after{
content: "";
position: absolute;
width: 100%;
height: 1px;
left: 0;
bottom: 0;
background:url(
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAABCAYAAAAMwoR9AAAAFElEQVQYV2NkYGD4z8DAwMiABwAAIUYBAlvg6/4AAAAASUVORK5CYII=
) repeat;
}
デモのコードから
必要な部分だけを抜き出してみました。
この例では線を引きたい要素(.item-content-Square)に
疑似要素:afterを指定して
そのafter要素の背景画像として
インラインイメージを描画させ、
さらに:afterをposition:absolute;で
線を引きたい要素の下辺にくっつけることで
疑似的にborderの点線を再現させています。
しかし肝心のインラインイメージの
記述部分(data:image/png;base64~)を見ると
『iVBOR…』と謎の文字の羅列が続いていて、
一見しただけではこれがどう実際の
点線の表示に繋がるのかさっぱり分かりませんよね。
それでは引き続き、
自分でインラインイメージを作る際の
手順を見ていきましょう。
『Patternify』でインラインイメージを作る
カスタムボーダー作成用の
インラインイメージジェネレーターとして
私がおすすめするのがこの『Patternify』です。

使い方はとても簡単で
左上の描画エリアにドット絵の要領で
色のついたピクセルを配置し(パレットは下)、
続いて描画エリアの上と左にある
行と列の指定タブの数字をクリックして
繰り返しパターンの範囲を選択。
出来上がったパターンは
右のPreviewエリアに表示されるので、
そこを確認して大丈夫であれば
あとはPreview下のBase64 Codeの中身をコピーして
インラインイメージを表示させたい要素
(今回なら「.item-content-Square:after」)
にCSS指定してあげればそれでおしまいです。
ちなみにインラインイメージは
名前にこそイメージとつきますが
「img src=””」で読み込む通常の画像データと違い
表示にHTTPリクエストが発生しないという特徴があります。
そのためページ読み込み速度の
低下のリスクもなく
余計な画像をアップして
サーバー容量を圧迫する心配もありません。
おわりに
知っておくと何かと便利な
このインラインイメージ
いかがでしたでしょうか。
私は仕事関係で人からこの
テクニックを教えてもらいましたが
初めて知ったときはこんなこともできるのかと
まさに目からうろこの気持ちでしたね。
それでは、またのご機会に。



コメント