2014-01-07 6 views
9

Я хочу поле input, которое будет дополнено изнутри. Я переношу на HTML5. У меня это работает в HTML 4.01 Transitional, но в HTML5 поле input начало выходить из рамки таблицы. Можете ли вы помочь мне исправить это для HTML?HTML5 - ввод текста с заполнением слишком широк

часть кода HTML

<td class="content_listing_r" style="width: 80%;"> 
    <input type="text" name="model_search" style="width: 100%; padding: 5px" autocomplete="off" /> 
</td> 

Это выглядит следующим образом:

enter image description here

Но следует искать так:

enter image description here

Вот скрипка для вас, чтобы проверить и поиграть с ней: http://jsfiddle.net/kelu/DbXy5/5/

+1

padding добавляет дополнительную ширину –

ответ

13

Добавить CSS box-sizing правило вашего поля ввода:

.content_listing_r input { 
    box-sizing:border-box; 
    -moz-box-sizing:border-box; 
} 

jsFiddle example

+0

Я думаю, что все, я собираюсь проверить это на всех браузерах, спасибо! –

+0

Извините, он не работает на Firefox 26.0 для Linux :( –

+0

Обновлено. Необходимо добавить префикс -moz для FF. – j08691

0

Добавить дополнение к классу «content_listing_r» вместо области ввода, это добавит прокладки вокруг ячейки.

<td class="content_listing_r" style="width: 80%; padding: 5px;"> 
    <input type="text" name="model_search" style="width: 100%" autocomplete="off" /> 
</td> 

С другой стороны, сделать ширину меньше, и добавить отступы в процентах

<td class="content_listing_r" style="width: 80%;"> 
    <input type="text" name="model_search" style="width: 96%; padding: 2%" autocomplete="off" /> 
</td> 
+0

, но увеличит свою ширину –

+0

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

0

Вы можно использовать удобный calc правило для ширины CSS:

<input type="text" name="model_search" style="width: -webkit-calc(100% - 10px); width: calc(100% - 10px); padding: 5px" autocomplete="off" />

... хотя он может иметь проблемы с совместимостью в менее популярных браузерах

+0

Эй, ваше решение работает, поэтому я дам ему плюс, но я думаю, что 'box-sizing: border-box' - намного лучший вариант. Также в вашем решении есть проблема, что пространство справа немного меньше, чем должно быть (но приемлемо). –

+0

Я согласен - 'border-box' похоже на путь. –

3

Использование box-sizing: border-box

<input type="text" name="model_search" style="width: 100%; padding: 5px; box-sizing:border-box" autocomplete="off" /> 

с приставками поставщика

box-sizing:border-box; 
webkit-box-sizing: border-box; 
-moz-box-sizing: border-box; 

box-sizing : border-box

Дополнение: (Если можно, (Royi))

-webkit-box-sizing: border-box; /* Android ≤ 2.3, iOS ≤ 4 */ 
    -moz-box-sizing: border-box; /* Firefox 1+ */ 
      box-sizing: border-box; /* Chrome, IE 8+, Opera, Safari 5.1 */ 
+1

Эй, это тот же ответ, что и j08691, я думаю, и все та же проблема - для Firefox не работает. –

+1

@KeluThatsall Посмотрите версию префикса поставщика для исправления FF – Chin

+0

Спасибо, похоже, сейчас он работает :) –

0

Если поле ввода находится внутри вещи, то вы можете использовать ширину!

Когда вы добавляете padding, он добавляет немного ширины и высоты бит в зависимости от параметров. Вы используете ширину 100% и добавляете некоторые прокладки. В чем проблема!

Попробуйте это:

width: 96%; 

Lessen ширине немного входа, это даст вам элемент, который вы хотите!:)

http://jsfiddle.net/afzaal_ahmad_zeeshan/DbXy5/8/

+2

Он будет выглядеть по-разному для каждой ширины контейнера - так что это не-нет. Извините –

1

Try:

.content_listing_r input { 
    box-sizing:border-box; 
    -moz-box-sizing: border-box; 
} 
0

Обивка добавляет дополнительную ширину, если вы измените

padding:5px; 

в

padding:5px 0; 

это будет исправить вашу проблему удаление дополнительная ширина при сохранении верхнего и нижнего отступов.

+0

Вы правы, но ваше решение заставит входной текст начинаться только с границы, и я хочу немного пространства между текстом и границей слева. –

Смежные вопросы