添加</select>时,<select>(下拉列表)无法正确呈现

时间:2009-12-23 18:06:08

标签: select drop-down-menu doctype

我发现这很有趣,真的很烦人。在带有IE7 / 8的Windows XP上,输入框和下拉框以thib边框和圆角渲染,看起来很好。 我正在重新设计我们的内部网(非常混乱的代码),我开始把&lt;!DOCTYPEs和所有“现代”的东西,如css等等,当我注意到下拉框呈现的“扁平方形”样式与文本框...我提出了两个简单的html页面,向大家展示我的意思:test page 谢谢你的帮助...

PS:Chrome和Firefox的行为相同......

5 个答案:

答案 0 :(得分:3)

遗憾的是,这是预期的行为。 SELECT的高度和宽度需要根据边框的大小和边框的大小进行调整。因此,如果你想要一个1xx边框的100x20选择,你需要将高度/宽度设置为100x20,而不是将高度/宽度设置为98x18的其他大部分。

答案 1 :(得分:0)

尝试更改您正在使用的!DOCTYPE的类型。有关文档类型的列表,请查看http://www.w3schools.com/tags/tag_DOCTYPE.asp

答案 2 :(得分:0)

我无法通过简单的测试用例重现您的问题,但是对于您提供的示例,我可以看到select元素的宽度计算方式不同。在我看来,这似乎是Quirks vs Standards mode issue。在标准模式下,浏览器会更严格地实施规范,因此当您在它们之间切换时,您会发现这样的问题。但是,对于一致的跨浏览器结果,您通常最好使用标准模式(通过指定doctype)。

答案 3 :(得分:0)

我之前也见过这种行为,令人难以置信的烦人!我唯一能找到的方法是让选择框比普通文本框宽几个像素。不过,这不是最佳解决方案,所以我希望其他人有更好的方法。祝你好运!

答案 4 :(得分:-1)

您的HTML不正确:

<SELECT style="width:200px"  id=select1 name=select1>

当您不使用Doctype时,浏览器会输入所谓的“Quirks mode”,它会尝试充分利用给定的代码(通常模拟旧浏览器)。当您添加Doctype时,它会进入“标准模式”,期望符合标准的HTML。

第一个问题是您使用的XHTML doctype要求所有标记都是小写的(<select>),第二个问题是您没有在引号中包含属性(id=select1而不是{ {1}})这可能会触发错误。

有些浏览器甚至有“几乎标准模式”(如FF)

(顺便说一下,你已经在id="select1"使用了css:)