我正在寻找解决这个问题的方法,或者至少我认为这是同一个问题。我也解决了。让我解释。
根据浏览器的不同,我让文本框变得太长或太短,但也注意到它有时确实符合预期。我使用@meadia
构造来根据客户端视口大小缩放 UI,并注意到它仅在缩放为 100% 时非常适合。这导致我找到了一个不同的解决方案,或者更确切地说,指向了一个不同的问题。
我不确定所有浏览器都是这种情况,但我可以通过在我的 CSS 文件(CSS 重置部分)的开头添加一些简单的设置来解决它,添加以下内容:
/***************************************************/
/* Hack to make input[type='text'] fit width of
parent element */
input {font-size: 1em;} /* omitting [type=... deliberately */
textarea {font-size: 1em;}
/***************************************************/
/* Media scaling */
* {margin: 0; border: 0; padding: 0;}
html {min-width: 300px;}
body {font-size: 80%;} /* Default */
@media (min-width: 400px) {body {font-size: 80%;}}
@media (min-width: 600px) {body {font-size: 90%;}}
@media (min-width: 900px) {body {font-size: 95%;}}
@media (min-width: 1300px) {body {font-size: 100%;}}
@media (min-width: 1800px) {body {font-size: 110%;}}
@media (min-width: 2400px) {body {font-size: 120%;}}
显然使用在缩放之前指定字体大小的 CSS 重置可以解决问题。我认为这实际上也很有意义。容易忘记的是元素并不总是从正文中正确继承,在这种情况下是文本类型输入(还有文本区域)。
确保您正在width: 100%;
为 TD 或 DIV 中的文本框设置样式,并且您也在设置box-sizing: border-box;
. 应该让它工作。
希望这可以帮助。