回答:
CSSを使用できます。画像にdisplay:blockまたはfloat:leftを設定すると、独自の間隔を定義し、HTMLを好きなようにフォーマットできますが、レイアウトが適切かどうかに影響します。
それ以外の場合は、インラインコンテンツを処理するため、HTML形式は重要です-画像が単語のように効果的に機能するためです。
これが古い場合は申し訳ありませんが、解決策を見つけました。
font-size
を0に設定してみてください。したがって、画像間の空白は幅が0になり、画像は影響を受けません。
これがすべてのブラウザで機能するかどうかはわかりませんが、Chromiumといくつかの<li>
要素で試してみましたdisplay: inline-block;
。
em
ユニットを使用しているレイアウトを壊します。
font-size
0に設定するとem
、その時点以降、ユニットをスケーラブルデザインに使用できなくなります。一部の人々にとって、この答えは役に立たない。
コメントを使用できます。
<img src="..." alt="..."><!--
--><img src="..." alt="..."><!--
--><img src="..." alt="..."><!--
--><img src="..." alt="...">
一連の画像を並べて表示することのセマンティクスについては心配です。
font-size:0
ため、多くの場合ひどいです。はい、rem
単位を使用できますが、それでもメディアクエリはその要素の機能を停止し、それらすべてを変更する必要があります
CSSでおおよそのことをしないで、2つのオプションがあります。最初のオプションは、JavaScriptを使用して空白のみの子をタグから削除することです。しかし、より良いオプションは、空白が意味を持たずにタグ内に存在できるという事実を使用することです。そのようです:
<div id="[divContainer_Id]"
><img src="[image1_url]" alt="img1"
/><img src="[image2_url]" alt="img2"
/><img src="[image3_url]" alt="img3"
/><img src="[image4_url]" alt="img4"
/><img src="[image5_url]" alt="img5"
/><img src="[image6_url]" alt="img6"
/></div>
Flexboxはこの古い問題を簡単に修正できます。
.image-wrapper {
display: flex;
}
flexboxの詳細:https ://css-tricks.com/snippets/css/a-guide-to-flexbox/
{ flex-direction: row; flex-wrap: nowrap; }
読みやすくするために追加できます。
flex-direction: row
し、flex-wrap: nowrap
彼らはとにかくデフォルトです。通常はシンプルに保つのが最善です。また、ほとんどの場合、ユーザーは実際に欲しがりflex-wrap: wrap
ます。
あまりにも多くの調査、試行錯誤の結果、うまく機能しているように見え、子要素のフォントサイズを手動で再設定する必要がない方法を見つけたので、ドキュメント全体で標準化されたemフォントサイズを使用できます。 。
Firefoxでは、これはかなり単純でword-spacing: -1em
、親要素に設定するだけです。何らかの理由で、Chromeはこれを無視します(私がテストした限りでは、値に関係なく単語の間隔は無視されます)。これに加えletter-spacing: -.31em
て、私は親とletter-spacing: normal
子供に追加します。emのこの割合は、emサイズが標準化されている場合のみ、スペースのサイズです。。Firefoxは、文字間隔の負の値を無視するため、単語間隔に追加されません。
私はこれをFirefox 13(win / ubuntu、androidで14)、Google Chrome 20(win / ubuntu)、ICS 4.0.4とIE 9のAndroidブラウザーでテストしました。わからないけど...
こちらがデモですhttp://jsbin.com/acucam
word-spacing: -1em
スタイルは、クロームの現在のバージョンで単語を重複させるように思われます。
手遅れですが(質問したところ、関連セクションで細いのを見つけました)、display:table-cell;と思います。より良い解決策です
<style>
img {display:table-cell;}
</style>
<img src="img1.gif">
<img src="img2.gif">
<img src="img3.gif">
唯一の問題は、IE 7以前のバージョンでは機能しないが、ハックで修正できることです。
display: table-*
する可能性がありますが、一部のスクリーンリーダーは意味的に解釈し、ユーザーがテーブルを移動しているかのように読み上げます。
この問題を解決するには、次のコードのようにCSSスタイルシートを使用します。
[divContainer_Id] img
{
display:block;
float:left;
border:0;
}
Firefox 3.5 Finalでのテスト!
PS。あなたのhtmlはこのようにする必要があります。
<div id="[divContainer_Id]">
<img src="[image1_url]" alt="img1" />
<img src="[image2_url]" alt="img2" />
<img src="[image3_url]" alt="img3" />
<img src="[image4_url]" alt="img4" />
<img src="[image5_url]" alt="img5" />
<img src="[image6_url]" alt="img6" />
</div>
別の解決策は、スペースの場所で型破りな改行を使用することです。これは最初のいくつかの回答に似ており、要素を並べる別の方法です。また、マークアップ内のスペースを改行で置き換えるため、超エッジ最適化手法でもあります。
<img
src="image1.jpg"><img
src="image2.jpg"><img
src="image3.jpg"><img
src="image4.jpg">
このコードにはスペースが含まれていないことに注意してください。HTMLで通常スペースが使用されている場所は、改行で置き換えられます。コメントを使用する場合や、Paul de Vriezeが推奨するような空白を使用する場合よりも、詳細度は低くなります。
このアプローチはtech.coの功績によるものです。
要素間の空白は、視覚的な書式設定の目的でHTMLエディターによってのみ配置されます。jQueryを使用して空白を削除できます。
$("div#MyImages").each(function () {
var div = $(this);
var children= div.children();
children.detach();
div.empty();
div.append(children);
});
これにより、子要素が切り離され、子要素を再び追加する前に残っている空白がすべてクリアされます。
この質問に対する他の回答とは異なり、このメソッドを使用すると、継承されたcss display
とfont-size
値が確実に維持されます。また、使用する必要がなくfloat
、面倒clear
です。もちろん、jQueryを使用する必要があります。
個人的には、これを行う正確な方法はなく、何らかの形のトリックを使用しない限り、受け入れられた回答が好きです。
私にとって、これは時々厄介な問題であり、たとえば、チェックボックスの行がすべて正しく配置されていない理由を疑問に思って1時間無駄にすることがあります。私は覚えていません...しかし、そうではありません:(
次に良い答えは、font-sizeを使用することです...私にとってこれは厄介なハックであり、なぜテキストが表示されないのか疑問に思うかもしれません。
私は通常、PHPで多くのことを開発しており、チェックボックスのグリッドを生成する場合、PHPで生成されたコンテンツは間隔や改行を挿入しないため、この問題を取り除きます。
単に、すべてを1行にまとめた画像を処理するか、サーバー側のスクリプトを使用してコンテンツ/画像を生成することをお勧めします。
Quentinの回答に触発されて、次のタグの開始の横に終了>を配置することもできます。
<img src="..." alt="..."
/><img src="..." alt="..."
/><img src="..." alt="..."
/><img src="..." alt="..."/>
意味論的に言えば、順序付きまたは順序なしのリストを使用して、CSSを使用して適切にスタイルを設定するのが最善ではないでしょうか。
<ul id="[UL_ID]">
<li><img src="[image1_url]" alt="img1" /></li>
<li><img src="[image2_url]" alt="img2" /></li>
<li><img src="[image3_url]" alt="img3" /></li>
<li><img src="[image4_url]" alt="img4" /></li>
<li><img src="[image5_url]" alt="img5" /></li>
<li><img src="[image6_url]" alt="img6" /></li>
</ul>
CSSを使用すると、これを好きなようにスタイル設定して、本の間にある空白を削除できます。
{strip}
。他のテンプレートエンジンにも同様のタグが必要です。