<input name="txtId" type="text" size="20" />
要么
<input name="txtId" type="text" style="width: 150px;" />
哪个是最佳的跨浏览器代码?
当然,这取决于要求,但是我很好奇知道人们是如何决定的以及基于什么基础。
<input name="txtId" type="text" size="20" />
要么
<input name="txtId" type="text" style="width: 150px;" />
哪个是最佳的跨浏览器代码?
当然,这取决于要求,但是我很好奇知道人们是如何决定的以及基于什么基础。
Answers:
您可以同时使用。css样式将覆盖size
支持CSS的浏览器中的属性,并使该字段具有正确的宽度,而对于不支持该样式的字段,它将退回到指定的字符数。
编辑:我应该提到size
属性不是精确的大小调整方法:根据HTML规范,它应该引用输入将能够立即显示的当前字体的字符数。
但是,除非指定的字体是固定宽度/等宽字体,否则不能保证指定数量的字符实际上是可见的;在大多数字体中,不同的字符将具有不同的宽度。这个问题对此问题有一些很好的答案。
下面的代码段演示了这两种方法。
@font-face {
font-family: 'Diplomata';
font-style: normal;
font-weight: 400;
src: local('Diplomata'), local('Diplomata-Regular'), url(https://fonts.gstatic.com/s/diplomata/v8/8UgOK_RUxkBbV-q561I6kFtXRa8TVwTICgirnJhmVJw.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215;
}
@font-face {
font-family: 'Open Sans Condensed';
font-style: normal;
font-weight: 300;
src: local('Open Sans Condensed Light'), local('OpenSansCondensed-Light'), url(https://fonts.gstatic.com/s/opensanscondensed/v11/gk5FxslNkTTHtojXrkp-xBEur64QvLD-0IbiAdTUNXE.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215;
}
p {
margin: 0 0 10px 0;
}
input {
font-size: 20px;
}
.narrow-font {
font-family: 'Open Sans Condensed', sans-serif;
}
.wide-font {
font-family: 'Diplomata', cursive;
}
.set-width {
width: 220px;
}
<p>
<input type="text" size="10" class="narrow-font" value="0123456789" />
</p>
<p>
<input type="text" size="10" class="wide-font" value="0123456789" />
</p>
<p>
<input type="text" size="10" class="narrow-font set-width" value="0123456789" />
</p>
<p>
<input type="text" size="10" class="wide-font set-width" value="0123456789" />
</p>
我建议,最好的方法可能是以em为单位设置样式的宽度:)因此,对于20个字符的输入大小,只需设置style='width:20em'
:)
我想说这违背了“传统智慧”,但我通常更喜欢使用尺寸。这样做的原因恰恰是许多人拒绝的原因:字段的宽度会因浏览器而异,具体取决于字体大小。具体来说,无论浏览器设置如何,它始终足够大以显示指定数量的字符。
例如,如果我有一个日期字段,我通常希望该字段足够宽以显示8或10个字符(两位数字的月份和日期以及两位或四位数的年份,并带有分隔符)。设置size属性从本质上保证了整个日期都是可见的,并且浪费的空间最少。同样,对于大多数数字-我知道期望值的范围,因此我将size属性设置为适当的数字位数,如果适用,还要加上小数点。
据我所知,没有CSS属性可以做到这一点。例如,在em中设置宽度是基于高度而不是宽度,因此如果要显示已知数量的字符,则不是很精确。
当然,这种逻辑并不总是适用-例如,名称输入字段可以包含任意数量的字符。在这些情况下,我将退回CSS宽度属性,通常以px为单位。但是,我要说的是,我制作的大多数字段都有某种已知的内容,通过指定size属性,我可以确保大多数的内容,在大多数情况下,是不削波显示。
ex
为此使用单位,尽管使用大小仍然可以简化大多数情况,因为CSS中没有很多ID /类来提供宽度。
ex
是字符的高度(特别是“ X”),而不是宽度-就像em
。由于字符的高度和宽度(x或其他值)之间没有固定的关系,因此没有理由相信使用字符的高度来设置字段的宽度会使该字段成为适当的宽度以显示任何字符给定字符数。它可以更宽或更窄,具体取决于字体。现在,该ch
单元看起来很有希望,但低于9的IE不支持该单元,当我编写此单元时,这将是一个问题。
ch
不幸的是,它本来可以做得更好,有些零很稀薄,可能无法测量完整的字符空间...
size
属性努力做到这一点。您可能是对的,这ex
是一个合理的选择,但事实是它是高度属性,而不是宽度属性。size
是width属性,而不是css。
您可以使用样式和宽度来调整文本框的大小。这是它的代码。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
</head>
<body>
<div align="center">
<form method="post">
<div class="w3-row w3-section">
<div class="w3-rest" align = "center">
<input name="lastName" type="text" id="myInput" style="width: 50%">
</div>
</div>
</form>
</div>
</body>
</html>
使用对齐将文本框居中。
无论是size
在HTML属性和width
在CSS属性将设置的宽度<input>
。如果要将宽度设置为更接近每个字符的宽度,请使用如下**ch**
单位:
input {
width: 10ch;
}
HTML控制元素的语义含义。CSS控制页面的布局/样式。在控制布局时使用CSS。
简而言之,永远不要使用size =“”