Заметил, что почти во всех браузерах формы выглядят по-разному. Вообще я формы, если честно, не люблю. Поэтому с ними и решил разобраться.
Проблемой является то, что в простой текстовой форме, в разных браузерах текст ведет себя тоже по-разному.
Создаем страницу с одной формой
<body>
<input type=”text” class=”input” />
</body>
И стили к ней
.input {
width: 130px; height: 25px;
margin: 0;
padding: 0;
font-size: 10pt;
font-family: Verdana, Geneva, sans-serif;
outline: none;
border: 1px solid #606060;
}
Посмотрим, как это выглядит в браузерах (кликните по изображению чтобы посмотреть в увеличенном масштабе).
Не видно чтобы хоть один из браузеров отобразил то, что нужно, по идеи.
Нужно чтобы текст был строго по вертикали и по центру, а отступ от левого края всегда должен быть одинаковым.
Так как лучше всего, по-моему, отображает форму Google Chrome, я именно его и приведу в пример (высота указана без учета границ).
(то, как отображает форму Google Chrome)
Текст в форме не расположен по вертикали по центру.
(это то, что нужно)
У каждого браузера можно найти что-нибудь не правильное. Особенно выделился Internet Explorer. По вертикали он выше всех и исправить это у меня никак не получилось или как-нибудь можно?
Кстати, я заметил, что если текстовой форме не указывать высоту, то во всех браузерах вертикальное выравнивание одинаковое и только отстут от левого края разный.
Пока решения я не нашел, я пользуюсь другим способом.
Принцип такой: нужно каждую форму обернуть тегом
<span> и указать предполагаемые размеры для формы ему, а саму форму внутри тега растягивать на всю ширину и не менять высоту.
Да, этот способ не помогает убрать отступ от левого края и настраивать форму немного сложнее, потому что если захочется поменять шрифт или его размер, то скорее всего придется немного пересчитать отступы от верхнего края.
Создаем форму и обернем ее тегом
<span>
<body>
<span
class="f-row">
<input type="text" class="input" />
</span>
</body>
Создаем стили для тега и формы
.f-row {
width: 130px; height: 24px;
padding: 1px 0 0;
border: 1px solid #606060;
display: block;
}
.input {
width: 100%;
background: transparent;
margin: 0;
padding: 0;
font-size: 10pt;
font-family: Verdana, Geneva, sans-serif;
border: 0;
outline: none;
}
Возможно, это не самый лучший способ, он такой неповоротливый. Тем не менее, я его использую в шаблонах, когда нужно. Думаю, что кто может, тот сам настроит под себя, а остальным, надеюсь, и так понравится. (:
Кстати, если форме сделать закругленные уголки с помощь css, то в Opera она не отобразится нормально, а точнее будет прозрачной. Поэтому-то и удобнее ее оборачивать в
<span>.