Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么HTML/XHTML中允许输入大小属性是严格的?_Html_Xhtml_Standards_Html Input - Fatal编程技术网

为什么HTML/XHTML中允许输入大小属性是严格的?

为什么HTML/XHTML中允许输入大小属性是严格的?,html,xhtml,standards,html-input,Html,Xhtml,Standards,Html Input,这通过了验证: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head><title>Test</title></head> <body> <

这通过了验证:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>Test</title></head>
<body>
<form action="get">
<p><input type="text" size="10" /></p>
</form>
</body>
</html>

试验

HTML 4.01 Strict或XHTML 1.1下的等效文件也是如此

size
属性对我来说似乎纯粹是一种表象。那么,为什么W3C将其保留在(X)HTML的严格版本中呢?

现在(官方)不再有“严格”的HTML版本。但是有两种不同的解析器:HTML解析器(松散)和XML解析器(严格)。要使浏览器使用XML解析器,请使用以下PHP代码:

<?php
if (stristr($_SERVER['HTTP_ACCEPT'],'application/xhtml+xml'))
{
 $mime = 'application/xhtml+xml; charset=UTF-8';
}
else {$mime = 'text/html; charset=UTF-8';}//Unless IE6 or lower
//IE6 or lower should only use 'text/html'.
header('Content-Type: '.$mime);
?>

我相信这一部分可以追溯到20世纪90年代末或21世纪初,或者如果不太可能,
size
属性被认为是文本的大小,而不是
输入
元素应该呈现的像素数。如果没有忽略它,也可能是为了向后兼容(如果没有
size
属性,某些浏览器可能无法工作)

如果您希望最大限度地提高编写客户端代码的能力,我强烈建议您使用XHTML5。这是使用XML解析器呈现的更详细的HTML5。我个人资料中的网站是一个活生生的环境,如果你仍在深入学习过程中,它可以展示你想要知道的很多(如果不是全部的话),从而跳过更环保的错误



是的,
size
属性更改
input
元素的宽度,本质上是表示性的。如果您将
size
设置为
3
并键入字母l(如letter),您将清楚地看到比
size
设置为更多的字母。只有单空格字体在所有字符(示例中为l和w)之间具有共享的设置宽度,这可以通过CSS实现。事实上,字体有很多
行高
问题,尽管在这里不太相关。可能在我看来,
size
属性存在于偶数中的原因是它可能被过度关注了。我不确定W3C标准的作者是否通过W3C获得报酬(大多数开源软件开发人员在示例中都没有得到报酬),或者可能是因为这是一个可能得到很好支持(并且可能使用得相当好)的属性,所以人们决定保留它。一天结束时,我建议不要使用它,因为它在客观上毫无用处。

只是意识到我没有回答这个问题。首先,解析器浏览器使用什么来处理任何事情?我在这里谈论的是有效性/验证。其次,好的,XHTML 1.0 Strict可能不再是官方的,但我认为这不会改变它存在的事实,也不会改变软件(包括浏览器和验证器)如何处理声明为XHTML 1.0 Strict的数据(如果它选择支持该类型)。@Stewart I添加了最后一段。如果我遗漏了什么,请告诉我。你说“也许因为它可能是一个很受支持的属性(并且可能使用得相当好)”,但(例如,
)肯定也是如此。此外,根据
size
是如何定义的,我想浏览器应该做的是以所用字体中最宽字符宽度的倍数来呈现。但是看起来并不是这样的。你怎么说它可以用CSS实现,但只能用单空间字体?是否有一个CSS单位在使用单空格字体时定义为与
大小
单位相同,但在使用比例字体时定义不相同?@Stewart单空格字体对每个字符使用完全相同的宽度;其他内容(AFAIK)使用特定于所用字符的宽度。浏览器不会试图进行调整,因为最初甚至没有输入任何内容,即使输入了,开发人员也要关注更高的优先级。这类代码很可能是在微软用InternetExplorer垄断互联网的时候实现的,此外,在浏览器方面取得实际进展的人都专注于改进CSS支持。