【发布时间】:2014-06-24 05:22:48
【问题描述】:
我想创建一个统一的类来设置文本和文本输入框的宽度,以便任何平台都可以内联打印预定义和用户输入的数字。到目前为止,似乎没有办法让输入文本框和字体宽度在所有平台上都相等?
【问题讨论】:
-
你必须更具体..什么是字体宽度?什么平台? “内联打印预定义和用户输入的数字”是什么意思?
我想创建一个统一的类来设置文本和文本输入框的宽度,以便任何平台都可以内联打印预定义和用户输入的数字。到目前为止,似乎没有办法让输入文本框和字体宽度在所有平台上都相等?
【问题讨论】:
字体在不同操作系统上的宽度略有不同。您可以做的最好的事情是选择一个固定宽度的通用字体,这样您就可以在每个系统上使用相同(非常相似)的字体。然后,使用css设置文本框的宽度width: XXXpx;
我会从这个字体开始:
http://www.google.com/fonts#UsePlace:use/Collection:Droid+Sans+Mono
(不知道为什么链接会重定向。尝试复制/粘贴)
这会让你非常接近。
【讨论】:
正常内容中的一串数字可能与作为文本输入框的值的一串数字的宽度不同的原因有以下几种:字体可能不同,字体大小可能不同,输入框默认情况下可能有一些填充、一些边距或一些边框。要解决此问题,请显式设置这些属性。示例:
<style>
span, input {
font-family: Arial, sans-serif;
font-size: 100%;
padding: 0;
margin: 0;
border: none;
}
</style>
<span>1234567890</span><br>
<input value=1234567890>
然后输入框的值看起来像正常的内容,这是一个严重的可用性问题。为了解决这个问题,为两个元素设置一个相同宽度的边框,但为span 设置一个透明的边框:
<style>
span, input {
font-family: Arial, sans-serif;
font-size: 100%;
padding: 0;
margin: 0;
border-width: 1px;
}
span {
border-style: solid;
border-color: transparent;
}
</style>
(由于transparent as border-color 值并未得到普遍支持,因此使用与封闭元素的背景颜色匹配的特定颜色值可能更安全。)
【讨论】: