Вопрос

У меня есть следующий HTML-код

<!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 runat="server">
    <style>
    .box {
        border: solid black 1px;
        padding: 0px;
        margin: 0px;
    }
    </style>
</head>
<body>
    <form id="form1" runat="server">
        <input class="box" style="width:300px;" /><br /><!--CRLF for clarity only-->
        <input class="box" style="width:150px;" /><!--CRLF for clarity only-->
        <input class="box" style="width:150px;" /><!--CRLF for clarity only-->
    </form>
</body>
</html>

При рендеринге 2-й ряд текстовых полей выглядит кумулятивно длиннее 1-го в первом ряду. Это несмотря на явную настройку ширины с помощью атрибута стиля

Почему это происходит и можно ли этого избежать?

Примечание. Это похоже на одинаковую работу как в FF3, так и в IE7.

Это было полезно?

Решение

jhunter верен, и я бы добавил, что вам нужен Firebug для FireFox (это бесплатно). Вы могли бы понять это сами быстро с установленным. Изучите интересующий вас элемент и посмотрите на " макет " Вкладка.

Другие советы

В текстовом поле есть рамка, которая не включена в ширину.

Действительно, ширина ваших блоков равна +2 в виде границы как слева, так и справа (что составляет 1 пиксель), что означает, что на каждый блок приходится 2 дополнительных пикселя. Таким образом, в общей сложности вы +6.

Я бы посоветовал прочитать CSS Mastery, он объясняет множество различий между различными моделями браузеров и их влияние на разметку и ширину в разных браузерах.

Мастерство CSS

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top