为什么<textarea>和<textfield>没有从正文中取得font-family和font-size?

为什么Textareatextfield不能从正文中获取font-familyfont-size

在这里看到生动的例子http://jsbin.com/ucano4

  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>texearea font</title> <style type="text/css"> body { font-family: Verdana, Geneva, sans-serif; font-size:16px } </style> </head> <body> <form action="" method="get"> <textarea name="" cols="20" rows="4"></textarea> <input name="" type="text" /> </form> <p>some text here</p> </body> </html> 

如果这是一个常见的行为,那么我应该写在这样的CSS。 我需要同样的风格

 body,textarea,input { font-family: Verdana, Geneva, sans-serif; font-size:16px } 

XHTML中有多less其他元素不会从body {....}获取字体样式?

默认情况下,浏览器使用操作系统控件或浏览器控件渲染大多数表单元素(textareas,文本框,button等)。 所以大部分字体属性都是从操作系统当前使用的主题中获取的。

如果要更改字体/文本样式,则必须自己定位表单元素 – 尽可能select它们应该很容易,就像刚刚完成的那样。

据我所知,只有表单元素受到影响。 closures我的头顶部: inputbuttontextareaselect

某些控件不是默认inheritance字体设置。 你可以通过将其放置在CSS中来覆盖它:

 textarea { font-family: inherit; font-size: inherit; } 

所有浏览器都有内置的默认样式表。 这就是为什么当你制作一个没有定义任何样式的页面时, <h1>标签是大而粗的, <strong>使得文本变粗。 类似地, <input><textarea>元素的字体样式在默认样式中定义。

要在Firefox中看到这个样式表,把它放到你的地址栏中: resource://gre/res/forms.css

无论如何,你必须重写这些样式,就像你在最后一个例子中所做的其他样式一样。

如果您想知道还有哪些样式是定义的,请查看资源中的CSS文件。 你可以通过上面的url访问它们,或者通过在你的res文件夹中查看firefox目录(例如: c:\program files\mozilla firefox\res )。 这些可能会影响正常页面的样式:

  • html.css
  • forms.css
  • quirk.css
  • ua.css

我认为他的意思是说一些元素比DOM中的其他元素更具体,或者有一个更小的范围。 由于textarea存在于body中,任何为textarea定义的样式都将覆盖body {}样式。 所以,FF的默认textarea风格会覆盖你的身体风格,即使你稍后定义了它(通常是更新的东西将会优先,但是如果它在更宽的范围/更不特定的话)。