[解決済み] inline/inline-block要素間のスペースを削除するにはどうすればよいですか?
質問
このHTMLとCSSが与えられた。
span {
display:inline-block;
width:100px;
background-color:palevioletred;
}
<p>
<span> Foo </span>
<span> Bar </span>
</p>
その結果、SPAN要素の間に4ピクセルの幅のスペースができます。
デモです。 http://jsfiddle.net/dGHFV/
なぜこのようなことが起こるのかは理解していますし、HTMLのソースコードでSPAN要素の間のホワイトスペースを削除すれば、このスペースをなくすことができることも知っています。
<p>
<span> Foo </span><span> Bar </span>
</p>
しかし、HTMLのソースコードをいじらなくてもいいCSSでの解決策を期待していました。
JavaScriptで解決する方法は知っています。コンテナ要素(段落)からテキストノードを削除することで、このように解決できます。
// jQuery
$('p').contents().filter(function() { return this.nodeType === 3; }).remove();
デモです。 http://jsfiddle.net/dGHFV/1/
しかし、この問題はCSSだけで解決できるのでしょうか?
どのように解決するのですか?
または は、フレックスボックスを使用するようにします。 を使えば、以前は inline-block を使っていたレイアウトの多くを実現することができます。 https://css-tricks.com/snippets/css/a-guide-to-flexbox/
この回答が割と好評なので、大幅に書き換えています。
実際に質問された内容を忘れてはいけません。
<ブロッククオートの間のスペースを削除する方法 inline-block 要素 ? 私は HTMLのソースコードに手を加える必要のないCSSソリューションのために を改ざんしている。 この問題は、CSSだけで解決できるのでしょうか?
それは は CSSだけで解決することも可能ですが、その場合は 完全に CSSによる強固な修正
私が最初の回答で持っていた解決策は、「Select」ボタンを追加することでした。
font-size: 0
を親要素に宣言し、さらにその親要素に感覚的な
font-size
を子要素に設定します。
http://jsfiddle.net/thirtydot/dGHFV/1361/
すべてのモダンブラウザの最近のバージョンで動作します。IE8で動作します。Safari 5では動作しませんが する はSafari 6で動作します。Safari 5はほぼ死語のブラウザです( 0.33%、2015年8月 ).
相対的なフォントサイズについて考えられる問題のほとんどは、修正するのが複雑ではありません。
ただし、これは合理的な解決策ではありますが、もし 具体的に必要なのは CSSのみの修正であれば、HTMLを自由に変更できる人にはお勧めできません(ほとんどの人がそうです)。
これは、それなりに経験のあるウェブ開発者である私が、この問題を解決するために実際に行っていることです。
<p>
<span>Foo</span><span>Bar</span>
</p>
はい、その通りです。inline-block要素の間にあるHTMLの空白を削除しているんだ。
簡単なことです。単純なことです。どこでも使える。それが現実的な解決策です。
空白がどこから来るかを慎重に検討しなければならないこともあります。 JavaScriptで別の要素を追加すると、空白が追加されますか? いいえ、適切に行えばそうではありません。
新しいHTMLを使って、空白を取り除くさまざまな方法の魔法の旅に出かけましょう。
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
-
普段からやっていることですが、こんなこともできます。
<ul> <li>Item 1</li><li>Item 2</li><li>Item 3</li> </ul>
http://jsfiddle.net/thirtydot/dGHFV/1362/
-
あるいは、これ。
<ul> <li>Item 1</li ><li>Item 2</li ><li>Item 3</li> </ul>
-
または、コメントを使用します。
<ul> <li>Item 1</li><!-- --><li>Item 2</li><!-- --><li>Item 3</li> </ul>
-
または、PHPなどを使っている場合。
<ul> <li>Item 1</li><? ?><li>Item 2</li><? ?><li>Item 3</li> </ul>
-
または できます をスキップすることもできます。 ある タグを完全に閉じます(すべてのブラウザで問題ありません)。
<ul> <li>Item 1 <li>Item 2 <li>Item 3 </ul>
さて、「空白を消す千の方法 by thirtydot"」で皆さんを退屈させてしまったので、もうすっかり忘れてしまったかと思いますが
font-size: 0
.
関連
-
[解決済み】divの高さを画面の残りスペースで埋めるようにする
-
[解決済み] textareaのresizableプロパティを無効にするにはどうしたらよいですか?
-
Uncaught TypeError: document.getElementsById は関数ではありません。
-
[解決済み] bootstrapでボタンにリンクを貼るには?
-
[解決済み] ページを再読み込みせずにURLを変更するにはどうすればよいですか?
-
[解決済み] SCSSとSassの違いは何ですか?
-
[解決済み] リスト項目にマウスを置いたときに、カーソルを手の形に変えるには?
-
[解決済み] スクロールバーを隠すが、スクロールはできる状態
-
[解決済み] インラインCSSでa:hoverを記述するには?
-
[解決済み] display: inlineとdisplay: inline-blockの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】このインラインブロックのdiv要素の間に説明のつかない隙間があるのはなぜですか?[重複]
-
Uncaught TypeError: document.getElementsById は関数ではありません。
-
[解決済み] cssのfit-contentで横幅を自動サイズ調整する
-
[解決済み] <html xmlns="http://www.w3.org/1999/xhtml">」は何をするものですか?
-
[解決済み] HTML IFステートメント
-
[解決済み] Sublime Text 2を使ってHTMLコードを再フォーマットするにはどうしたらいいですか?
-
[解決済み] CSS背景のストレッチとスケール
-
[解決済み】HTMLで空白を無視する【重複あり
-
[解決済み] インラインブロックリストのアイテム間のスペース [重複]について
-
[解決済み] display: inline-block extra margin [重複]。