12

ページ内の IMG タグに基づいて CSS スプライトを自動的に作成し、スプライト画像を背景として配置して適切な部分を表示させる適切な CSS を使用して (私が考えていた) DIV に置き換えるコードを作成しました。問題は次のとおりです。 DIV を IMG の代替品として動作させることはできません。

デフォルトの「表示」値を「ブロック」に設定したままにしておくと、元の IMG がテキストの最後に配置されていた場合、置換 DIV はテキストの後の次の行にジャンプします (もちろん、これは何かを期待するものです)表示あり: することをブロックします)。

「表示」をインラインに変更すると、DIV はテキストと同じ行にとどまりますが、設定した「幅」と「高さ」は無視され、折りたたまれます。DIV 内に 's を入れようとしましたが、nbsp を含めるのに十分な幅しか占有しません。

display をすべての可能な値 (「table-row」、「run-in」、「compact」などの「あいまいな」値を含む) に設定して実験してみましたが、すべてうまくいきませんでした。IMG と同じレイアウト動作で DIV を作成することさえ可能ですか?

私は単一のDIVよりも複雑なものを用意していますが、そこで明らかなことを試しました(内側のDIVが表示されるように設定されている別のDIV内の1つのDIV:表示する外側のセットを持つブロック:インライン)が、私は持っていません動作する組み合わせも見つかりませんでした。

置き換えられた IMG/DIV の外で、必要なレイアウトを取得するためにできる特定のことは常にありますが、私の目標は、残りの HTML に関係なく機能する汎用の自動 CSS スプライト メカニズムを持つことです。

4

3 に答える 3

13

試しましたdisplay: inline-block;か?

display: -moz-inline-block;firefox2にも使用する必要がある場合があります

于 2008-11-11T01:38:53.173 に答える
4

画像には「display: inline-block」と同等のものがあります。これはもともと CSS に含まれていませんでしたが、画像がこのように動作するという事実に対処するために部分的に追加されました。

問題は、すべてのブラウザーが現在それをサポートしていることです。1 年も前のブラウザーをサポートしたい場合は、行き詰まります。

別の、しかしそれほど優れていない解決策は、div をフローティングすることです ("float: left")。

inline-block : CSS 2.1 で導入されました。これにより、要素はブロック要素ボックスを生成し、周囲のコンテンツが単一のインライン ボックスであるかのように流れます (置き換えられた要素 [画像を意味する] のように動作します)。

ソース Mozilla Developer Center

于 2008-11-11T01:36:36.080 に答える
1

表示: inline-block は、この状況で機能するはずです。試してみましたか?

于 2008-11-11T01:33:58.317 に答える