【发布时间】:2012-06-28 21:50:58
【问题描述】:
我必须将以前在系统控制台中以文本模式运行的旧应用程序移植到 HTML5。
HTML5 中的布局必须模仿旧的行为,即字体必须是等宽的,表单、字段和文本的尺寸必须是字符宽度或高度的倍数。
到目前为止,通过使用absolute 定位以及为font、font-size、line-height 精心选择的值,我可以获得几乎令人满意的结果。
对于元素的高度,我在em 中指定了我的值,所以一切都到位了。但是,我找不到轻松处理元素宽度的方法。
假设我有一个标签、一个文本输入和一个 div,它们的宽度必须完全相同。标签长度为 7 个字符,因此输入也应为 7 个字符。
类似:
mylabel
[input]
[mydiv]
但是,当使用em 作为字符宽度时,我得到以下布局:
mylabel
[input way too large]
[mydiv way too large]
显然,因为em 表示基本字符高度,而不是宽度。所以我不能依赖它。
你有解决这个问题的办法吗?如果可能,我想避免使用 Javascript,但我想我别无选择。
我必须针对所有流行的浏览器(Internet Explorer、Chrome、Firefox、Opera)。
【问题讨论】:
-
您是否设置了输入元素的字体以匹配纯文本字体?有时是必要的。
-
@biziclop:我有。但遗憾的是,我必须找到一个适用于所有元素的解决方案,而不仅仅是
inputs。也就是说,它可能是div而不是input并且应该呈现相同的内容。我更新了我的问题以消除歧义。感谢您注意到这一点。 -
您可以尝试
ex单位,它仍然是垂直的,但更接近字符宽度。或者,如果没有任何帮助,您可以使用size="chars"属性:<input type="text" value="0123456789" size="10">示例:jsfiddle.net/8Fbwx 不幸的是,这也失败了。 -
也许折磨
letter-spacing也有帮助。
标签: css html css-position