【问题标题】:Image <input> and table-cell display图像 <input> 和表格单元格显示
【发布时间】:2013-11-26 03:32:59
【问题描述】:

我有一个&lt;input&gt; 和一个&lt;input type="image"&gt;,显示为table-cell
我不明白为什么图像在 WebKit 驱动的浏览器中换行。

这是我的 HTML:

<div id="search">
    <div id="search_input_wrapper">
        <input type="text" name="Search" id="search_input" />
        <input type="image" name="Submit" id="search_submit" alt="Search" />
    </div>
</div>

这是我的 CSS:

div#search {
    display:table;
    width:100%;
    table-layout:fixed;
}
div#search_input_wrapper {
    display:table-row;
}
input {
    display:table-cell;
    margin:0;
    padding:0;
    border:0;
}

这是jsFiddle

【问题讨论】:

  • 未指定图像(缺少src 属性)。
  • @JukkaK.Korpela 它在实际代码中,但没有区别。
  • jsfiddle没有说明问题。
  • @JukkaK.Korpela 既然你这么说,我确实在 Firefox 中看到了。但在 WebKit 浏览器中确实如此。
  • @JukkaK.Korpela 问题已更新

标签: css newline tablelayout css-tables


【解决方案1】:

这是一个有趣的问题,只与-webkit 浏览器有关。

如果你看看这个(example),你就会清楚地看到问题所在。具有display:table-cell 属性的input 元素通常应该出现在同一行,就像inline 元素一样。如果type="submit",您会注意到这是真的。但是,如果是type="image",则input 元素充当block 级别元素,出现在新行上。

问题的根源在于属性-webkit-appearance。如果您将-webkit-appearance:none 应用于两个input 元素,您会注意到它们现在的行为相同! (example)

带有type="submit"input 元素的默认属性是-webkit-appearance:push-button,因此我们可以通过将相同的属性应用于type="image" 元素来解决问题,因为它们通常默认具有-webkit-appearance:none 属性。

问题已解决,(example)

input[type="image"] {
    -webkit-appearance:push-button;
}

这是一个更新的example,解决了您最初的问题。

我还在input[type="image"] 中添加了src,因为这就是type="image" 的用途。

同样,所有这些都与-webkit 浏览器有关,如果您使用的是 IE、FF 或 Opera,这些示例对您都没有任何意义,因为它们没有说明问题。

【讨论】:

  • 您是否推断input 的宽度为100%?代码中没有这样的设置。
  • 这散发出一些奇怪的光芒。显然按钮不是我想要的外观,但我会想办法的。已接受答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多