【问题标题】:Input size with letter spacing带字母间距的输入大小
【发布时间】:2014-03-02 08:50:33
【问题描述】:

一个输入元素可以有一个“大小”属性,它决定了它的宽度可以容纳多少个字符,在某些输入类型的字符数是固定的情况下,这是一个很好的特性。例如电话号码、信用卡号码、客户 ID 号码等。在这种情况下,只需将“大小”属性放在输入字段中,而不是深入到样式表中并为每个字段定义宽度更方便。

但是,当放置 size 属性时,它不会考虑字母间距。如果我希望我的数字更加分散,它们会溢出输入宽度。考虑到字母间距和可能影响文本大小的其他因素,有什么方法可以指定输入字段的大小?

HTML:
<input size="5" placeholder="#####"/>

CSS:
input { letter-spacing: 1em }

看到这个JSFiddle 的输出。请注意,占位符文本会溢出输入字段。

【问题讨论】:

  • 我认为将letter-spacing 用于input 没有问题。没有关于真正应该发生什么的规范,但现代浏览器似乎在这里相当一致。 (它们在size 属性的解释上有所不同,但这是另一回事。)请显示您使用的一些代码并解释结果有什么问题,以及在哪个浏览器上。您的意思是您设置了width 属性吗?那么这就是罪魁祸首。
  • @JukkaK.Korpela beautifulcoder 发布的 jsfiddle 准确显示了相关代码。在输入中使用字母间距没有问题,它的“大小”属性没有考虑字母间距。因此,如果您有一个<input size="3">,它的长度将包含 3 个字符,字母间距为 0。至少在 Chrome 中这不是荣誉。
  • 您应该在问题中包含 your 代码,而不是在问题中引用答案中提到的某些 URL。一个问题应该可以理解为独立的,无需阅读 cmets 或答案。
  • @JukkaK.Korpela 很公平,我已将代码包含在问题中以帮助理解问题。如果您仍然不清楚,请告诉我。
  • 问题仍然没有说明这是 Chrome 特定(或 WebKit 特定?)的问题。例如在 Firefox 中没有可见的问题。

标签: css html


【解决方案1】:

尝试设置letter-spacing 设置字符之间的字距。当您更改 size 属性时,这是很荣幸的。

input {
    letter-spacing: 0.25em;
}

http://jsfiddle.net/RhwBG/

【讨论】:

  • 问题说“它没有考虑字母间距”。很难说这意味着什么,但这个答案似乎隐含在问题中。 letter-spacing 增加了字符之间的间距,而不是字距调整(这是一个完全不同的概念)。
  • 不幸的是,这在我的 Chrome 中不起作用。我确实意识到 FF 在渲染具有大小的输入字段时会考虑字母间距,所以我猜这只是浏览器不一致。
【解决方案2】:

您可以使用 onkeypress 动态扩展它。这可能会有所帮助 Adjust width of input field to its input

【讨论】:

  • 嗯,这是一回事,但在我的情况下,宽度不是动态的。我只想设置一个静态宽度,提前知道它将容纳多少个字符,以及每个字符之间有多少空间(字母间距)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-16
相关资源
最近更新 更多