12

我已经编写了代码,该代码根据页面中的 IMG 标签自动创建 CSS 精灵,并用 DIV 替换它们(我认为是)适当的 CSS 将精灵图像定位为背景,让适当的部分显示出来——问题是我不能让 DIV 充当 IMG 的替代品。

如果我将默认的“显示”值设置为“块”,那么如果原始 IMG 位于某些文本的末尾,则替换 DIV 将跳到文本之后的下一行(这当然是我所期望的带显示:块做)。

如果我将“显示”更改为内联,则 DIV 与文本保持在同一行,但它会忽略我设置的“宽度”和“高度”并折叠。我尝试将 ' 放在 DIV 中,但它只占用足够的宽度来包含 nbsp。

我尝试过将显示设置为所有可能的值(包括“晦涩”的值,如“table-row”、“run-in”、“compact”等),但都没有运气。甚至可以创建与 IMG 具有相同布局行为的 DIV 吗?

我愿意拥有比单个 DIV 更复杂的东西,但是我已经尝试了那里明显的东西(一个 DIV 在另一个内部 DIV 设置为显示:块与外部设置为显示:内联)但我没有也没有找到有效的组合。

在替换的 IMG/DIV 之外,我总是可以做一些特定的事情来获得我想要的布局,但我的目标是拥有一个通用的 auto-CSS-sprite 机制,无论 HTML 的其余部分如何,它都能正常工作。

4

3 回答 3

13

你试过了display: inline-block;吗?

您可能还必须display: -moz-inline-block;用于 firefox2

于 2008-11-11T01:38:53.173 回答
4

图像相当于“显示:内联块”。这最初并未包含在 CSS 中,但部分是为了解决图像以这种方式运行的事实。

问题是所有浏览器现在都支持它。如果您甚至想支持一年前的浏览器,那您就被卡住了。

另一个但不是很好的解决方案是浮动 div(“float:left”)。

inline-block:在 CSS 2.1 中引入。这会导致元素生成一个块元素框,该框将与周围的内容一起流动,就好像它是一个单一的内联框(行为很像被替换的元素 [意思是图像] 会。)。

来源 Mozilla 开发者中心

于 2008-11-11T01:36:36.080 回答
1

Display: inline-block 应该在这种情况下工作。你试过了吗?

于 2008-11-11T01:33:58.317 回答