Почему <textarea> и <textfield> не берут размер шрифта и размер шрифта из тела?

Почему Textarea и textfield не принимают font-family и font-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, которые не будут брать стиль шрифта от body {....}?

Ответ 1

По умолчанию браузеры отображают большинство элементов формы (текстовые поля, текстовые поля, кнопки и т.д.) с помощью элементов управления ОС или элементов управления браузером. Поэтому большинство свойств шрифта взяты из темы, которую использует ОС в настоящее время.

Вам нужно будет настроить таргетинг на элементы формы, если вы хотите изменить их стили шрифта/текста - должно быть достаточно легко, выбирая их, хотя, как вы только что сделали.

Насколько я знаю, затронуты только элементы формы. В верхней части головы: input, button, textarea, select.

Ответ 2

Некоторые элементы управления по умолчанию не наследуют настройки шрифта. Вы можете переопределить это, разместив это в своем CSS:

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

Ответ 3

Все браузеры имеют встроенные таблицы стилей по умолчанию. Поэтому, когда вы создаете страницу без каких-либо определенных стилей, теги <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

Ответ 4

Я думаю, что он имеет в виду, что некоторые элементы более специфичны, чем другие в DOM, или имеют меньшую область. Поскольку текстовое поле существует внутри тела, любой стиль, определенный для textarea, перезаписывает стили body {}. Таким образом, стиль текстового поля FF по умолчанию перезаписывает ваш стиль тела, даже если ваш определился позже (обычно что-то более недавнее будет иметь приоритет, но не в более широком контексте/менее конкретном).