代码之家  ›  专栏  ›  技术社区  ›  User

输入和选择元素自定义大小

  •  1
  • User  · 技术社区  · 16 年前

    据我所知,width/padding/margin属性只对块级元素有效。但是,在输入和选择元素时,我可以指定有效的宽度。应该吗?

    我可以这样写:

    <input type="text" style="display:block;" />
    

    但这是必要的吗?

    有人能解释一下为什么它有效吗?

    5 回复  |  直到 13 年前
        1
  •  4
  •   Ionuț G. Stan    16 年前

    实际上,它们不是真正的内联元素,而是 块元素 . 这允许您指定宽度、高度和其他特定于块的属性,而无需中断内联元素的流。 In good browsers 您可以在任何元素上使用“display:inline block”来实现相同的功能。

        2
  •  4
  •   Quentin    16 年前

    The spec says :

    适用于:除未替换的内联元素、表行和行组之外的所有元素

    表单控件,如输入和选择元素 替换 内联元素(该元素替换为表单控件-其文本内容不会像普通元素一样显示)。

    因为它们被替换,所以不会被替换,所以宽度属性适用。

        3
  •  0
  •   wheresrhys    16 年前

    表单元素是HTML/CSS世界中的败类——有很多属性不像普通的HTML元素那样工作。

    虽然它不能回答您的问题,但您可能会发现以下讨论很有趣: http://meyerweb.com/eric/thoughts/2007/05/15/formal-weirdness/

        4
  •  0
  •   Gabriel Hurley    16 年前

    从技术上讲,这是一个特定于浏览器的渲染属性。在这一点上,大多数浏览器都允许您设置宽度,但不能保证(尤其是在旧浏览器上),而且您肯定 可以 带着它会碰到虫子。

    输入元素的w3规范在技术上使其成为一个内联元素。内联块甚至不是W3规范的一部分,它是CSS2的一部分(因此旧的浏览器不一致)。

    例如,如果您将宽度指定为百分比,并在其中放入大量文本,那么IE会有一些有趣的错误。

    长话短说,它几乎总是安全的,只是不是我见过的任何官方规范的一部分。

        5
  •  -1
  •   Thinker    16 年前

    你有没有想过如果不可能的话会发生什么?当引入输入元素时,没有CSS。在HTML中,输入元素的宽度绝对是创建正确表单所必需的。