#css #firefox #css-position #firefox4 #legend
#css #firefox #css-position #firefox4 #легенда
Вопрос:
Почему Firefox 4 абсолютно позиционирует легенды наборов полей иначе, чем другие браузеры?
Тестовая страница:
<!DOCTYPE html>
<html dir="ltr" lang="en">
<head>
<meta charset="utf-8"/>
<title>Test</title>
<style type="text/css">
*
{
margin: 0;
padding: 0;
}
body
{
font-family: Tahoma, Arial, sans-serif;
font-size: 62.5%;
}
#wrapper
{
margin: auto;
padding: 1em;
width: 720px;
}
form
{
width: 670px;
padding: 25px;
background-color: #ffffff; /* White */
color: #000000; /* Black */
border: 1px solid #cccccc; /* Gray */
font-size: 12px;
}
fieldset
{
position: relative;
border: 1px solid #cccccc; /* Gray */
padding: 25px 10px 5px 15px;
margin-bottom: 20px;
}
fieldset legend
{
position: absolute;
top: 5px;
left: -10px;
/* Firefox */
/*top: -20px;
left: -25px;*/
font-weight: 900;
background-color: #ffffff; /* White */
}
/* Input Types */
label
{
margin-right: 10px;
line-height: 20px;
}
</style>
</head>
<body>
<div id="wrapper">
<form method="POST" action="test" id="testForm">
<fieldset>
<legend>Test</legend>
<label for="test">Test:</label><input type="text" id="test" name="test" value=""/>
</fieldset>
<input type="submit" value="Test"/>
</form>
</div>
</body>
</html>
Обратите внимание, что в Opera 11.10 сборки 2092, Chrome 11.0.696.65, Safari 5.0.4 (7533.20.27) и Windows Internet Explorer 9 они отображают условные обозначения слева, перекрывая границу набора полей.
В Firefox 4.0.1 мне приходится изменять свойства top
и left
, чтобы получить аналогичный эффект. Например, в style
теге тестовой страницы раскомментируйте этот CSS:
/* Firefox */
/*top: -20px;
left: -25px;*/
Комментарии:
1. Я уверен, вы заметили, что в Firefox 4 много трудностей и странностей. Я вернулся к версии 3.6.17; Я подожду несколько недель, пока не установится версия 4.
2. @Pete FF4 был выпущен (не бета-версия) 22 марта. В тесте Acid3 он набрал 97/100 баллов (точно такой же результат, как у Chrome 11). Что заставляет вас думать, что что-то изменится через «несколько недель»?
Ответ №1:
legend
элементы причудливые и странные. При этом, если все другие браузеры делают то же самое, то Firefox должен делать то же самое.
Здесь уже есть отчет об ошибке, подробно описывающий проблему: https://bugzilla.mozilla.org/show_bug.cgi?id=450418
Обходной путь — добавить оболочку div
внутри fieldset
и переместить padding
туда.
Ваш неизмененный код: http://jsbin.com/ivedo4
Исправленный код: http://jsbin.com/ivedo4/2
Я тестировал это с теми же браузерами (не идентичными версиями, но близкими), которые вы указали в своем вопросе, и рендеринг был согласованным.
Мой код выглядит не совсем правильно в IE8, но ваш сломан точно так же.