background-image
を設定したいのですが、繰り返しの間に特定の距離があります。
たとえば、私はこの画像をbackground-image
にする必要があります。
そして、私はこのようなパターンで繰り返しを修正したいと思います:
JSFiddle playground を確認します
私はCSSのクリーンなソリューションを探しています。JSや余分な要素などはありません。非常に最新のCSS3(サポートされていない)トリックを使用する必要がある場合は問題ありません。
船はかなり航海したと思いますが、それでもデータURIに基づく解決策があります。
画像より大きいサイズの画像を含むSVGを生成できます(たとえば、マージンを60pxにするには、幅を画像の幅(40px)+必要なマージン(60px)= 100pxに等しくするだけです):
次のステップは、SVG内に画像を埋め込むことです。
<image width="40" height="40" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFVJREFUeNrs2EENgEAQBMGBoOOsgLQTgaB1dV9Cggf2Ua2g3r2te5xJrvSsjg83mwLnnuYBAgICAgICAgICAgICAgICAgICAgIC/tV7+St9L389AgwA9YgGfH7VrXwAAAAASUVORK5CYII=" />
そして最後に、このSVGをデータURIを含む背景画像として追加します。
#container {
width: 300px;
height: 100px;
border: 1px solid #ccc;
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100" height="40"><image width="40" height="40" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFVJREFUeNrs2EENgEAQBMGBoOOsgLQTgaB1dV9Cggf2Ua2g3r2te5xJrvSsjg83mwLnnuYBAgICAgICAgICAgICAgICAgICAgIC/tV7+St9L389AgwA9YgGfH7VrXwAAAAASUVORK5CYII=" /></svg>');
background-position: left center;
background-repeat: repeat-x;
}
更新された Fiddle を参照してください。
これはかなり大きくて汚い回避策だと言えます。ただし、これは純粋なCSSソリューションであり、追加のHTML要素/ JavaScriptを作成する必要はありません。これにはいくつかの欠点があります。
これらすべての問題に対する可能な解決策は、CSSプリプロセッサを使用することです。サス。あなたはミックスインを作ることができます、例えば:
@mixin background-image-spaced($width, $height, $margin-right, $image) {
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="#{$width + $margin-right}" height="#{$height}"><image width="#{$width}" height="#{$height}" xlink:href="data:image/png;base64,#{$image}" /></svg>');
}
body {
@include background-image-spaced(40px, 40px, 60px, 'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFVJREFUeNrs2EENgEAQBMGBoOOsgLQTgaB1dV9Cggf2Ua2g3r2te5xJrvSsjg83mwLnnuYBAgICAgICAgICAgICAgICAgICAgIC/tV7+St9L389AgwA9YgGfH7VrXwAAAAASUVORK5CYII=');
}
ここに多くのものを追加できます。他のすべてのマージン値については、コンパスを使用して手動で書き込む代わりに、画像をエンコードして挿入できます。 この記事 このプロセスの詳細については、これはすでに、より使いやすく快適に見えます。
バックグラウンドリピート(CSS3)でspace
属性を使用する必要があります
http://www.impressivewebs.com/space-round-css3-background/
すべてのブラウザでサポートされているわけではなく、サンプル画像では垂直方向のスペースのみが表示されているようです。
より良い選択は、実際の画像の周りに必要なスペースを持つように背景画像自体を変更することです(空白の領域で画像を埋めます)。