Jump to content
  • 0

Неправильная ширина элемента input


Стас Агарков
 Share

Question

Я попытался сделать элемент <input type="text"> в док-тайпе HTML 4.01 Strict.

Я указал ему ширину: <input type='text' style='width: 200px;'>

Но в результате получил input с длиной 204 пиксела во всех браузерах (Opera 9.64, IE8, Chrome 3.0, FF 3.6).

Когда я убрал док-тайп, то ширина стала 200 пикселов.

Я попробовал применить XHTML Strict и XHTML Transitional, то всё равно получал длину элемента в 204 пиксела.

Помогите, пожалуйста, разъяснить ситуацию.

Link to comment
Share on other sites

Recommended Posts

  • 0
Я попытался сделать элемент <input type="text"> в док-тайпе HTML 4.01 Strict.

Я указал ему ширину: <input type='text' style='width: 200px;'>

Но в результате получил input с длиной 204 пиксела во всех браузерах (Opera 9.64, IE8, Chrome 3.0, FF 3.6).

Когда я убрал док-тайп, то ширина стала 200 пикселов.

Я попробовал применить XHTML Strict и XHTML Transitional, то всё равно получал длину элемента в 204 пиксела.

Помогите, пожалуйста, разъяснить ситуацию.

Доктайп ставь обязательно и ширину тогда 196пк

Link to comment
Share on other sites

  • 0
Не хочется так хардкодить, хочется разобраться почему так, может быть есть более красивые решения.

Устанавливаем FireBug, запускаем, смотрим на элемент формы.

Так как ширина устанавливается контенту (надеюсь, вы изучали боксовую модель HTML), а не всему элементу, ширина инпута равняется 200px + 2*2px паддинги + 1*2px бордюры

Итого 206px

Все верно.

Link to comment
Share on other sites

  • 0
Устанавливаем FireBug, запускаем, смотрим на элемент формы.

Так как ширина устанавливается контенту (надеюсь, вы изучали боксовую модель HTML), а не всему элементу, ширина инпута равняется 200px + 2*2px паддинги + 1*2px бордюры

Итого 206px

Все верно.

кстати так я и предполагал, но хотелось убедится :)

Link to comment
Share on other sites

  • 0

Да, спасибо, вы правы. :)

Но мне понятно, почему на элемент select не действуют эти правила? Ему пишу ширину 200 пикселов и он помещается в 200 пикселов своими внешними границами.

Link to comment
Share on other sites

  • 0
Да, спасибо, вы правы. :)

Но мне понятно, почему на элемент select не действуют эти правила? Ему пишу ширину 200 пикселов и он помещается в 200 пикселов своими внешними границами.

Потому что неизвестно, как система нарисует этот самый селектбокс и к чему именно применять ширину.

Link to comment
Share on other sites

  • 0

вот посмотри, какую штуку заделал кроссбраузерную, может пригодится :)

http://psywalker.ru/Forum/Forms/

или вот например: http://psywalker.ru/Forum/Forms/index2.html

Edited by psywalker
Link to comment
Share on other sites

  • 0

Посмотрел, спасибо.

Но у вас 100% размеры. Я попробовал в вашем примере написать длину в пикселах и проявилась та же самая ошибка. Так что у вас условия задачи изменены :)

Link to comment
Share on other sites

  • 0
Посмотрел, спасибо.

Но у вас 100% размеры. Я попробовал в вашем примере написать длину в пикселах и проявилась та же самая ошибка. Так что у вас условия задачи изменены :)

ну эт я так, баловался на досуге, думал, мало ли пригодится, вот ещё кстати тут фикс: http://psywalker.ru/Forum/Forms/index4.html

Link to comment
Share on other sites

  • 0

Это свойство из CSS3, которое заставляет браузер рассчитывать размеры блоков как в старом добром IE 5, то есть не по контенту, а с учетом паддингов и бордеров. Работает сейчас уже везде (с вендорными префиксами), кроме IE до 8-й версии. Для них можно указать размер отдельно, зная, что эти браузеры работают только на платформе виндовс и зная дефолтные параметры инпутов. Кажется, для input text нужно указывать ширину, меньше на 6 пикселей или «ужимать» обертку на 6 пикселей, если нужно указывать в процентах.

Link to comment
Share on other sites

  • 0

Спасибо за объяснение.

Это ужасно. Я лучше напишу длину 194 пикселя и не буду городить кучу непонятных свойств, которые эмулируют режим десятилетнего браузера.

Link to comment
Share on other sites

  • 0
ухты, тоесть прям любым боксам, вообще любым Див, и чему угодно?

Да, применяется к любым блочным элементам.

Ну и широкое применение всё-таки ограничено тем, что при строгом режиме браузера это не работает в IE 6–7.

Спасибо за объяснение.

Это ужасно. Я лучше напишу длину 194 пикселя и не буду городить кучу непонятных свойств, которые эмулируют режим десятилетнего браузера.

Это прекрасно :-) потому что режим десятилетнего браузера в некоторых случаях намного удобнее.

А вы можете использовать 194 пикселя, если у вас фиксированная ширина и вас не интересуют пользователи других платформ кроме виндовс, потому что какие у них умолчания для элементов форм лично я не имею представления, могут и отличаться.

Link to comment
Share on other sites

  • 0

Вот где-то как-то так:

<!DOCTYPE HTML>

<title>Input width</title>
<style>
body {
background: #fff;
}
input {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
width: 100%;
}
.width-wrapper {
width: 50%;
}
</style>

<!--[if lt IE 8]>
<style>
.input-wrapper {
padding-right: 6px;
}
</style>
<![endif]-->

<div class="width-wrapper">
<div class="input-wrapper">
<input>
</div>
</div>

<div style="width: 50%; height: 1.2em; background: #f99;"></div>

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy